This is a backend application developed to replace the serveless backend of davida mobile app
# davida-backend
## What Davida is
Kidaw'ida (Dawida) is a Bantu language spoken by the Taita people of
southeastern Kenya. It has little formal documentation — no
comprehensive dictionary, most of it living only in older speakers'
memory rather than anywhere written down. Davida is a mobile app that
turns that into a crowdsourced, community-verified lexicon: anyone can
add a word, propose a meaning in English or Kiswahili, record its
pronunciation or share a photo of something culturally significant
with a caption read aloud in Kidaw'ida. Other contributors vote on
proposed meanings, so an entry converges on a verified definition
instead of staying one person's guess and a "language health"
dashboard tracks coverage across the whole community rather than just
one phone. See Screenshots below for what that looks
like in the app.
This repo is the backend that data lives in — Go + PostgreSQL, built
for the Flutter app above (not in this repo).
The shipped app currently talks directly to a serverless backend from
the client; this is a ground-up rewrite of that backend into a proper
layered API, designed to replace it. See
`db/migrations/000001_init_schema.up.sql` for the full data model.
**Status:** every layer is wired end-to-end and the core flows have
been exercised for real (signup → JWT → create entry → propose meaning
→ vote → stats → sync → upload, all against `docker compose up`) — but
see Not yet implemented for what's still
required before a real cutover (account deletion, password reset, rate
limiting and more). **Not yet deployed or wired into the shipped
app**, which still talks directly to the original serverless backend
while this migration is in progress.
## Screenshots
The Davida Flutter app (not in this repo) — the client this backend is
being built to replace the serverless backend layer for:
| Home | Browse entries | Word details |
|:---:|:---:|:---:|
| | | |
| **Home** — Overview and contribution entry point | **Browse** — Search and …