Skip to main content
Clinton Agada
Case study · Veraclins · launching 2026

Edulinks.ng Nigeria's learning platform, on the company's own stack.

Nigeria's first educative platform: somewhere to learn, share what you know, and build toward a career - questions and answers, reputation, study groups, moderation. I founded it and lead engineering across a team of ten. It is built on our shared design system and tooling, and launches publicly in July 2026.

RoleFounder & lead engineer
Team10 engineers
StackReact Router 7 · Prisma · Postgres
StatusLaunching July 2026
650+Icons · in-house system
40+Components · in-house system
38Data models
Jul ’26Public launch

What's inside the platform

Reuse

Built on the in-house system

Edulinks runs on @veraclins-dev/ui - the Radix + Tailwind component library and 650-icon set I had already built and hardened. The product layer moves fast because the UI layer is solved.

Data

A schema modelled once

Postgres with Prisma, modelled the way the migration work taught me: relationships explicit, Q&A flows first-class, and trust entities present from the beginning.

Trust

Trust & safety, designed in

Validation queue, validator decisions, reputation events, reports, and appeals are in the schema from the first commit instead of being bolted on after launch.

The thesis

For two years I built the load-bearing parts of other people's products - a design system, a data migration, an editor. Edulinks.ng is the question that turned that into a company.

Edulinks is Nigeria's first educative platform - somewhere to ask the question the course outline does not answer, share what you know, and build toward a career.

The approach

I spent the novelty budget on the product, not the stack. The app is a React Router 7 server-rendered front end over a Postgres database modelled with Prisma - boring, on purpose.

The architecture choice that matters most is the shape: an Nx modular monolith with clean package boundaries kept separate enough that a ten-person team can work without stepping on each other.

The fastest way to ship a product is to have already built the boring parts, on someone else's clock, two years earlier.Note to self, founding Veraclins

The hard bits

  • Reuse versus extend. Knowing when to use a shared component as-is and when to extend it without forking the library is a weekly call.
  • Trust and safety from the schema up. A community product fails on moderation, not features, so reports, appeals, validation, and reputation are first-class entities.
  • Auth you can defend. Scrypt-hashed passwords, hash-only tokens, single-use reset challenges, and session revocation on reset.
  • Monolith discipline. A modular monolith only pays off if the boundaries hold when a shortcut would be quicker.

What I'd do differently

I would keep the launch surface narrower than instinct wants. A community needs a reason to have its first hundred good answers before it needs its hundredth feature.

Everything about leaning on the foundations, I would do again. The whole reason the company exists is that the plumbing was already there.

AccountsSecure identity & onboardingScrypt-hashed passwords, hash-only tokens, passkeys, session revocation.
Q&AQuestions, answers, comments, votesThe core loop people come for.
GroupsStudy groups · membership · invitationsWhere the community gets sticky.
ReputationStanding earned across contributionsReputation events tie answer quality to trust.
Trust & safetyValidation queue · moderation · appealsDesigned into the schema, not bolted on.
PlatformReact Router 7 · Prisma · Postgres · NxOne modular monolith, clean boundaries.
Next03

Read another case study

20212022

Mongo → Postgres — zero-downtime migration

A two-way sync, a phased cutover, and a healthcare platform that stayed online for the entire migration.

Read →