Adejare Akolawole
Let's talk →
Back to work
Live

Chavica

Drag. Drop. Publish. A website builder for everyone.

Role
Founder & Lead Engineer
Year
2024 – Present
Live site
chavica.com
Overview

Chavica is a no-code website builder — think Wix, but built for the Nigerian and African market. Users drag blocks onto a canvas, customise them, and publish to a subdomain in minutes. I built the full visual editor, template system, real-time preview, and billing from zero.

The Problem

Non-technical people in Nigeria — small businesses, freelancers, artists — have no easy way to get a professional website. Wix and Squarespace are priced in dollars and slow on African internet. Chavica gives them a fast, affordable alternative in their own currency.

What I Built
The visual editor

The hardest part of any website builder. I built a drag-and-drop canvas where users can add, reorder, and configure blocks (hero, gallery, contact form, etc.). Each block has a settings panel. The editor state is a JSON tree that renders both in the editor and at publish time.

Template system

Users start from one of 20+ templates. Each template is a JSON config that seeds the editor. I built a template preview system so users can browse and switch templates before committing.

Publishing & subdomains

When a user hits Publish, the JSON config gets rendered to static HTML and deployed to their subdomain (username.chavica.com). Custom domains are also supported via Vercel's DNS API.

Billing

Freemium model — free plan with Chavica branding, paid plans remove branding and unlock custom domains. Payments via Paystack, with webhook-driven subscription state.

Tech Stack
Frontend
Next.jsTypeScriptCustom drag-and-drop engine
Backend
Next.js API routesNode.js
Database
PostgreSQLPrisma ORM
Publishing
Vercel APIStatic HTML generation
Payments
Paystack
Key Decisions
Custom drag-and-drop over a library

Most dnd libraries weren't flexible enough for a nested block editor. I built a custom engine with drag handles, drop zones, and keyboard accessibility. More code, but full control over UX.

JSON config as the source of truth

Every page is stored as a JSON tree. This makes versioning, templates, and publishing simple — the same JSON renders in the editor and as the final site. It also makes undo/redo straightforward.

What I Learned
  • Editor UX is 10× harder than it looks. Every interaction has 5 edge cases.
  • Start with fewer blocks and nail them, rather than shipping 50 mediocre ones.
  • Publishing pipelines need caching. Every publish should be fast — users get impatient.
  • Freemium conversion is a product problem, not a marketing problem. The upgrade moment has to feel natural.
All projectsWork with me →