Linus Waldowsky e732305d99
Some checks failed
continuous-integration/drone/push Build is failing
feat: add deploy pipeline and switch Dockerfile to COPY-based build
Add deploy_server Drone pipeline that builds and pushes the Docker image
to Gitea Container Registry, then deploys to VPS via SSH. Switch
Dockerfile from git clone to COPY-based build for CI compatibility and
better layer caching. Change exposed port to 3001.
2026-02-24 17:52:48 +01:00
2025-11-24 20:21:04 +01:00
2026-02-10 01:10:44 +01:00

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 Emulator
  • i - iOS Simulator
  • w - 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
No description provided
Readme 23 MiB
Languages
TypeScript 96.3%
Shell 2%
HCL 0.9%
JavaScript 0.5%
Dockerfile 0.3%