Phase 1 MVP: gateway, CRUD handlers, frontend components

Backend:
- WebSocket gateway (hub, client, events) with fanout broadcast
- Server CRUD handlers (create, list, get, update, delete)
- Channel CRUD handlers (create, list, get, update, delete)
- Message CRUD handlers (list with cursor pagination, create, update, delete)
- cmd/migrate standalone migration CLI (up/down)
- cmd/server wired to all handlers + WebSocket + static file serving

Frontend:
- Zustand stores: auth, server, channel, message, websocket
- API client with fetch wrapper
- Terminal-styled components: Layout, LoginForm, ChatArea, ChannelList, ServerBar, MemberList
- React Router with login and main routes
- Gruvbox dark palette throughout

Ops:
- Docker Compose with app service (multi-stage build)
- Caddyfile with WebSocket upgrade support
- Makefile for common tasks
This commit is contained in:
2026-06-26 14:47:29 -04:00
parent aa7854aee2
commit bb5a56816b
32 changed files with 2310 additions and 339 deletions
+42
View File
@@ -0,0 +1,42 @@
.PHONY: build build-web build-server run dev docker-up docker-down clean
# Build everything
build: build-web build-server
# Build the Go server
build-server:
CGO_ENABLED=0 go build -o dumpster-server ./cmd/server
# Build the web frontend
build-web:
cd web && npm run build
# Run the server locally (dev mode)
run: build-server
./dumpster-server
# Run web dev server (in a separate terminal)
dev-web:
cd web && npm run dev
# Start all backing services (no app, run that locally)
docker-dev:
docker compose -f docker/compose.yml up postgres valkey minio livekit coturn -d
# Start everything in Docker
docker-up:
docker compose -f docker/compose.yml up -d --build
# Stop everything
docker-down:
docker compose -f docker/compose.yml down
# Stop and remove volumes
docker-clean:
docker compose -f docker/compose.yml down -v
# Clean build artifacts
clean:
rm -f dumpster-server
rm -rf web/dist
rm -rf web/node_modules