Coursework chat application implemented end-to-end as a single-binary Go service. Scope is deliberately a homework baseline, not a production system.
Problem
The course brief required a self-contained chat service with REST endpoints, persistent storage, an OpenAPI contract, and a UI good enough for grading and manual QA — shipped as one buildable artifact.
What I built
A Go HTTP service exposing authenticated REST endpoints for users, rooms, and messages, backed by SQLite for durable storage. The Vue frontend is built and embedded into the binary so the service ships as a single executable.
Technical components
- Backend
- Go (modules + vendoring),
cmd/webapidaemon,service/apihandlers - Storage
- SQLite via database/sql
- API
- REST, documented in
doc/as an OpenAPI spec - Auth
- Simplified token-based session model (coursework-grade)
- Frontend
- Vue + Vite + Bootstrap, built and embedded into the Go binary
- Tests
- Go test suite covering HTTP layer + storage round-trips
Evidence / outputs
- Working single-binary build that boots, serves the embedded UI, and exercises every API endpoint end-to-end.
- OpenAPI document under
doc/as the contract source-of-truth.
Current status
Archived. The course grading goal was met; not actively expanded.
Limitations
- Course-grade authentication; not hardened for production.
- Single-node, SQLite-backed; no horizontal-scaling story.
- WebSocket / streaming intentionally out of scope; REST polling is the transport.
- No comparative benchmark — this is an implementation exercise, not a research artifact.