MAMATHA EPILI / ENGINEERING & AI
Selected work

Platform build2026Active

Edu-Streak

One contract, two repos — drift made impossible

Stack

Frontend
  • Angular 21
  • Signals
  • TypeScript
Backend & Data
  • Go
  • MongoDB
  • REST

Problem

Two-repo setups drift: the backend changes a handler, the frontend's hand-written client rots, and the bug surfaces at runtime. This treats the API contract as the single source of truth and makes the frontend data layer a generated artifact.

What I built

  • A Go and MongoDB API with an Angular 21 admin built on signals.
  • A generator that scans Go handlers and structs and emits matching TypeScript interfaces and injectable services.
  • Type mapping handled at generation time, including database identifier types.

Technical decisions & trade-offs

  • Types generated from the handler itself, so drift stops being possible rather than merely discouraged.
  • Signals-first state in the admin — no store library for a surface this size.
  • The generator ships as a repeatable command plus a conventions file, so regeneration is a habit rather than a project.

Outcome

Backend-to-frontend binding reduced to a single command. In active development.

Permalink: https://www.mamathaepili.com/projects/edu-streak