Selected work

sheet 04 · 2025–Now

adsVase Platform

A social advertising platform: feed, reels, realtime chat and AI-assisted creation.

Role
Founding Frontend, adsVase · Building
Built with
Next.js 16 · React 19 · TanStack Query · Socket.IO
Support
Search users, ads, and vases...3

Kora Studio

2 hours ago

Terracotta No. 4, back in the shop

Hand-thrown, wide-mouthed, unglazed outside. Twelve made, six left after the weekend market.

₦48,000

12814

Recommended Vases

atelier.nb

@ateliernb

Spring glazes

Ash, celadon, oxblood — 14 pieces

412389

Kora Studio

@korastudio

Studio seconds

Small chips, smaller prices

287216

Meridian Supply

5 hours ago

Field notebooks, restocked

Sewn spine, 90gsm, opens flat. Three sizes.

₦9,500

768
Finish setting up2 of 4

Add a profile photo

Put a face to the name

Write a short bio

Say what you do in a line

Add a cover photo

Give your profile a backdrop

Share your first post

An ad, an article or a vase

Accounts to FollowSee All

Kora Studio

@korastudio

Meridian Supply

@meridian

atelier.nb

@ateliernb

Field & Flint

@fieldflint

Home: the feed, its rail and the shell that holds them
Support
Search users, ads, and vases...3

Kora Studio

2 hours ago

Terracotta No. 4, back in the shop

Hand-thrown, wide-mouthed, unglazed outside. Twelve made, six left after the weekend market.

₦48,000

12814

Recommended Vases

atelier.nb

@ateliernb

Spring glazes

Ash, celadon, oxblood — 14 pieces

412389

Kora Studio

@korastudio

Studio seconds

Small chips, smaller prices

287216

Meridian Supply

5 hours ago

Field notebooks, restocked

Sewn spine, 90gsm, opens flat. Three sizes.

₦9,500

768
Finish setting up2 of 4

Add a profile photo

Put a face to the name

Write a short bio

Say what you do in a line

Add a cover photo

Give your profile a backdrop

Share your first post

An ad, an article or a vase

Accounts to FollowSee All

Kora Studio

@korastudio

Meridian Supply

@meridian

atelier.nb

@ateliernb

Field & Flint

@fieldflint

Create ad

Shop now

Headline

33/60

Terracotta No. 4, back in the shop

Description

97/280

Hand-thrown, wide-mouthed, unglazed outside. Twelve made, six left after the weekend market.

Price

₦48,000

Destination link

korastudio.shop/terracotta-4

Save as draftCreate Post
Create: the ad composer, with Adora on the copy fields
Support

Messages

Search conversations...

allunreadprioritize

Saved Messages

Only visible to you

Kora Studio

12:04

Sending the invoice tonight — sizes confirmed.

Meridian Supply

11:20

Can we run the notebook ad through Friday?

atelier.nb

Yesterday

The celadon batch photographs better in daylight.

Field & Flint

Yesterday

Attached the two crops you asked for.

Adora

Mon

Here are three headlines for the restock post.

Kora Studio

Online

Today
Morning — the terracotta ad went live at nine.

11:58

Saw it. Sending the invoice tonight, sizes confirmed.

12:01

Do you want the wide crop on the second slide?

12:03

Yes, and keep the CTA on the first one only.

12:04

Type a message...
Messages: realtime threads, in the dark scheme

§01Overview

A 52-route App Router application plus the admin console the team runs it with: feeds, discovery, a reel composer, direct messages and an in-house AI assistant. Shipping something media-heavy and social-grade with a small distributed team means creation flows that cannot lose work, and auth solid enough to bill advertisers on.

§02Architecture, and why

  • A design system of 37 custom primitives

    Radix with variant-driven styling instead of an off-the-shelf kit, so every surface assembles from the same audited parts.

  • Composer steps as isolated modules

    Each of the wizard's three steps owns its state and validation, so new ad formats slot in without touching the shell.

  • Parallel and intercepted routes for overlays

    Comments open as a modal over the feed, and the same URL renders as a full page when it is shared.

  • A BFF proxy layer in route handlers

    Uploads and authenticated calls stream through route handlers, so the browser never holds a direct line to the API.

  • Hardened Auth.js session layer

    Refresh sixty seconds early, user-ID pinning that kills mismatched sessions, and environment-scoped cookies so staging cannot poison production.

§03Engineering highlights

  • Drafts that survive anything

    A two-layer autosave debounces composer state and image files into localStorage against an explicit quota budget.

  • One video player, two engines

    A single hook drives native video and the YouTube IFrame API identically, down to polling for the updates YouTube omits.

  • Realtime, frugally

    Two singleton sockets survive token rotation without reconnecting, and reel views batch into one flush per session.

  • Adora AI, everywhere it helps

    The assistant writes ad copy, enhances bios and suggests replies through dedicated server actions, not a bolted-on widget.

  • An ops console to match

    A second app for moderation, audit log, user management and dashboards, so operating the platform never means opening the database.

  • A CI gate that boots the real app

    Every merge lints, builds, then starts a production server and probes live routes.

§04Impact

2x
faster feature rollout on the shared design system
52
routes across the consumer app
37
design-system primitives powering every surface

next sheet

adsVase Mobile

The native companion: reel editor, realtime chat and AI on the go.