
// flagship
The UnOfficial
An NBA fan blog and publishing platform with a full CMS — multi-writer auth, draft workflows, and a voice that sounds like your group chat.
const roles = ['engineer', 'writer', 'product_minded'];
Full-stack engineer who moves fluently between architecture, content, and delivery — turning messy problems into production software. Currently building side apps that people actually use.
I'm a full-stack engineer who started out wanting to build the apps I wished existed — a fantasy league for Survivor, a blog that sounds like my group chat, a passport for drinking pints. I kept building them, one at a time, until the pattern clicked: good product is what happens when engineering, writing, and delivery all point the same direction.
So that's how I work. I design data models that make the product feel fast. I write copy that makes features explain themselves. I cut scope when shipping beats perfecting — and I document the why, so the next person (usually future me) doesn't have to guess.
Currently shipping side projects around Next.js + Firebase, writing at The UnOfficial, and always up for a conversation about how to take something from “rough sketch” to “live and used.”
// me.ts
export const me = {
name: 'James Hankins',
pronouns: 'he/him',
location: 'Remote, US',
status: 'available',
roles: ['engineer', 'writer', 'product_minded'],
focus: 'ideas → production',
};
// stats.ts
These aren't rules. They're defaults — what I reach for when a decision is still wet. Half came from shipping things that worked; the other half from shipping things that didn't.
Side projects I designed, built, and shipped solo — each one a full loop from idea to production.

// flagship
An NBA fan blog and publishing platform with a full CMS — multi-writer auth, draft workflows, and a voice that sounds like your group chat.
Engineering came first. Writing showed up when I wanted to explain what I built. Product is what happens when both try to talk to a user at the same time.
Scaling a home-grown fantasy league into a multi-league platform — real-time scoring, Google sign-in, and a foundation for season-over-season archives. First multi-league season lines up with Survivor 50.
Shipped Apex Trader, FitForge, Guinness Passport, and The Pity Tour back-to-back. Each one a full loop from sketch → schema → UI → live. The pattern that made them possible: reusing Next.js + Firebase as a personal platform.
A CMS-backed NBA blog with multi-writer auth, invite codes, and a draft → publish → unpublish lifecycle. Started as a home for my own writing, grew into a small publishing platform with role-based access.
Engineering work, product collaborations, and the slow realization that I liked the delivery side of software as much as the building side. (More here soon — this site grows with the story.)
The tools I reach for, the things I'm shipping right now, and what I'm learning next. No percentages — just an honest read.
// stack.ts — tools I reach for first
// building
// learning
// thinking about
Whether it's a product idea, a writing collab, or a technical puzzle worth chewing on — the inbox is open. I try to reply within a day or two.
// fastest channels
Hankins.JamesB@gmail.com
@james-hankins
GitHub
@JamesHankinsDev