Projects

40 projects across computer vision, applied ML, full-stack products, developer tooling and research.

Page 3 of 4

Natural Proofs (Predicate Logic Editor)

Browser editor for formalizing an argument in predicate logic: each sentence is written in plain English, the app builds the formula, checks whether the conclusion follows, and shows a counterexample when it does not.

TypeScriptReactViteVitestTesting LibrarylocalStorageCSS

Status: In Progress (2026)

Role: Personal Project

Key Features:

  • Sentence builder needs no symbols typed: quantifier, noun-phrase, relation and compound-clause forms produce first-order formulas, each shown with a plain-English reading.
  • Two independent checkers: a bounded countermodel search over situations of up to four things, and a clause-form refutation that closes the proof.
  • Verdicts limited to must-be-true, must-be-false or cannot-be-determined, with a named search bound and "couldn't settle" rather than a guess.

FreeTime (Activity Scheduler)

Dynamic activity scheduler that answers "what should I do now?": it scores the user's activities and returns a suggestion set fitting a chosen time budget, each pick carrying a human-readable rationale.

TypeScriptNext.jsReactTailwind CSSUpstash RedisModel Context Protocol SDKZodNode.js

Status: In Progress (2025)

Role: Personal Project

Key Features:

  • Scoring multiplies importance by a square-root recency boost, a preferred-day bonus, and a category-repetition penalty that decays over days.
  • Budget-aware selection loops weighted-random picks until the time budget is exhausted, recomputing every remaining weight after each pick.
  • Next.js server actions persist activities to Upstash Redis, with a one-time migration from a local activities.json on first read.

The Data Community, UNILAG (Community Platform)

Campus platform for Data Community UNILAG: a Strapi 5 CMS and API behind a React Router 7 server-rendered site, a six-step Datathon registration wizard, and a password-gated admin review table.

TypeScriptReact Router 7Tailwind CSS 4Strapi 5PostgreSQLSQLiteCloudinaryNodemailerRailwaypnpmDocker

Status: In Progress (2026)

Role: Community Platform (Full-Stack)

Key Features:

  • Registration rule engine with 13 hard and 4 soft rules in shared TypeScript, mirrored client-side for instant wizard feedback while the server copy stays authoritative.
  • 32 Strapi content types split across public content, blog, identity/portal, and registration surfaces.
  • Append-only points ledger: a member's score is SUM(delta), never a stored column, and corrections are posted as new rows.

Rickbert Fashion (Client Storefront)

Fashion storefront: a React and Vite shop with cart, multi-step checkout, Paystack payment and order tracking, backed by a Strapi 5 API that verifies transactions server-side before creating orders.

TypeScriptReactViteTailwind CSSStrapi 5PostgreSQLSupabasePaystackRenderpnpm

Status: Completed (2025)

Role: Client Project (Full-Stack)

Key Features:

  • Custom Strapi checkout service calls Paystack's verify endpoint and only creates an order when the transaction status is success.
  • Verification is idempotent: an existing order with the same paymentReference short-circuits instead of creating a duplicate.
  • Order content type with shared address and order-item components, plus separate paymentStatus and orderStatus enumerations.

Amari Girls (Foundation Website)

Website for the Amari Girls foundation: a Next.js 16 frontend over a Strapi 5 backend, covering programmes, gallery, board and testimonials, plus a volunteer form, newsletter signup and Paystack donation campaigns.

TypeScriptNext.js 16React 19Tailwind CSS 4Strapi 5PostgreSQLSQLiteCloudinaryPaystackpnpm

Status: Completed (2026)

Role: Client Project (Full-Stack)

Key Features:

  • Strapi content types for programmes, events, gallery items, board members, donation campaigns, reports, partners and volunteer roles.
  • Section-level CMS merge against hardcoded defaults, so every page still renders when Strapi is unreachable or a section is missing.
  • Donation page using Paystack inline checkout with preset amounts, impact tiers and campaign goal progress bars.

Adeyemi Gbemileke (Portfolio Site)

Portfolio site for an engineering student working in 3D modelling and design: a React Router 7 server-rendered frontend driven by a Strapi 5 backend, with project detail pages and a star-field hero.

TypeScriptReact Router 7Tailwind CSSStrapi 5Dockerpnpm

Status: Completed (2026)

Role: Client Project (Full-Stack)

Key Features:

  • Strapi content types for profile, project, experience, skill and social link, fetched through @strapi/client with one typed module per resource.
  • Home route loader fires all five CMS fetches in parallel and renders the sections from loader data with fallbacks.
  • Dynamic projects/:slug route for per-project detail pages.

Kakka (Agency Enquiry Backend)

Client site whose Strapi 5 backend captures service enquiries across web development, UI/UX, marketing and consulting. The Next.js 15 frontend is still at scaffold stage.

TypeScriptStrapi 5Next.js 15React 19Tailwind CSS 4PostgreSQLRender

Status: In Progress (2025)

Role: Client Project (Full-Stack)

Key Features:

  • Strapi Request content type with a required service enumeration, company name, budget text and contact fields.
  • Render blueprint provisioning the Strapi service with Postgres and JWT environment variables.

Hairs by Solomon (Salon Storefront)

Hair salon storefront: a Create React App frontend with shop, product detail, wishlist, login and product upload pages, plus a small Express API and Firebase for auth, database and image storage.

JavaScriptReact 18Create React AppReact Router 6ExpressFirebaseVercel

Status: In Progress (2024)

Role: Client Project (Full-Stack)

Key Features:

  • React Router 6 SPA with shop, product detail, new-product upload, wishlist, login and contact routes under a shared root layout.
  • Express API split into post and user routes over a shared HttpError model.
  • Firebase Realtime Database, Storage and Auth clients initialised in a single module.

Awofeso Aisha (Analyst Portfolio)

Single-page portfolio for a data analyst, built as one static HTML file with Tailwind from a CDN, presenting projects and Medium articles as linked cards.

HTMLTailwind CSS

Status: Completed (2025)

Role: Client Project (Static Site)

Key Features:

  • Entire site is a single index.html, with custom card, hover and dark-theme styling in an inline style block.
  • Section layout of hero, about, project-card grid, article list and a social-linked footer.
Data Community Anonymous (Game Night Wall)

Data Community Anonymous (Game Night Wall)

Anonymous message wall built for a Data Community UNILAG game night: a React Router 7 server-rendered page backed by Supabase, where visitors post without signing in and can flag inappropriate messages out of public view.

TypeScriptReact Router 7React 19Tailwind CSS 4Supabasereact-hook-formDocker

Status: Completed (2025)

Role: Community Project (Event Tool)

Key Features:

  • Supabase access isolated in one typed client module; the feed query filters flagged rows and caps results at the 50 newest messages.
  • Flagging writes is_flagged to Supabase and drops the message from the client list immediately.
  • Deliberately unauthenticated single-route app with a Dockerfile for deployment.

Personal Portfolio Website

Personal site and blog: a React Router 7 server-rendered frontend backed by a Strapi 5 CMS, with posts, categories, tags, comments, likes, RSS and draft preview. Earlier iterations were Next.js and React/Express versions.

TypeScriptReactReact Router 7Strapi 5Tailwind CSSVitePostgreSQLSQLiteCloudinaryDocker

Status: In Progress

Role: Personal Project

Key Features:

  • React Router 7 SSR frontend with routes for the blog index, post, category and tag pages.
  • Strapi 5 content types for blog posts, projects, experience, categories, tags, comments and post stats.
  • Reader comments and post-like counters persisted through Strapi and server-side loaders and actions.

Doc-On (Appointment Booking)

Next.js 14 appointment-booking interface for a healthcare service, with separate doctor and patient auth, a responsive multi-month calendar, doctor previews and a dashboard messages page.

TypeScriptNext.js 14React 18Tailwind CSSRadix UIHeroicons

Status: In Progress

Role: Personal Project

Key Features:

  • App Router route groups separating auth, marketing and dashboard areas.
  • Server actions posting to an external BACKEND_URL API, storing the JWT in a cookie and attaching it through a fetchWithAuth helper.
  • Booking calendar rendering one, two or three months depending on viewport width.