Linus Waldowsky 27602aee4c Add E2E testing infrastructure with WebdriverIO + Appium
Set up E2E test framework for Android using WebdriverIO, Appium, and
UiAutomator2. Add testID props to key components (AuthButton, BaseButton,
ChatBubble, CustomTextInput, ProposedEventCard) and apply testIDs to
login screen, chat screen, tab bar, and settings. Include initial tests
for app launch detection and login flow validation. Update CLAUDE.md
with E2E docs.
2026-02-26 21:37:40 +01:00
2025-11-24 20:21:04 +01:00
2026-02-26 15:52:59 +01:00
2026-02-26 14:52: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%