Two kinds of data
Content is what the public site renders. Each row is written in one language, recorded in lang ("ar" or "en").
| Model | Holds |
|---|---|
Event | Events, with speakers and registration |
Program | Programs and their modules |
Opportunity | Jobs, grants, fellowships and tenders |
Story | Editorial stories |
Person | Community member profiles |
Company | Community company profiles |
Partner | Partners and sponsors |
Operations is what visitors submit and staff act on.
| Model | Holds |
|---|---|
BookingRequest | Booking requests with a reference code |
EventRegistration | Registrations for events |
ProgramApplication | Applications to programs |
Enquiry | Contact-form enquiries |
Time
Everything is stored in UTC and displayed in Africa/Khartoum (UTC+2, no DST). Form dates and times are interpreted as Port Sudan wall time in src/lib/time.ts.
Two runtimes, one client
src/lib/db.ts exports a single db:
- Cloudflare Workers — Neon's serverless driver, one client per request.
- Node (local development, scripts) — one pooled
node-postgresclient.
pnpm db:migrate # create and apply a migration
pnpm db:deploy # apply migrations in production
pnpm db:studio # browse the data