Files
Calendar_Frontend/README.md
PaddyandClaude Opus 5.5 0cda40f85e Rewrite the calendar frontend in Next.js
Replaces the Angular 18 app with Next.js 16 / React 19 / Tailwind 4 / shadcn,
the same stack and design system as nachklang-feedback, planned in
docs/rewrite-plan.md.

- Admin: all calendars in one mobile-friendly list (month groups, calendar
  chips, Kommend/Vergangen/Alle, search, sort, filters in the URL), an edit
  sheet for create/edit/duplicate/delete, publish confirmation, and an
  "Abonnieren" dialog with subscription links for every calendar.
- Public landing page: subscribe links from env instead of hardcoded, plus
  the next public events, server-rendered and revalidated every 5 minutes.
- All times handled explicitly as Europe/Berlin; whole-day events stored as
  00:00-23:59. Fixes carried over from the Angular app: the move dialog
  leaking a cancelled calendar change, saves that looked saved when they
  failed, in-place Date mutation, and duplicated calendar-id mappings.
- Same shared-session auth as before (proxy.ts gate, /admin/me, 401 vs 403).
- 112 Vitest tests over lib/; docs in docs/ (architecture, features,
  gotchas, API wish list, deployment).

Needs the API branch feature/calendar-ical-escaping-subscriptions deployed
first (GET /calendar/events/subscriptions).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 22:15:59 +02:00

32 lines
1.1 KiB
Markdown

# Nachklang Calendar
Event calendar for Nachklang e.V.: a public landing page for subscribing to the calendar, and an
admin area (`/admin`) for editing events in all calendars.
Next.js (App Router) + TypeScript + Tailwind + shadcn, the same stack as `nachklang-feedback`.
Rewritten from Angular in September 2026 ([docs/rewrite-plan.md](docs/rewrite-plan.md)).
Documentation: [architecture](docs/architecture.md) · [features](docs/features.md) ·
[gotchas](docs/gotchas.md) · [deployment](docs/deployment.md) · [API wish list](docs/api-wishlist.md)
## Development
```bash
cp .env.local.example .env.local # then adjust if needed
npm install
npm run dev # http://localhost:4200
```
Port 4200 is not arbitrary: it is the port the API's better-auth origins and the admin app's
redirect allow-list trust. Another port breaks sign-out and the return redirect after sign-in.
The admin area needs the API (`:3000`) and the admin app (`:3002`) running locally.
## Other scripts
```bash
npm run build # production build (output: standalone; see docs/deployment.md)
npm run lint
npm test # Vitest, pure logic in lib/
```