Add landing page source code

pull/699/head
Alinson S. Xavier 5 years ago
parent 3a4071505e
commit 9f421bfd6d

@ -0,0 +1,2 @@
out/
.sass-cache

@ -0,0 +1,27 @@
haml := src/*.haml
sass := src/*.sass
html := $(patsubst src/%, out/%, $(patsubst %.haml,%.html,$(wildcard $(haml))))
css := $(patsubst src/%, out/%, $(patsubst %.sass,%.css,$(wildcard $(sass))))
src := $(wildcard src/**)
compile: $(html) $(css)
@rsync -rupE assets/ out/
out/%.css: src/%.sass $(src)
@echo ' sass $<'
@mkdir -p `dirname $@`
@sass $< $@
out/%.html: src/%.haml $(src)
@echo ' haml $<'
@mkdir -p `dirname $@`
@haml -E UTF-8 $< $@
push:
rsync -avP out/ axavier.org:/www/loophabits.org/
clean:
@rm -rfv out
@rm -rfv tmp

@ -0,0 +1,27 @@
Loop Habit Tracker Landing Page
===============================
This folder contains the source code that generates the project landing page, currently hosted at https://loophabits.org/
Pull requests with ideas for improving it are very welcome.
Build instructions
------------------
1. Install `haml`:
```bash
sudo apt install ruby-haml
```
2. Install `pandoc-ruby`:
```bash
gem install pandoc-ruby
```
3. Run `Makefile`
```bash
make
```
4. View the results (using, for example, [npm serve](https://www.npmjs.com/package/serve))
```bash
npm serve out/
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

@ -0,0 +1,36 @@
!!! 5
%html
%head
%meta(charset="UTF-8")
%link(href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css")
%meta(name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no")
%title FAQ | Loop Habit Tracker
%link(rel="stylesheet" type="text/css" href="lib/css/bootstrap.min.css")
%link(rel="stylesheet" type="text/css" href="index.css")
%body
.navbar.navbar-expand-md.navbar-light.bg-light
%a.navbar-brand(href="/")
%b Loop
Habit Tracker
%button.navbar-toggler(type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation")
%span.navbar-toggler-icon
#navbar.collapse.navbar-collapse
%ul.navbar-nav.mr-auto.mt-2.mt-lg-0
%li.nav-item
%a.nav-link(href="faq.html") FAQ
%li.nav-item
%a.nav-link(href="privacy.html") Privacy
%li.nav-item
%a.nav-link(href="https://source.loophabits.org") Source Code
%li.nav-item
%a.nav-link(href="https://translate.loophabits.org") Translate
%body
.content
:markdown
#{File.open("src/faq.md").read}
.section.footer
Copyright © 2016&ndash;2020, Alinson Santos Xavier. All Rights Reserved.

@ -0,0 +1,195 @@
## Frequently Asked Questions
### Creating and tracking habits
#### How can I track bad habits I want to break?
Loop can currently only supports tracking positive habits. Instead of tracking bad habits, an alternative is to rephrase your habit in a positive way. For example, instead of having the bad habit "Did you smoke today?" you could have the good habit "Did you have a smoke-free day today?". Another example, instead of "Did you eat junk food today?" you could have "Did you eat healthy today?".
#### How can I specify that a habit should be performed on certain days of the week?
You don't need to specify this. The app will figure it out by itself. You just
need to specify how many times would you like to repeat the habit in a certain
interval of time. For example, if you want to repeat a certain habit every
Monday and Friday, simply specify that you want to repeat the habit 2 times per
week, and then start practicing your habit. If, during your first week, you
indeed perform your habit on Monday and Friday, the app will automatically add
a checkmark on the following Saturday and Sunday. As long as you keep your
routine, the checkmarks should appear automatically on the correct days.
#### When I am creating a new habit, what am I supposed to write on the "question" field?
The question field is a place where you can specify more clearly the
requirements for the habit. For example, while the title of your habit might
say "Meditate", the question might ask "Did you meditate for at least 10
minutes this morning?". This question appears on the reminders.
#### How can I put checkmarks in past days?
Open the statistics page for a certain habit, scroll down to the "Calendar"
section and press the button "Edit" located under the calendar. Then, tap on
the days to check or uncheck. You can also scroll sideways to change days
further back in time.
#### How can I see the statistics page for a certain habit?
Just tap on the name of the habit.
#### How can I reorder the habits?
First, press-and-hold the name of a habit for a second. Then, when it becomes
selected, just drag it to the desired place, without lifting your finger.
#### How can I disable the vibration every time I put a checkmark?
Loop follows your phone's settings to decide whether it should vibrate on touch
or not. To disable the vibration, open your phone's settings, tap "Sounds"
and disable "Vibrate on touch".
#### Why are some checkmarks gray?
The color gray indicates that the checkmark was automatically added by the
app, and not manually by the user. This happens with non-daily habits. For
example, if you have a habit that should be repeated only one time every week,
and you perform it on a certain Monday, the app will automatically add gray
checkmarks on Tuesday, Wednesday an so on.
#### How can I delete a habit?
On the main screen, press-and-hold the name of the habit for a second. When it
becomes selected, tap the overflow icon on the menu bar (it looks like three
vertical dots), then select delete.
#### How is the score calculated?
To compute the score of a habit, the app uses a statistical method known as
exponential smoothing. Basically, it computes a weighted average that takes
into consideration every repetition of the habit, from the very first day you
started your habit until today. Recent repetitions, however, are considered
more important than older ones, and have a larger impact on the score. This
method has many nice features, including:
1. Every repetition counts, even way back in the past. This is not true for
other simpler formulas, such as counting how many times have you performed
the habit in the last week/month/year and then dividing by the number of
days in that interval.
2. If you have a poor habit score, then a few repetitions can bring your score
up very quickly. As your score improves, however, the reward for each
repetition gets smaller and smaller, so you have to keep at it if you want
to see further increases.
3. If you have a high score for a very long time and you take a short break,
it's quite easy to restore your score back to what it was. If you start
taking frequent breaks, however, then your score will suffer.
#### How long will it take to reach the highest score?
If you perform a daily habit perfectly, the score reaches 80% after one month,
96% after two months and 99% after three months. For non-daily habits, it takes
longer to reach the same percentages. If your habit is repeated every other
day, for example, then it takes two months to reach 80%, and if you habit is
weekly, then it takes seven months.
### Importing and exporting data
#### If I uninstall the app, will I lose all my data?
Yes, uninstalling the app will delete all your data! All files inside the
folder `Android » data » org.isoron.uhabits` on the SD card will also be deleted.
This is the way Android was designed, and there is nothing Loop can do to
prevent it.
#### If my phone gets damaged or factory reset, will I lose all my data?
Loop supports Android's native backup service: if you have backups activated in
your phone settings (Settings » Backup & Restore » Back up my data), it should
periodically save a copy of your data in the cloud automatically. The data will
be restored in case you factory-reset your phone or activate a new device.
**Note however that uninstalling the app will delete all your data, in addition
to all the backups stored in the cloud**. Furthermore, this backup system can be unreliable at
times. Therefore, if you want to make sure that your data is safely backed up,
it is still recommended that you use a specialized backup utility, such as
Titanium Backup. Alternatively, you can export a full backup of your data
manually. For more details, see the answer for the next question.
#### How can I export a full backup of my data?
Select the option "Export full backup" on the settings screen. A file will be
generated, and you will be asked to choose an app to share it to. If you select
an email application, you will be able to send the file as an attachment to
yourself. If you select Google Drive, Dropbox or similar apps, you will be able
to upload it. A copy of the generated file is also automatically saved on the
SD card, inside the folder `Android » data » org.isoron.uhabits » files`. Be aware that
this folder will be deleted when the app is uninstalled. If you would like to
keep the backups on the SD card after the app is uninstalled, you should move
them to another folder.
#### How can I restore a full backup?
First, go to the settings screen and tap "Import data". A file browser should appear. Tap the menu icon (the one with three vertical lines) and select the app where your backup is stored, such as Google Drive.
If your backup file is located in your SD card, after tapping "Import data", tap the icon with three dots on the top right corner of the screen and select "Show internal storage". Then, tap the menu icon (the one with three vertical lines) and select your SD card.
#### How can I export my data as CSV?
Open the settings screen, scroll down to the section "Database" and select the
option "Export as CSV". The data will be exported as a ZIP archive containing
individual comma-separated files for each habit, which can be opened with any
modern spreadsheet software, such as Microsoft Excel or OpenOffice Calc.
### Troubleshooting
#### I have installed the iOS version of the app, but it refuses to import my backup file.
There is currently no iOS version of Loop Habit Tracker. You have probably installed an unauthorized copycat version of our app. Please contact us at <dev@loophabits.org> and let us know the application name, so that we can contact Apple to remove the copycat app from the App Store. Note that copycat versions of Loop are typically not open source and there is no guarantee that they will keep your data private.
#### When I add a checkmark, the app deletes my habit!
You have probably accidentally enabled the "Hide completed habits" option. To disable it, open the main screen, tap the filter icon (the one with three horizontal lines), then tap "Hide completed".
#### Why are the reminders not working?
There are many reasons why the reminders may not appear:
* Loop will only show you a reminder if the task has not been already completed
that day. For example, if your reminder is scheduled to show up at 8am, but
you already added a checkmark manually (on the main app) at 7am, then the
reminder will not appear. The same is true for non-daily habits. If you have
a weekly habit, and you complete it on a certain Monday, the reminder will
only appear on the following Monday.
* When you create a habit, you can also choose what days are the reminder
allowed to appear. If you create a weekly habit, but set the reminders to
appear only on the weekends, for example, then they will never appear Monday
to Friday, regardless of you having completed the habit during the weekend or
not.
* If you are sure that the reminders should appear, but they don't, please,
make sure that your phone has no task killers or RAM boosters installed.
These apps are known to disable Loop's reminders. If your phone has an
aggressive power saving mode, such as Samsung's Ultra Power Saving mode or
Sony's Stamina Mode, please make sure that Loop is whitelisted.
#### I can't find Loop's widgets on the list. How can I add them?
* Some phones don't display the name of the app the widgets belong to. In that
case, the widgets will be called simply "Checkmark", "Frequency", "Habit
Strength", "History" and "Streaks".
* If you still can't find the widgets, make sure that Loop is not installed on
the SD card. Moving apps to the SD card disables many features, including
widgets.
### Other questions
#### How can I donate to the project?
Loop currently does not accept any monetary donations. There are many other
ways you can contribute to the project, however, even if you are not a software
developer, such as providing feedback, finding bugs, sharing the app with your
friends, rating and writing a review on Google Play Store, or translating the
app into your language. Please, [see our webpage at GitHub][contributing] for
more details.
#### My question was not answered in this FAQ. What should I do?
Please, feel free to contact the developer at <dev@loophabits.org>.
[contributing]: https://github.com/iSoron/uhabits/

@ -0,0 +1,106 @@
!!! 5
%html
%head
%meta(charset="UTF-8")
%link(href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css")
%meta(name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no")
%title Loop Habit Tracker
%link(rel="stylesheet" type="text/css" href="lib/css/bootstrap.min.css")
%link(rel="stylesheet" type="text/css" href="index.css")
%body
.navbar.navbar-expand-md.navbar-light.bg-light
%a.navbar-brand(href="/")
%b Loop
Habit Tracker
%button.navbar-toggler(type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation")
%span.navbar-toggler-icon
#navbar.collapse.navbar-collapse
%ul.navbar-nav.mr-auto.mt-2.mt-lg-0
%li.nav-item
%a.nav-link(href="faq.html") FAQ
%li.nav-item
%a.nav-link(href="privacy.html") Privacy
%li.nav-item
%a.nav-link(href="https://source.loophabits.org") Source Code
%li.nav-item
%a.nav-link(href="https://translate.loophabits.org") Translate
.jumbotron.jumbotron-fluid
.site-wrapper
.container
.row.vertical-align
.col-md
%h1.display-4
Get your life on track
%p.lead
With daily reminders, beautiful charts and insightful statistics,
Loop Habit Tracker&trade; helps you create and maintain great habits. Completely free and open-source.
.store-badges
%a(href="https://play.google.com/store/apps/details?id=org.isoron.uhabits")
%img(src="images/google-play.png")
%a(href="https://f-droid.org/en/packages/org.isoron.uhabits/")
%img(src="images/f-droid.png")
.col-md
.s2
%img.screenshot(src="screenshots/uhabits1.png")
.s1
%img.screenshot(src="screenshots/uhabits4.png")
.section.screenshots
%span
%a(href="screenshots/uhabits1.png")
%img(src="screenshots/uhabits1_th.png")
%a(href="screenshots/uhabits2.png")
%img(src="screenshots/uhabits2_th.png")
%a(href="screenshots/uhabits3.png")
%img(src="screenshots/uhabits3_th.png")
%span
%a(href="screenshots/uhabits4.png")
%img(src="screenshots/uhabits4_th.png")
%a(href="screenshots/uhabits5.png")
%img(src="screenshots/uhabits5_th.png")
.section
.feature-header
%h1
Features
.container
.row
.col-md
%ul
%li
%h3 Habit score
Loop has an advanced formula for calculating the strength of your habits. Every repetition makes your habit stronger and every missed day makes it weaker. A few missed days after a long streak, however, will not completely destroy your progress, unlike many other don't-break-the-chain apps.
%li
%h3 Flexible schedules
In addition to daily habits, Loop supports habits with more complex schedules, such as 3 times per week or every other day.
%li
%h3 Reminders
Schedule notifications to remind you of your habits. Each habit can have its own reminder, at a chosen time of the day. Easily check or dismiss your habit directly from the notification.
%li
%h3 Widgets
Be reminded of your habits whenever you unlock your phone. Colorful widgets allow you to track your habits directly from your home screen, without even opening the app.
.col-md
%ul
%li
%h3 Take control of your data
If you want to further analyze your data, or move it to another service, Loop allows you to export it to spreadsheets (CSV) or to a database file (SQLite). For power users, check marks can be added through task automation apps such as Tasker.
%li
%h3 No limitations
Track as many habits as you wish. Loop imposes no artificial limits on how many habits you can have. All features are available to all users, and there are no in-app purchases.
%li
%h3 Completely ad-free and open source
There are no advertisements, annoying notifications or intrusive permissions in this app, and there will never be. The app is completely open-source (GPLv3).
%li
%h3 Works offline and respects your privacy
Loop doesn't require an Internet connection or online account registration. Your confidential data is never sent to anyone. Neither the developers nor any third-parties have access to it.
.section.footer
Copyright © 2016&ndash;2020, Alinson Santos Xavier. All Rights Reserved.
%script(type="text/javascript" src="lib/js/jquery.min.js")
%script(type="text/javascript" src="lib/js/bootstrap.bundle.min.js")

@ -0,0 +1,104 @@
html, body
max-width: 100%
overflow-x: hidden
body
font-family: 'Open Sans', sans-serif
padding-bottom: 0
a, a:hover
text-decoration: none
.navbar
box-shadow: rgba(0,0,0,0.4) 0px 0px 20px
background-color: white !important
.nav-link
margin: 0px 18px
.section
background-color: transparent
padding: 18px 0px
.container
ul
list-style-type: none
h3
font-size: 16px
font-weight: bold
margin: 18px 0px 0px 0px
.screenshots
text-align: center
background-color: #222
img
margin: 0.5%
border-radius: 10px
border: 3px solid #fff2
box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5)
max-width: 17%
.footer
color: #888
background-color: #222
text-align: center
font-size: 12px
.jumbotron
background: linear-gradient(rgba(0,30,200,0.8),rgba(90,30,150,0.5)), url("images/hero-background-filter.jpg")
box-shadow: rgba(0,0,0,0.5) 0px 0px 20px
margin: 0
h1
max-width: 25rem
font-weight: bold
color: white
p
max-width: 40rem
color: white
.screenshot
box-shadow: rgba(0, 0, 0, 0.5) 5px 5px 20px
padding: 0px 0px 0px 0px
border-radius: 10px
border: 2px solid rgba(255, 255, 255, 0.2)
background-color: transparent
max-width: 300px
.store-badges
margin: 2rem 1rem
img
opacity: 0.8
height: 75px
img:hover
opacity: 1.0
.s1
padding-bottom: 50px
padding-left: 50px
.s2
position: absolute
top: 50px
left: 175px
.feature-header
text-align: center
font-weight: bold
padding: 18px
.align-right
text-align: right
.vertical-align
display: flex
align-items: center
.content
max-width: 800px
margin: 18px auto
padding: 0px 18px
//padding-left: 120px
h2, h3, h4
margin: 27px 0px 9px 0px
h2, h3
//margin-left: -120px
h4
//margin-left: -60px
font-size: 16px
font-weight: bold

@ -0,0 +1,32 @@
!!! 5
%html
%head
%meta(charset="UTF-8")
%link(href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css")
%meta(name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no")
%title Privacy | Loop Habit Tracker
%link(rel="stylesheet" type="text/css" href="lib/css/bootstrap.min.css")
%link(rel="stylesheet" type="text/css" href="index.css")
%body
.navbar.navbar-expand-md.navbar-light.bg-light
%a.navbar-brand(href="/")
%b Loop
Habit Tracker
%button.navbar-toggler(type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation")
%span.navbar-toggler-icon
#navbar.collapse.navbar-collapse
%ul.navbar-nav.mr-auto.mt-2.mt-lg-0
%li.nav-item
%a.nav-link(href="faq.html") FAQ
%li.nav-item
%a.nav-link(href="privacy.html") Privacy
%li.nav-item
%a.nav-link(href="https://source.loophabits.org") Source Code
%li.nav-item
%a.nav-link(href="https://translate.loophabits.org") Translate
%body
.content
:markdown
#{File.open("src/privacy.md").read}

@ -0,0 +1,14 @@
## Privacy Policy
- All data provided to Loop Habit Tracker is only stored locally in your
device. Loop Habit Tracker does not upload your data anywhere. The
developers of Loop Habit Tracker do not have access to your data.
- Your data is not shared with any 3rd parties. Loop Habit Tracker does not
include any advertisement libraries or any 3rd party tracking (analytics)
code, such as Google Analytics or Facebook SDK.
- If you have activated "backup & reset" in your phone settings (Settings /
Backup & Reset / Back up my data), you should be aware that Android itself
will periodically save a copy of your phone's data in Google's servers. The
developers of Loop Habit Tracker do not have access to this data.
Loading…
Cancel
Save