Aurora, Colorado · Grandview High School · Class of 2027

Haanie
Mohammed

  1. 01Founder & developer, Vectis Technologies · built VectisOS
  2. 02Regional Director, Steel City Codes · Denver
  3. 03Data Officer, Grandview FBLA
Your words · Q23One line on who you are, the way you'd say it to a friend.
Photo · portrait of you
Live sinceJul 1VectisOS · 2026
Now
VectisOS in daily use at Payless Wholesale119 invoices in the last 28 days3 reps invoicing from the fieldWorks with no signal
VectisOS, by the numbersProduction database · Sept 22, 2026
344invoices created since go-live
283active customers
403store visits logged by reps
442commits · 257 merged PRs
01 — The flagship

VectisOS

Invoicing, inventory, routes and field sales for a wholesale distributor. Solo build. In production every day.

Your words · Q1–Q3How it started: your dad's warehouse, what they used before, the moment you saw the old way was broken.
Photo · VectisOS dashboard (demo data)
Photo · phone
Mobile PWA18 of 59 pages built for reps on the road
Stack
  • Next.js 16
  • React 19
  • TypeScript
  • Supabase · Postgres
  • Row-level security
  • IndexedDB
  • Tailwind v4
  • Google Maps
  • Vitest · CI
Your words · Q6–Q8What you personally did (product, design, database, code, support) and how you used AI, honestly.
Build log
  1. May 17First commit
  2. Jun 16First deploy
  3. Jun 26Security audit, 22 fixes
  4. Jul 1Go-live. First real invoice
  5. Jul 21Offline outbox ships
  6. Jul 24Invoices in one transaction
  7. TodayStill in daily use
02 — What broke, and what I did

Hard problems

#numbers are real pull requests in the VectisOS repo
i.Offline

Reps lose signal. Invoices can't.

  • Outbox in IndexedDB that survives app close and replays on reconnect #273
  • Each phone reserves 50 invoice numbers while online #333
  • A double-tap moved stock twice → idempotency keys #335
Your words · Q9When did no-signal first bite? What happened to a rep?
ii.Correctness

Money and stock have to add up.

  • 16–20 browser calls per invoice → one database transaction #326
  • Showing the next invoice number burned two per invoice #340
  • Only real payments can mark an invoice paid #91
Your words · Q10The moment a number was wrong. How you found out, how it felt.
iii.Security

One account could read another's invoices.

  • Found an IDOR in admin-key routes; callers now prove access #278
  • Money functions were callable logged-out → revoked #251
  • Pre-launch audit: 22 findings fixed #90
Your words · Q11How you discovered it and what went through your head.
03 — Things I built, then deleted
  • Product flavors & daily counts1 month · #338
  • Suggested reorder1 day · #286
  • “Optimize route”#233
  • Barcode scanner#327
  • Par levels → demand meter#229

Knowing what to cut.

Your words · Q12 + Q15Why flavors came out a month later, and what deleting taught you about building for your dad's team.
04 — What I'm building next

VectisOS Desktop

Save to the device first, sync to the cloud after. Every click feels instant, in the office and on the road, with or without signal.

Local-first · planning · fall 2026
Where it feels slow today
  1. 01Saving invoices & payments
  2. 02Page loads & switching screens
  3. 03The office computer
  4. 04Reps' phones in the field
The plan: local-first
  • Invoices, payments and inventory save to a local database on the device first
  • Changes sync to Supabase in the background
  • Builds on the offline outbox reps already use on their phones (#273)
Your words · Q25Why a desktop app, what 'slow' costs your dad's team day to day, and what fast would change.
05 — Beyond Vectis

Teaching, organizing, competing

Photo · teaching at SCC summer camp

Steel City Codes

Nonprofit
Regional Director, Denver · Web Developer, national
  • Built a registration platform where volunteers pick their own classes, replacing hours of manual matching. Denver pilots it in February.
  • Moved the national site off Squarespace to Cloudflare Pages; keep course and chapter info right across 12 regions.
  • Wrote curriculum for intermediate Python and MicroPython on Raspberry Pi Pico; teach at the two-week summer camp.
Your words · SCCVolunteer to director: what you took on that nobody asked you to.

FBLA data system

React · Firebase
Data Officer, Grandview FBLA

Inherited the chapter's system and rebuilt it. Placement data imports automatically, so who qualifies for state is settled before anyone fills out a form. Replaces Google Forms and spreadsheets.

Your words · FBLAWhat was broken when you got it.

DECA

2nd
State · Integrated Marketing Campaign–Product

A campaign pitching Meta smart glasses to the blind and low-vision community. State qualifier every year competed.

Your words · DECAWhy that audience?
06 — Why I build
Your words · Q24 + Q25Why this matters to you, who it's for, and what you want to build next. This is the impact section: set big, like a pull quote.
— Haanie
07 — Off the clock

Colorado, mostly outside

Photo · snowboarding
Snowboarding
Photo · hiking
Hiking
Photo · pickleball, daily in season
Pickleball, daily in season
Photo · friends
Friends