Alikamatu Osama

Full Stack & Mobile Engineer Building Production SaaS Systems, Native Apps & AI Workflows

I'm a full stack and mobile software engineer based in Accra, Ghana. I design, build, and operate production web and native applications end to end including system design, backend APIs, AI integrations, and the interfaces real users depend on every day across web, iOS, and Android.

Cairn

Personal productivity SaaS with a context aware AI assistant

Cairn is a freemium productivity SaaS I designed and built from scratch. Most productivity apps make you manage the app, not your work Cairn gives you one screen for what matters today, connects daily tasks to quarterly goals, and drafts your weekly reviews from your own data with an AI assistant that has full context. 30 routes across marketing, authed app, billing, and an admin surface. Installable as a PWA with web push habit reminders. Shipped with Paystack for Ghana local billing in GHS.

Free + GH₵70/mo or GH₵640/yr

Pricing

5 (OKLCH based)

Themes

30+ across marketing, app, API

Routes

Anthropic Claude Sonnet 4.5

AI provider

Paystack (GHS)

Payments

Installable + offline shell

PWA

Web Push (VAPID)

Push notifications

Beta

Status

01.

Screenshots

Cairn Today board

Today view tasks, habits, focus timer, and a daily quote on one screen with full keyboard navigation.

02.

My Role & Scope

Sole engineer product, design system, full stack Next.js, AI integration with Anthropic Claude, Paystack subscriptions, Cloudinary uploads, VAPID web push, service worker, and production docs.

03.

Tech Stack

Next.js 16
React 19
TypeScript
Tailwind CSS v4
Zustand (persist)
Motion
Lucide
Anthropic Claude Sonnet 4.5
Resend
Paystack (GHS)
Cloudinary
Web Push + VAPID
Service Worker (custom)
Zod
date-fns
04.

Key Engineering Decisions

  • 01

    Local first architecture Zustand with persist middleware as single source of truth across pages. Every mutation runs synchronously; no network round trips block the UI. The action API is shaped so a future DB swap (MongoDB / Postgres) replaces only the action bodies, not component contracts.

  • 02

    Custom design system instead of a UI library five themes via CSS variables (OKLCH), zero borders / blur / glass / colored shadows. Includes hand built DatePicker, TimePicker, Select, Modal, Popover, and a ~80 LOC markdown renderer to keep the bundle tight.

  • 03

    Streaming AI with classified errors every AI surface (chat, plan my day, goal diagnose, task breakdown, note assistant) streams Claude responses via ReadableStream. Errors are mapped to typed kinds (no_credit / rate_limit / auth / overloaded) and rendered as markdown inside the same stream, so the UI never has to handle a separate error path.

  • 04

    Keyboard first interaction ⌘K command palette with fuzzy matching, chord nav (g t for Today, g j for journal), quick add (N), cheatsheet (?), and per modal focus traps. Every native form control replaced with custom primitives so the experience is identical across browsers and themes.

  • 05

    Paystack billing in GHS Pro at GH₵70/mo or GH₵640/yr (saves GH₵200). HMAC SHA512 webhook signature verification with timing safe compare; invoice list pulled live from the Paystack API.

05.

Hard Problem Solved

Challenge

A local first store powered by Zustand persist creates a server/client hydration mismatch on every authed page: the server has no localStorage, so it renders the seed; the client rehydrates and renders the user's real data. React flags this as a hydration error and discards the tree.

Solution

Built a 30 line Hydrated wrapper at the layout level that renders a structural skeleton on both the server and the first client paint, then swaps to children after the store rehydrates. No mismatch, no flash, one render. The same primitive removes a whole class of bugs across every store backed page.

06.

What Broke in Production

Pre launch beta actively used for personal daily planning. Service worker initially intercepted /api/* during PWA install, briefly breaking the streaming AI responses. Fixed by adding an explicit URL path check in the SW fetch handler and version prefixing every cache so old caches purge cleanly on each new deploy.

07.

What I Would Improve Next

Wire MongoDB for cross device sync and persistent push subscriptions. Ship Google Calendar / ICS sync. Add a Vercel Cron job for goal at risk nudges (the endpoint is already wired). Add MFA. Move soft delete retention enforcement from client side to a server side cron once the DB lands.

Cairn

Personal productivity SaaS with a context aware AI assistant