142 lines
3.1 KiB
Markdown
142 lines
3.1 KiB
Markdown
# 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 <repo-url>
|
|
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://<DEINE-LOKALE-IP>: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
|
|
```
|