managarten/apps/calendar
Wuesteon 0fa154c7d6 🐛 fix(shared-auth): add automatic token refresh on 401 responses
- Add backendUrl parameter to initializeWebAuth() for interceptor config
- Expand isTokenExpiredResponse() to match more error patterns:
  - "invalid token", "token validation failed", "claim" (jose errors)
  - ERR_JWT_EXPIRED error code
- Update all web apps to pass backendUrl for automatic refresh:
  - picture (3006), chat (3002), zitare (3007), contacts (3015)
  - calendar (3014), clock (3017), todo (3018)
- Fix API client default port in picture web app

This prevents users from being randomly signed out when JWT expires.
The interceptor now catches 401 responses and automatically refreshes
the token before retrying the request.
2025-12-12 20:47:43 +01:00
..
apps 🐛 fix(shared-auth): add automatic token refresh on 401 responses 2025-12-12 20:47:43 +01:00
packages/shared feat(contacts): integrate contacts into Todo and Calendar apps 2025-12-11 18:14:35 +01:00
CLAUDE.md feat(calendar): add complete calendar app with backend, web, and landing 2025-12-02 13:15:04 +01:00
package.json 🐛 fix(build): remove recursive build scripts from parent packages 2025-12-04 01:59:53 +01:00
README.md feat(calendar): add complete calendar app with backend, web, and landing 2025-12-02 13:15:04 +01:00

Kalender

Smart Calendar Management - Organisiere deine Zeit intelligent

Eine vollständige Kalender-Anwendung mit persönlichen und geteilten Kalendern, wiederkehrenden Terminen, CalDAV/iCal-Synchronisation und Erinnerungen.

Features

  • Mehrere Kalender - Verwalte verschiedene Kalender für Arbeit, Privates, Familie
  • Kalenderansichten - Tag, Woche, Monat, Agenda
  • Wiederkehrende Termine - Flexible Wiederholungsregeln (RFC 5545)
  • Kalender teilen - Mit Familie, Freunden oder Kollegen
  • CalDAV/iCal Sync - Google Calendar, Apple, Outlook
  • Smarte Erinnerungen - Push & E-Mail Benachrichtigungen
  • Multi-Sprache - Deutsch, English, Français, Español, Italiano

Quick Start

# 1. PostgreSQL starten (falls nicht läuft)
docker compose -f docker-compose.dev.yml up -d postgres

# 2. Datenbank erstellen
PGPASSWORD=devpassword psql -h localhost -U manacore -d postgres -c "CREATE DATABASE calendar;"

# 3. Schema pushen
pnpm calendar:db:push

# 4. Backend + Web starten
pnpm dev:calendar:app

Apps

App Port Beschreibung
Backend 3014 NestJS REST API
Web 5179 SvelteKit Web-App
Landing 4322 Astro Marketing-Seite
Mobile - Expo App (TODO)

Tech Stack

  • Backend: NestJS, Drizzle ORM, PostgreSQL
  • Web: SvelteKit, Svelte 5, Tailwind CSS
  • Landing: Astro, Tailwind CSS
  • Auth: Mana Core Auth (JWT)

Dokumentation

Siehe CLAUDE.md für die vollständige technische Dokumentation.

Entwicklung

# Einzelne Apps starten
pnpm dev:calendar:backend    # Backend
pnpm dev:calendar:web        # Web-App
pnpm dev:calendar:landing    # Landing Page

# Datenbank
pnpm calendar:db:push        # Schema pushen
pnpm calendar:db:studio      # Drizzle Studio öffnen

API Endpunkte

Modul Endpunkt Beschreibung
Health GET /api/v1/health Health Check
Calendars GET/POST /api/v1/calendars Kalender CRUD
Events GET/POST /api/v1/events Termine CRUD
Reminders POST /api/v1/events/:id/reminders Erinnerungen
Shares POST /api/v1/calendars/:id/shares Freigaben
Sync POST /api/v1/sync/caldav/discover CalDAV

Lizenz

Proprietär - Manacore