Developers
Development setup
One-command DDEV environments for core and client — no local PHP or Node needed.
Both repos ship a DDEV environment: PHP, Composer, Node, MariaDB and every sidecar (Mercure, Meilisearch, Valkey, LiveKit) run in containers. Requirements: Docker and DDEV v1.24+ — nothing else installed locally.
Full stack, first run
Warning
Clone into directories named exactly core and client — DDEV derives project names (and the *.ddev.site URLs the stacks use to find each other) from the directory name.
# Backend
git clone https://github.com/tyto-chat/core.git core && cd core
ddev start && ddev init # deps, DB, keys, admin user, bot
# Frontend (sibling directory)
cd .. && git clone https://github.com/tyto-chat/client.git client && cd client
ddev start && ddev setup # deps, .env.local, Playwright browser
ddev init prompts for the admin email/password and prints the
E2E_TEST_TOKEN used by the client’s Playwright suite.
- API: https://core.ddev.site/api
- App: https://client.ddev.site (Vite dev server, hot reload)
Useful commands
Core:
| Command | Description |
|---|---|
ddev init |
First-time setup — safe to re-run, skips what’s done |
ddev reset-db |
Drop + recreate the database, regenerate migrations |
ddev test |
PHPUnit (handles test-DB setup) — see Testing |
ddev composer phpstan |
Static analysis |
ddev composer checkcs / fixcs |
Code style check / auto-fix |
ddev mysql |
MariaDB shell |
Client:
| Command | Description |
|---|---|
ddev setup |
First-time setup: .env.local, Playwright browser |
ddev npm test |
Vitest unit tests |
ddev e2e |
Playwright end-to-end suite — see Testing |
ddev npm run typecheck / lint / format |
TypeScript / ESLint / Prettier |
ddev npm run build |
Production build |
Both READMEs (core, client) document the full command sets and service versions.