Engineering work
Nile Code Education Platform
A multi-tenant education management platform, built and operated by Nile Code and running in production for real learning centres.
- Every query scoped to one centre, with composite foreign keys so a row can never reference another centre's data.
- Business rules held by the database where it can hold them: partial unique indexes, exclusion constraints on timetables, triggers for invariants a CHECK cannot see.
- An append-only fee ledger with receipts, waivers and a payment gate that opens access in the same transaction as the payment.
- Periodic jobs coordinated by PostgreSQL advisory locks, each idempotent and bounded by a look-back window.
- Scheduling, live classes with host-supplied meeting links, attendance, exams with automatic marking, and certificates.
- Stateless signed-cookie sessions; no token stored in the browser.
Engineering areas
- Go
- PostgreSQL
- Next.js
- Multi-tenancy
- Role-based access
- Bilingual RTL/LTR
Cloud asset processing platform
Ingesting and processing media from Google Drive and Dropbox, reliably, at the pace the cloud APIs allow.
Engineering areas
- Go
- PostgreSQL
- Redis
- OAuth
- Cloud APIs
- Persistent queues
- Deduplication
- Retry handling
- Media processing
AI-powered asset search
Semantic and hybrid search across media assets, with AI-generated descriptions and metadata feeding the index.
Engineering areas
- Go
- PostgreSQL
- pgvector
- Embeddings
- Full-text search
- Query rewriting
- AI-generated metadata
Real-time systems
Backends where data arrives continuously and has to be answered as it arrives.
Engineering areas
- WebSockets
- Streaming
- AI services
- Asynchronous processing
- Real-time communication
Document processing
Pipelines that take PDFs and images in and hand structured, validated data to downstream APIs.
Engineering areas
- Structured extraction
- AI processing
- Validation
- Caching
- Human review
- Downstream APIs
Have a system that has to be right?
Tell us where the data moves and where it goes wrong. The first conversation is technical: the systems involved, the boundary that matters, and what a first sprint would produce.