STStephen TioluwaniAll work

Client product · 2026

Creative portfolio · CMS + media

Product design & full-stack engineering

OATGRAPHIX

A motion designer’s portfolio that the client can actually operate.

OATGRAPHIX needed to feel like a motion studio, not a template—and the site could not depend on a developer every time a new project video was ready. I built the public portfolio and a small secure publishing system behind it.

The thesis

“The best client portfolio is not only impressive on launch day; it stays useful when the developer leaves.”

Multi-video

Project media

Projects can carry multiple motion pieces rather than flattening a reel into one asset.

Client-owned

Publishing

Portfolio content and contact submissions are managed through a lightweight admin surface.

Server-checked

Admin boundary

The admin password stays in the Convex environment and privileged writes require an expiring session.

01 · The brief

Make the work feel expensive without making the site heavy.

OATGRAPHIX is a Nigerian motion design and animation studio led by Oso Abimbola. The portfolio needed enough movement to communicate the craft while still giving visitors a clear route through projects, about information and contact.

The design work and the engineering work were the same problem: media had to feel central without letting large video assets own the page.

02 · Media pipeline

Cloudinary carries the media; the application carries the story.

Project images and video are delivered through Cloudinary, and the content model supports multiple videos for a project. Upload interactions were refined so adding media does not unexpectedly throw the admin back to the top of the page.

This separation also keeps the app deployment small and gives the studio room to publish heavier work without treating the Git repository as a media library.

03 · Client autonomy

I built the admin as part of the product, not an afterthought.

Convex stores portfolio content, contact submissions and admin sessions. The dashboard lives behind a rate-limited login and every content-changing operation verifies a server-side session.

The password never ships to the browser or Vercel environment. Cloudinary upload signatures are restricted to authenticated OAT operations, and contact data stays behind the private admin API.

04 · Polish

Small interaction bugs matter more on a portfolio.

Recent work included mobile counter triggers, safe responsive breakpoint state, featured-carousel bounds and preserving scroll position after media uploads. None of these are headline features, but they are exactly the details a visual client notices.

What stayed with me

OATGRAPHIX is a client project I like because the technical decisions stay mostly invisible—the work remains the loudest thing on the page.

Next.jsTailwind CSSConvexCloudinaryVercelTypeScript

Next case study

OneStepSmarter

Hardening the workflows a school cannot afford to get wrong.

↗