matthiasn / lotti

Achieve your goals and keep your data private with Lotti. This life tracking app is designed to help you stay motivated and on track, all while keeping your personal information safe and secure. Now with on-device speech recognition.
GNU General Public License v3.0
501 stars 52 forks source link
android-app fitness-app flutter health ios journal linux-app macos speech-recognition speech-to-text time-tracker windows

Lotti

CodeFactor Flutter Test

Lotti helps you track habits, behavior, any data about yourself, in complete privacy.

Habits Tab

Read more on Substack.

New in 06/2023: Lotti can now transcribe audio recordings in 99 languages using whisper.cpp.

How to use Lotti

Check out the MANUAL. The images in there are updated automatically in CI using Fluttium.

Core beliefs / the WHY

Lotti is a tool for self-improvement centered around these core beliefs:

  1. Long-term outcomes in life can be improved by following good routines and establishing good habits, such as healthy sleep, mindfulness and improved self-awareness, healthy eating, enough physical activity and the like. Technology is essential when trying to establish and monitor good habits. Paper-based checklists are undesirable.
  2. Habits need to be monitored long-term. The 21-day habit theory, stating that it takes three weeks to form a new habit and then subsequently sticking with it automatically is questionable at best, and the only way to ensure that habits identified as important are actually followed is to monitor them.
  3. Any comprehensive attempt at tracking and monitoring the aforementioned areas of life will result in collecting far more data than anyone should be willing to share with anyone else.

Lotti is a tool for improving life via establishing good habits and monitoring their outcome. All collected data stays on your devices. Encrypted and entirely private synchronisation between your devices can be set up (instructions will follow).

Lotti currently supports recording the following data types:

Planned improvements:

Please check out HISTORY.md for all the information on the project's history and back-story. You can find the previous version (written in Clojure and ClojureScript) in this repo: meins.

Principles

Beta testing

Lotti is currently available for beta testing for these platforms:

The goal is to get Lotti out on all app stores in 2023.

Blog posts

Getting Started

  1. Install Flutter, see instructions.
  2. Clone repository and go to ./lotti
  3. Run flutter pub get
  4. Run make watch or make build_runner for code generation
  5. Open in your favorite IDE, e.g. Android Studio
  6. Run, either from the IDE or using e.g. flutter run -d macos

widgetbook

Lotti uses widgetbook for developing and documenting widgets, for now only for select widgets. To run the widgetbook, run e.g. fvm flutter run -d macos -t lib/widgetbook.dart.

Platform-specific setup

Mac

Tested on macOS 13.3: no additional steps necessary. You only need to have Xcode installed.

Linux

Tested on Ubuntu 20.04.3 LTS inside a virtual machine on VMWare Fusion In addition to the common steps above, install missing dependencies:

$ sudo apt-get install libsecret-1-dev libjsoncpp-dev libjsoncpp1 libsecret-1-0 sqlite3 libsqlite3-dev
$ flutter packages get
$ make build_runner

In case the network in the virtual machine is not connecting after resuming: $ sudo dhclient ens33

Windows

If your system is set up to run the Flutter counter example app, you should be good to go.

Continuous Integration

This project uses Buildkite on macOS for releasing to TestFlight on iOS and macOS, and GitHub Actions for publishing to GitHub Releases for all other platforms.

Contributions

Contributions to this project are very welcome. How can you help?

  1. Please check under issues if there is anything specific that needs helping hands, or features to be discussed or implemented.
  2. Improve the test coverage (currently at around 71%). Any additional tests are welcome, including code changes to make the code easier to test.
  3. Create issues for feedback and ideas.
  4. Help translate into more languages, and improve the existing translations.

Thanks!