Josh Ramirez
← Field guide

Entry 16 of 23

Departed Summer 2024

NHS service trackingWeb appArchived
Side-by-side Serveable pitch image — left, MobileServe homepage with scouts gathered around a paper map and a blue Request a Demo button; right, clean beige Serveable landing page and admin overview preview with the headline 'Stop Fighting Your Software. Start Tracking Service.'
MobileServe, then Serveable. The whole pitch in one frame.

Departure

Every NHS kid gets pushed into MobileServe, and nobody likes it — a cluttered legacy dashboard with side-nav pie charts and line graphs piled on top of each other, fronted by a marketing site whose hero is a teacher kneeling over a paper map next to a bright blue Request a Demo button. The work admins actually do is one verb (approve or reject). The work students actually do is one number (how many approved hours, how far from the NHS goal). Serveable was the kinder rebuild — student portal, admin portal, hour logs, approvals, charts, PDF exports, Supabase auth — sketched in a notebook before any code touched the editor.

Approach

5 tools

  • Next.js
  • Supabase
  • Vercel
  • Cloudflare R2
  • DreamHost

Two portals — student and admin — sharing one Supabase schema, one auth flow, and one set of approval rules. No second app to keep in sync.

Field log

8 entries

  1. Day 1 — notebook before code

    Opened a notebook and drew the whole thing on graph paper before touching the editor. Big approved-hours number for the student. KPI cards for the admin. The sketch was the spec.

    Blurred notebook spread of hand-drawn Serveable wireframes — admin overview, approvals queue, student hours screens, group settings, pricing, landing page, and dashboard notes sketched in pencil across two pages
    The spec, in pen.
  2. MobileServe is painful

    Pulled up the incumbent for reference. The dashboard was a blur of side navigation, KPI boxes, donut charts, monthly bar charts, map widgets, and reports. Useful data was in there somewhere, but the interface made every answer feel far away.

    Blurry MobileServe legacy organization overview dashboard — blue side navigation, KPI cards, service category donut chart, monthly service-hours bar chart, map widget, and stacked dashboard panels
    MobileServe dashboard — the thing to beat.
  3. Stack picked

    Next.js on Vercel for the app, Supabase for auth and Postgres, Cloudflare R2 for hour-log photo proof, DreamHost holding the domain from a previous life. Boring stack on purpose — the interesting part was the UI.

    Serveable tech stack collage — DreamHost wordmark, Vercel triangle and wordmark, Next.js logo, Cloudflare logo, and Supabase logo arranged on a pale green background
    Five logos, one boring stack.
  4. Six logos to a leaf

    Ran a continuous-line 'S' through six iterations, basic loops to a single green stroke forming an 'S' inside a leaf. Wordmark settled on ServeAble. Service plus growth, in one stroke.

    Six ServeAble logo draft lockups on a white background — three green symbol directions paired with the ServeAble wordmark, including a leaf-shaped S, an arrow-like S leaf, and a sharp lightning-check mark
    Six drafts to the leaf-S.
  5. Landing in beige

    Mockup landed. "Stop Fighting Your Software. Start Tracking Service." on a clean minimalist beige background. Three pillars underneath: Effortless Efficiency, Unbeatable Value, The Personal Touch. The opposite of a stock-photo paper map.

  6. Admin Overview, first cut

    Four KPI cards across the top — Active Volunteers, Pending Submissions, Total Approved Hours, Est. Economic Impact — with charts and the approval queue underneath. The whole admin job is a queue. The dashboard tells you how big it is.

    Serveable admin dashboard screenshot — cream sidebar navigation, KPI cards for active volunteers, pending submissions, total approved hours, and estimated economic impact, with hours logged and hours by category charts below
    Admin dashboard: the queue, the totals, and the shape of the hours.
  7. The 16.00 reveal

    Student dashboard came together around a massive green 16.00 — Total Approved Hours — with progress bars for My Group Goals (NHS) right under it. Recent Activity down the side reading "Walked some dogs." Everything else on the page was deliberately small.

    Serveable student dashboard screenshot — cream sidebar with Josh Ramirez profile, large green 16.00 Total Approved Hours, Log Hours button, My Group Goals progress bars for 2027 and NHS, and Recent Activity entries including 'Walked some dogs'
    16.00. The student's whole product.
  8. Admin charts, second pass

    Detailed admin view added: a scatter-line graph for Hours Logged (Last 12 Months) and horizontal bar charts for Hours by Category — Sponsored, Animal Support, Education. The KPIs answer how much. The charts answer where it came from.

From the gallery

3 figures

Early Serveable student dashboard skeleton — black-outlined wireframe with sidebar navigation, approved hours card, pending submissions, member-since card, Log New Hours button, and Recent Activity rows
Before polish: the student dashboard skeleton.
Serveable admin dashboard showing organization service activity, KPI cards, monthly hours chart, category bars, and pending submissions panel
The admin side became one calm operating view.
ServeAble logo draft sheet showing leaf-S, arrow-S, and check-mark logo directions in green with matching wordmarks
The mark took a few wrong turns first.

What I came back with

Student + admin portals, in development

Lesson from the terrain

Replacing incumbent school software is mostly a subtraction problem — MobileServe wasn't missing features, it was drowning in them, and the kinder version is the one that surfaces a single number to a student and a single verb to an admin. Six logo drafts to land on a leaf-shaped 'S' felt like overkill until I noticed I was iterating on the same thing the dashboards were iterating on: how little can sit on the page and still mean what it needs to mean.

Cross-links