Local Development Setup
Goal: a new engineer gets the whole stack running locally from clean checkouts.
Prerequisites
| Tool | Version | For |
|---|---|---|
| Go | 1.25 | API |
| PostgreSQL | 14+ | API database |
| Node.js | 24.x | admin + web app |
| Flutter | 3.38.9 (stable) | mobile app |
| Java | 17/21 (temurin) | Android build |
| Android Studio | latest | emulator/build |
| Firebase CLI + FlutterFire | latest | app Firebase config |
| Docker | latest | admin (prod-parity), optional |
1. API (bme-konza-api)
cd bme-konza-api
cp .env.example .env # then fill secrets (JWT, Firebase, DB password)
createdb bmekonza # or point DATABASE_* at an existing Postgres
go run main.go migrate # apply goose migrations
go run main.go user --email you@example.com --name you --role admin --password '...' # seed an admin
go run main.go server # serves on :8000
You also need the Firebase Admin service-account JSON referenced by FIREBASE_FILE_NAME
/ FIREBASE_SERVICE_FILE for auth/FCM/storage to work — get it from the <STAGING_FIREBASE_PROJECT>
Firebase project (don't use prod locally). See 11-firebase.md.
API will be at http://localhost:8000 (base path /api/v1), Swagger at [TODO: /swagger].
2. Admin panel (Oa-admin-panel)
cd Oa-admin-panel
cp .env.example .env # set VITE_BASE_URL=http://localhost:8000 (+ Firebase web config)
npm install
npm run dev
3. Web app (BME-KONZA-web-platform)
cd BME-KONZA-web-platform
cp .env.example .env # VITE_BASE_URL + Firebase web config + GA id
npm install # runs nuxt prepare
npm run dev
4. Mobile app (oxygen-alliance-app)
cd oxygen-alliance-app
flutter pub get
flutterfire configure # if firebase_options/google-services.json are missing
# Run the staging flavor against staging or local API:
flutter run --flavor staging --dart-define=API_URL=http://10.0.2.2:8000 # 10.0.2.2 = host from Android emulator
Use the staging flavor/Firebase project for development. To point at a local API from a
device/emulator, set API_URL accordingly (10.0.2.2 reaches the host machine from the
Android emulator).
Running everything together
Start Postgres → API (:8000) → point admin/web VITE_BASE_URL and the app's API_URL at
it. Remember to add the local frontend origins to SERVER_CORS_ALLOW_ORIGINS in the API
.env.
[TODO: any seed/fixture data script beyond theusercommand, and a docker-compose for
one-command bring-up if desired.]