managarten/apps/citycorners/apps/backend
Till JS 94d7e2bd02 feat(citycorners): add slugs, contacts, collections, clustering, rate limiting, soft deletes
1. SEO Slugs: Auto-generated from name (ä→ae, ö→oe, etc.), unique with
   -2/-3 suffix. Routes accept both UUID and slug. Seed data includes slugs.

2. Opening Hours + Contact: website, phone, openingHours fields in schema.
   Displayed on detail page, editable in add/edit forms.

3. Landing Page with API: Fetches locations from backend at build time,
   falls back to hardcoded JSON if API unreachable.

4. Frontend Tests: Vitest setup with api.test.ts (50 backend + web tests).

5. Marker Clustering: leaflet.markercluster for 10+ locations on map,
   direct markers for fewer.

6. Favorite Collections: New collections table with CRUD endpoints.
   Favorites page has tabs for favorites vs collections. Create, view,
   delete collections with location management.

7. Rate Limiting: In-memory guard (10 req/min) on write endpoints.
   Returns 429 with retryAfter.

8. Soft Deletes: deletedAt field, all reads filter deleted records.
   POST /locations/:id/restore endpoint for owners.

50 backend tests passing, 0 type errors.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 12:27:29 +01:00
..
src feat(citycorners): add slugs, contacts, collections, clustering, rate limiting, soft deletes 2026-03-24 12:27:29 +01:00
docker-entrypoint.sh feat(citycorners): add city guide app for Konstanz with full monorepo integration 2026-03-23 10:56:26 +01:00
Dockerfile feat(citycorners): add city guide app for Konstanz with full monorepo integration 2026-03-23 10:56:26 +01:00
drizzle.config.ts feat(citycorners): add city guide app for Konstanz with full monorepo integration 2026-03-23 10:56:26 +01:00
jest.config.js test(citycorners): add backend test suite (31 tests) and update documentation 2026-03-23 12:44:46 +01:00
package.json test(citycorners): add backend test suite (31 tests) and update documentation 2026-03-23 12:44:46 +01:00
tsconfig.json feat(citycorners): add city guide app for Konstanz with full monorepo integration 2026-03-23 10:56:26 +01:00