a3e7f0288e902eda060d4b53f845e18a25cc07b0
- Add multi-stage Dockerfile for server containerization - Add .dockerignore to exclude unnecessary files from build context - Switch shared package from source to compiled CommonJS output (dist/) - Server dev/build scripts now build shared package first - Fix deep imports to use @calchat/shared barrel export - Update CLAUDE.md with Docker and shared package documentation
CalChat
Kalender-App mit KI-Chatbot. Termine lassen sich per Chat in natuerlicher Sprache erstellen, bearbeiten und loeschen.
Tech Stack
| Bereich | Technologie |
|---|---|
| Frontend | React Native, Expo, Expo-Router, NativeWind, Zustand |
| Backend | Express.js, MongoDB, Mongoose, OpenAI GPT |
| Shared | TypeScript Monorepo mit npm Workspaces |
| Optional | CalDAV-Sync (z.B. Radicale) |
Voraussetzungen
- Node.js (>= 20)
- npm
- Docker & Docker Compose (fuer MongoDB)
- OpenAI API Key (fuer KI-Chat)
- Android SDK + Java (nur fuer APK-Build)
Projekt aufsetzen
1. Repository klonen
git clone <repo-url>
cd calchat
2. Dependencies installieren
npm install
Installiert alle Dependencies fuer Client, Server und Shared.
3. MongoDB starten
cd apps/server/docker/mongo
docker compose up -d
- MongoDB:
localhost:27017(root/mongoose) - Mongo Express UI:
localhost:8083(admin/admin)
4. Server konfigurieren
cp apps/server/.env.example apps/server/.env
apps/server/.env bearbeiten:
MONGODB_URI=mongodb://root:mongoose@localhost:27017/calchat?authSource=admin
OPENAI_API_KEY=sk-proj-... # Eigenen Key eintragen
USE_TEST_RESPONSES=false # true = statische Testantworten ohne GPT
LOG_LEVEL=debug
NODE_ENV=development
PORT=3000
5. Client konfigurieren
cp apps/client/.env.example apps/client/.env
apps/client/.env bearbeiten:
# Fuer Emulator/Web:
EXPO_PUBLIC_API_URL=http://localhost:3000/api
# Fuer physisches Geraet im gleichen Netzwerk:
EXPO_PUBLIC_API_URL=http://<DEINE-LOKALE-IP>:3000/api
6. Server starten
npm run dev -w @calchat/server
Startet den Server auf Port 3000 (mit tsx watch - startet bei Dateiänderungen automatisch neu (oder sollte es zumindest)).
7. Client starten
npm run start -w @calchat/client
Dann im Expo-Menue die gewuenschte Plattform waehlen:
a- Android Emulatori- iOS Simulatorw- Web Browser
Oder direkt:
npm run android -w @calchat/client
npm run ios -w @calchat/client
npm run web -w @calchat/client
CalDAV (optional)
Fuer CalDAV-Synchronisation kann ein Radicale-Server gestartet werden:
cd apps/server/docker/radicale
docker compose up -d
Radicale ist dann unter localhost:5232 erreichbar. Die CalDAV-Verbindung wird in der App unter Einstellungen konfiguriert.
Weitere Befehle
npm run format # Prettier auf alle TS/TSX-Dateien
npm run lint -w @calchat/client # ESLint (Client)
npm run build -w @calchat/server # TypeScript kompilieren (Server)
npm run build:apk -w @calchat/client # APK lokal bauen (EAS)
Projektstruktur
calchat/
├── apps/
│ ├── client/ # Expo React Native App
│ └── server/ # Express.js Backend
│ └── docker/
│ ├── mongo/ # MongoDB + Mongo Express
│ └── radicale/ # CalDAV Server
└── packages/
└── shared/ # Geteilte Types und Utilities
Description
Languages
TypeScript
96.3%
Shell
2%
HCL
0.9%
JavaScript
0.5%
Dockerfile
0.3%