mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-23 07:26:43 +02:00
New project with three apps: - Landing (Astro): static site with SVG illustrations, location data - Backend (NestJS, port 3025): CRUD API for locations + favorites, Drizzle ORM, auth via mana-core-auth - Web (SvelteKit, port 5196): Tailwind 4, PillNav, auth (login/register/SSO), Leaflet map, favorites with optimistic updates, theme/settings Infrastructure: DB init SQL, setup-databases.sh, generate-env.mjs, root package.json scripts, Dockerfiles, docker-compose.macmini.yml (backend:3025, web:5022), Cloudflare wrangler.toml. Branding: registered in shared-branding (AppId, APP_BRANDING, APP_ICONS, MANA_APPS, CitycornersLogo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1.8 KiB
1.8 KiB
CityCorners
City guide for Konstanz (Bodensee) – showcasing locations, restaurants, museums, and sights.
Architecture
apps/citycorners/
├── apps/
│ ├── landing/ # Astro static site
│ ├── backend/ # NestJS API (port 3025)
│ └── web/ # SvelteKit web app (port 5196)
└── CLAUDE.md
Development
# Full stack (auth + backend + web)
pnpm dev:citycorners:full
# Individual apps
pnpm dev:citycorners:landing
pnpm dev:citycorners:backend
pnpm dev:citycorners:web
# Database
pnpm citycorners:db:push # Push schema
pnpm citycorners:db:studio # Drizzle Studio
pnpm citycorners:db:seed # Seed sample data
# Deploy landing
pnpm deploy:landing:citycorners
Database
PostgreSQL database citycorners with Drizzle ORM.
Schema
- locations – name, category (sight/restaurant/shop/museum), description, address, coordinates, imageUrl, timeline (JSONB)
- favorites – userId, locationId (FK → locations, cascade delete), unique constraint on (userId, locationId)
API Endpoints
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /locations |
No | List all locations (optional ?category= filter) |
| GET | /locations/:id |
No | Get single location |
| POST | /locations |
Yes | Create location |
| PUT | /locations/:id |
Yes | Update location |
| DELETE | /locations/:id |
Yes | Delete location |
| GET | /favorites |
Yes | List user's favorites |
| POST | /favorites/:locationId |
Yes | Add to favorites |
| DELETE | /favorites/:locationId |
Yes | Remove from favorites |
Categories
| DB Value | Label (DE) |
|---|---|
sight |
Sehenswürdigkeit |
restaurant |
Restaurant |
shop |
Laden |
museum |
Museum |