# 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 ```bash git clone cd calchat ``` ### 2. Dependencies installieren ```bash npm install ``` Installiert alle Dependencies fuer Client, Server und Shared. ### 3. MongoDB starten ```bash cd apps/server/docker/mongo docker compose up -d ``` - MongoDB: `localhost:27017` (root/mongoose) - Mongo Express UI: `localhost:8083` (admin/admin) ### 4. Server konfigurieren ```bash cp apps/server/.env.example apps/server/.env ``` `apps/server/.env` bearbeiten: ```env 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 ```bash cp apps/client/.env.example apps/client/.env ``` `apps/client/.env` bearbeiten: ```env # Fuer Emulator/Web: EXPO_PUBLIC_API_URL=http://localhost:3000/api # Fuer physisches Geraet im gleichen Netzwerk: EXPO_PUBLIC_API_URL=http://:3000/api ``` ### 6. Server starten ```bash 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 ```bash npm run start -w @calchat/client ``` Dann im Expo-Menue die gewuenschte Plattform waehlen: - `a` - Android Emulator - `i` - iOS Simulator - `w` - Web Browser Oder direkt: ```bash 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: ```bash 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 ```bash 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 ```