Next.js · Tailwind CSS · TypeScript

WAC TechX launched in February 2025, six months after the idea took shape in August 2024. Built by a team of 3, end-to-end: design, frontend, backend, deploy.
The community ran on WhatsApp threads and word of mouth. Event details lived in scattered messages, the team had no public face, and prospective members or partners had no entry point. Three things broke at once: internal management, portfolio showcase, and inbound outreach. None of them could be fixed by another WhatsApp group.
- Small team → every choice had to be maintainable without dedicated ops.
- Audience on Rwandan mobile networks → page weight and TTFB had to stay tight.
- Zero SaaS budget → had to fit a free hosting tier and a free-tier database.
- Community-editable content → events, team, and resources couldn't be hardcoded.
- Real launch date pressure: the community announcement was already scheduled.
- Considered
- Stay on the Pages Router, which had more docs and was more stable at the time.
- Why
- Server components let us ship database-backed pages without an extra client round-trip, a measurable LCP win on slow connections.
- Considered
- Keep events and team data as MDX files in the repo. Simpler, no DB to run.
- Why
- A PR-and-redeploy loop for every event change would have throttled a community that moves faster than our deploy cadence.
- Considered
- Per-component CSS Modules, cleaner separation of concerns.
- Why
- Velocity. Naming things twice and jumping files would have cost us a feature per week we didn't have on the runway to launch.
Pages are server-rendered on Next.js, reading from a relational database at request time with revalidation on routes that change rarely (team, about). Event listings fetch fresh on each request. Static assets and images run through Next's built-in optimizer. One deploy target, one domain, no edge functions in the critical path.





- Aug 2024Idea locked. First sketches, content inventory, audience map.
- Sep 2024Design system shipped: type scale, color tokens, component primitives.
- Oct 2024MVP scaffold: routing, layout, navigation.
- Nov 2024Events module live: admin entry plus public listing.
- Dec 2024Team directory and resource library.
- Jan 2025Content backfill, perf passes, accessibility sweep.
- Feb 2025Public launch.
A late-stage perf pass found LCP regressing badly on the events page after we added team avatars. Root cause: full-size profile JPEGs were being loaded and resized in the browser.
Two-hour fix: piped everything through next/image with explicit sizes and dropped the manual <img> tags. LCP on the events route dropped from ~3.8s to under 1.5s on a throttled 3G profile.
- No formal metrics tracked at launch.
- The community moved off WhatsApp announcements for events onto the platform.
- Partners now reach out through the contact form instead of cold DMs.
- The team has a single canonical link to share when introducing themselves.
If we started over, we'd build a small admin UI on day one instead of writing seed scripts. Every event added in the early months either ran through a script or was edited in the database directly. Fine for us, but it bottlenecked the people who actually run the community. The admin layer eventually came, but later than it should have.
Explore More
View all →
Aspira
End-to-end civic infrastructure; public issue reporting, admin triage tooling, and a resolution pipeline engineered for accountability.

Dravvy
Browser-first resume infrastructure; guided sections, persistent local state, and a dual-export pipeline engineered for ATS reliability.

Event Lab
A real-time event engine built around speed and zero cognitive overhead; discover, create, and schedule without thinking twice.