A focused academy CRM and student training companion for sports academies.
Meten gives academy owners one place to manage leads, students, payments and communication, while students use the native Android app to capture score sheets, review OCR-derived performance data and record training reflections.
- Action-oriented academy dashboard
- Lead pipeline and lead-to-student conversion
- Student and payment tracking
- Communication history and templates
- Owner/staff email OTP authentication
- Native Android customer app with encrypted student sessions
- Camera/gallery score-sheet upload and multipass OCR
- Score history, progress summaries and manual OCR correction
- Explicit academy tenancy across sensitive data
- PostgreSQL migrations, repeatable demo seed and Docker workflows
- S3-compatible production image storage with development fallback
Android app ── Bearer/JSON ─┐
├── Next.js API ── Prisma ── PostgreSQL
Owner/staff web ─ Cookie ───┘ │
├── Resend (OTP email)
├── S3-compatible storage
└── Tesseract OCR
The web application is built with Next.js 15, React 19 and TypeScript. The Android application uses Kotlin and Jetpack Compose. All customer-facing queries derive academy and student scope from authenticated sessions.
Requirements:
- Node.js 22+
- Docker Desktop or PostgreSQL 16+
- Tesseract for local OCR
- Android Studio with SDK 36 for Android development
git clone https://github.com/mraja775/meten.git
cd meten
cp .env.example .env
npm ci
docker compose up -d postgres
npm run db:deploy
npm run db:seed
npm run devOpen http://localhost:3000. Sign in as owner@meten.local; without Resend configured, the development OTP is printed in the server console.
For the simplest managed local workflow:
npm run doctor
npm run local:start -- --seed
npm run android:openContinue with the focused guide for your environment:
- Local development and Android README — first setup, daily scripts, Android Studio, APK installation, database commands, and troubleshooting.
- Cloud deployment README — Linux/Docker deployment, secrets, HTTPS, backups, upgrades, and managed-platform guidance.
The seed creates one academy, two staff users, 100 students, 30 leads and 75 payments. Re-running it safely restores the same demo baseline.
cd consumer-android
./gradlew lintDebug testDebugUnitTest assembleDebugDebug builds connect to http://10.0.2.2:3000 from the Android emulator. Release builds require HTTPS and environment-provided signing credentials. See the Android guide and consumer API contract.
npm run typecheck
npm run lint
npm test
npm run build
npm run test:e2eGitHub Actions runs backend type checking, lint, tests and production build, plus Android debug and minified release verification.
| Path | Purpose |
|---|---|
app/ |
Next.js pages and route handlers |
components/ |
Web UI and domain components |
consumer-android/ |
Native Kotlin/Compose customer app |
lib/ |
Authentication, services, validation, OCR and storage |
prisma/ |
Database schema, migrations and demo seed |
tests/ |
Web unit and Playwright tests |
docs/ |
Product, architecture, API and deployment decisions |
- Product plan
- API specification
- Architecture decisions
- Implementation rules
- Cloud deployment
- Local development and scripts
- Production cloud installation
- Operations scripts
- Android release
- Privacy policy
Contributions are welcome. Read CONTRIBUTING.md before opening a pull request and follow the Code of Conduct. Please report vulnerabilities privately according to SECURITY.md, not through public issues.
Meten is available under the MIT License.
