Platform Technical Overview
قريباًcomingPlatform Technical Overview
Who this document is for
- Developers who want to contribute to or understand the codebase
- Technically curious readers who want to know how the platform is built
- Hub admins who want to understand how their data is stored and used
What the platform is
- [A bilingual web application — Arabic and English throughout]
- [Designed for resilience: works on low-bandwidth connections, no heavy JavaScript]
- [Open source — [link to repository when public]]
How the site works — the basics
- [Server-rendered HTML: every page is generated on the server, not in the browser]
- [Why this matters: works on slow connections, no JavaScript required to read content]
- [Bilingual: every page is available in Arabic and English simultaneously]
Current version (v0.1 — MVP)
- [What is live: informational pages + proof-of-concept features with sample data]
- [No database yet: content comes from JSON files]
- [Hub registration: the one interactive feature — form, JSON download, email notification]
Planned versions
| Version | What it adds |
|---|---|
| v0.2 | Database (seed catalogue, hubs, stock, gardens stored properly) |
| v0.3 | Admin interface (hub admins can log in and manage their hub) |
| v0.4 | Map (hub and garden locations) |
| v0.5 | Stock management and event history |
| v1.0 | Full feature set, individual seed wiki pages |
Tech stack (for developers)
- [Runtime: Bun]
- [Framework: Hono]
- [Language: TypeScript]
- [Database: SQLite (v0.2+)]
- [No client-side JavaScript frameworks]
How to run it locally
bun install
bun run dev
- [Prerequisites: Bun installed]
- [Environment variables needed: see .env.example]
How to contribute
- [Contribution guide placeholder]
- [How decisions are made: ADRs in docs/adr/]
- [Domain glossary: CONTEXT.md]
- [Code conventions: CLAUDE.md]
Privacy and security
- [Minimum data collection — see docs/adr/0002-privacy-by-design.md]
- [No personal names stored]
- [Hub locations are approximate, not precise]
- [Why this matters for participants in Gaza]
Architecture decisions
Key decisions and their reasoning are recorded in docs/adr/. Notable ones:
- [ADR-0001: Why sowing windows use month arrays instead of ISO week numbers]
- [ADR-0002: Privacy by design — why we minimise personal data]
- [ADR-0003: Hub Code format — why random letters, not sequential numbers]
- [ADR-0004: Working bee times stored as local datetime strings]