Meditation can positively transform people's lives, and we believe no one should have to pay for it. We are the Medito Foundation, and we've built the Medito App for people who have never meditated before or want to deepen their meditation practice.
The app is free, forever: no ads, no spam, no need to sign up or pay. Medito App is a Flutter project available on Android and iOS maintained by the Medito Foundation and its community.
- Play Store: Download on Google Play
- App Store: Download on the App Store
- APK:
NOTE: If you install the Medito app using the APK file, please make sure to verify that the APK file is signed by Medito Foundation. See VERIFY_APK for more information.
Contributors can run the app without any API keys or Firebase setup using mock mode. All network calls are intercepted and return hardcoded sample data — no real credentials are needed.
-
Clone the repository and install dependencies:
git clone https://github.com/meditohq/medito-app.git cd medito-app flutter pub get -
Generate required code (Pigeon + Riverpod):
flutter pub run pigeon --input pigeon_conf.dart dart run build_runner build --delete-conflicting-outputs -
Create
android/keystore.propertiesusing your own debug keystore. The Android SDK auto-creates one at~/.android/debug.keystorewith default credentials:cp android/keystore.properties.example android/keystore.propertiesThen edit
android/keystore.propertieswith your keystore details:storePassword=<your-keystore-password> keyPassword=<your-key-password> keyAlias=<your-key-alias> storeFile=<absolute-path-to-your-keystore> appId=meditofoundation.medito versionCode=1 versionName=1.0.0For the default Android debug keystore the password, key password, and alias are
android,android, andandroiddebugkeyrespectively. -
Create a placeholder
android/app/google-services.json(Firebase is skipped in mock mode, but Gradle requires the file) -
Run the app using the "Flutter (Mock)" run configuration in VS Code or Android Studio, or from the terminal:
flutter run --flavor dev --dart-define=MOCK_MODE=true -d <device-id>
In mock mode, Firebase, Superwall, Stripe, and Meta SDK are all skipped. The app runs with sample content so you can work on UI and logic without real credentials.
-
Clone the repository:
git clone https://github.com/meditohq/medito-app.git cd medito-app -
Install dependencies:
flutter pub get -
Set up environment files:
- Create
.env.stagingand.env.productionfiles in the root directory. - Contact a team member for the contents of these files.
- Create
-
Set up Firebase:
- You need
google-services.json(for Android) andGoogleService-Info.plist(for iOS) from the Firebase console. - You also need the
/lib/firebase_options.dartfile. - Contact a team member for the contents of these files.
- You need
To generate Pigeon code. This is required to communicate with native iOS and Android code.
flutter pub run pigeon --input pigeon_conf.dart
To generate API and state management code with Riverpod:
dart run build_runner build --delete-conflicting-outputs
This project supports separate development and production configurations. Here's how to set up and use them in different IDEs:
Add the following to your .vscode/launch.json (this file is gitignored, so each developer maintains their own):
{
"version": "0.2.0",
"configurations": [
{ "name": "Flutter (Dev)", "request": "launch", "type": "dart", "args": ["--flavor", "dev", "--dart-define-from-file=../.staging.json"] },
{ "name": "Flutter (Prod)", "request": "launch", "type": "dart", "args": ["--flavor", "prod"] },
{ "name": "Flutter (Mock)", "request": "launch", "type": "dart", "args": ["--flavor", "dev", "--dart-define=MOCK_MODE=true"] }
]
}- Open the project in Android Studio.
- In the toolbar, you'll see a dropdown next to the run button.
- Select "Flutter (Dev)", "Flutter (Prod)", or "Flutter (Mock)" from this dropdown.
- Click the run button or press Shift+F10 to run the selected configuration.
These configurations are defined in .run/Flutter (Dev).run.xml, .run/Flutter (Prod).run.xml, and .run/Flutter (Mock).run.xml.
Ensure that your android/app/build.gradle file has the corresponding flavor configurations set up correctly.
For Android APK signing, you need to create a keystore.properties file in the android/ directory:
- Copy
android/keystore.properties.exampletoandroid/keystore.properties - Fill in your actual keystore information
- Generate or obtain a keystore file (
.jks) for signing APKs
Note: Never commit keystore.properties or your .jks files to version control.
- App: GNU AFFERO GENERAL PUBLIC LICENSE.
- The content available within the Medito app is subject to a custom license. For more information, please refer to meditofoundation.org/license.
- Sometimes we aggregate content from other sources that do not have the same license. This content is generally not published under "Medito." Make sure to respect the original copyright.
Medito Foundation: https://meditofoundation.org/.