commit 2acc5dfa2e4a2d474e8a671670a21e38806c6059 Author: vrubelroman Date: Thu Jul 9 18:19:47 2026 +0000 Initialize guideCity monorepo scaffolding Set up git repo with .gitignore and README describing the planned backend (FastAPI + PostGIS) and Android (Kotlin/Compose) architecture. Co-Authored-By: Claude Sonnet 5 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8a6bf9c --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# Environment +.env +*.env +!.env.example + +# Python +__pycache__/ +*.py[cod] +*.egg-info/ +.venv/ +venv/ +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ + +# Docker +docker-compose.override.yml + +# Android / Gradle +android/local.properties +android/.gradle/ +android/**/build/ +android/.idea/ +android/*.iml +android/.cxx/ +android/captures/ +android/.externalNativeBuild/ +*.keystore +*.jks + +# IDE +.vscode/ +.DS_Store + +# Logs +*.log diff --git a/README.md b/README.md new file mode 100644 index 0000000..a11d9db --- /dev/null +++ b/README.md @@ -0,0 +1,64 @@ +# guideCity + +Android walking city-guide app. Detects the user's location, finds nearby +landmarks, and narrates historical/architectural information about them by +voice while showing a swipeable card stack. Starting city: Moscow. + +## Architecture + +``` + ┌────────────────────┐ + │ Android app │ Kotlin + Jetpack Compose + │ (android/) │ 2GIS map, on-device TTS, + └─────────┬──────────┘ location, Room favorites + │ HTTPS / REST (JSON) + ┌─────────▼──────────┐ + │ FastAPI backend │ Python, SQLAlchemy, Alembic + │ (backend/) │ Dockerized + └─────────┬──────────┘ + │ SQL + ┌─────────▼──────────┐ + │ PostgreSQL+PostGIS │ cities / places / place_content + └────────────────────┘ +``` + +- `backend/` — FastAPI service exposing city/place/nearby-search endpoints, + backed by PostgreSQL+PostGIS. See `backend/` for details. +- `android/` — Kotlin/Compose app skeleton (MVVM, Hilt, Retrofit, Room, + DataStore, 2GIS MapKit, on-device TextToSpeech). + +## Backend quickstart + +```bash +cp .env.example .env +docker compose up -d db +docker compose exec api alembic upgrade head # (once api image is built: docker compose up -d --build api adminer first) +docker compose exec api python -m seed.seed_loader --file seed/moscow_gorky_park.yaml +docker compose exec api python -m seed.seed_loader --file seed/moscow_red_square.yaml +docker compose exec api python -m seed.seed_loader --file seed/moscow_city.yaml +curl http://localhost:8000/api/v1/health +curl "http://localhost:8000/api/v1/nearby?lat=55.7525&lon=37.6231" +``` + +Swagger UI: http://localhost:8000/docs +Adminer (DB inspection): http://localhost:8080 + +## Android quickstart + +```bash +cp android/local.properties.example android/local.properties +# fill in sdk.dir and DGIS_API_KEY (test key: b4df01a8-61db-4cb9-8286-7e069495987d) +cd android && ./gradlew :app:assembleDebug +``` + +Point the app's API base URL at `http://10.0.2.2:8000/` for the emulator, or +your machine's LAN IP for a physical device. + +## Notes / current scope + +This is iteration 1: Moscow only (Gorky Park, Red Square area, Moscow-City), +no user accounts (favorites are local/Room-only), no speed/heading-aware +auto content-length selection yet (reserved API params exist, unused). + +The 2GIS API key above is used directly via `local.properties`/`BuildConfig` +for development convenience — don't ship it as-is in a public repo.