Efficient station-based training. Organize, run and track drills with ease.
docs/architecture.md: project overview, tech stack, repo layout, conventions, backend contract, and where to look first when navigating the code.docs/adrs/: Architecture Decision Records (MADR format). Read these to understand why a non-obvious choice was made, and add a new one when you make such a choice.AGENTS.md: operating guide for AI coding agents (Claude Code, Codex, Cursor, etc.) and a quick orientation for human contributors. Read this before letting an agent change code.CLAUDE.md: short pointer file read by Claude Code on startup, defers toAGENTS.md.
To get started with developing for RingDrill using Flutter, follow these steps:
-
Clone the Repository:
Clone the RingDrill repository to your local machine:git clone https://github.com/DISCOOS/ringdrill.git
-
Set Up Development Environment:
Ensure you have the following prerequisites installed:- Flutter SDK
- Appropriate code editor (e.g., Android Studio with the Flutter and Dart plugins or Visual Studio Code with Flutter extension)
- JDK 17 or higher if you're targeting Android
- Xcode installed if you're targeting iOS
-
Configure the Project:
- Run the following commands in the project’s root directory to ensure all dependencies are installed:
flutter pub get
- If you're targeting Android, verify and set the
compileSdkVersionin theandroid/app/build.gradlefile to match the target SDK version (34 in this case). - If you're targeting iOS, ensure that the iOS deployment target is appropriately set in
ios/Podfile.
- Run the following commands in the project’s root directory to ensure all dependencies are installed:
-
Generate Code Using Build Runner:
Generate any required code for the project by running:make build
-
Enable Build Runner Watch Mode (Optional):
To automatically rebuild generated code when making changes, you can run:make watch
-
Create Release Builds:
For generating an Android release build using Shorebird, execute:make release-android
-
Patch Android Builds (Optional):
If deploying incremental patch updates for Android, run:make patch-android
-
Run the Application:
Start the project on your desired emulator or physical device:flutter run
-
Run the Admin CLI: To activate:
dart pub global activate -s path .See usage for additional information:
ringdrill -h
-
Run the Netlify backend locally: Start the Netlify function host (with emulated blob store) on your machine:
make netlify-dev
Seed it with a sample drill, list the feed, or reset the local store:
make catalog-seed # uploads test/fixtures/test-7x.drill and publishes it make catalog-feed # lists the market feed make catalog-reset # clears .netlify/blobs-serve (with the backend stopped)
See
docs/architecture.mdfor the full workflow (including how to point the Flutter app at the local backend) and the known limitation around the/d/<slug>deep-link path. The rationale is in ADR-0013.