A personal command center for freelance design and development work. CRM, project management, invoicing, AI assistant, music studio, analytics, global search, content pipeline, and more - all sharing one database, one auth layer, one URL. Built entirely solo.
Role
Designer + Developer
Timeline
Ongoing
Stack
Next.js 15 + Neon + Claude + Whisper
Year
2026
missiondeck.app
The Problem
Every tool knows one thing. None of them know what the others know.
The typical freelance setup: a project manager here, a CRM somewhere else, invoices in a third app, analytics spread across three dashboards, notes in Notion. Each tool is fine on its own. Together they require constant manual translation - and the cost isn't just the subscriptions, it's the context-switching. Starting a work session means opening eight tabs, doing mental math to connect information that should just be connected. Mission Deck started as an experiment: what if one system knew everything? It's now the tool the entire practice runs out of - and the most thorough proof of what one person can build.
24k+
Lines of production Next.js written solo. Not a side-project demo. A real application with proper error handling, auth, and relational data modeling
106
API route files across 15+ modules. The CRM alone spans contacts, companies, proposals, and invoices
30+
Postgres tables, properly related. Clients link to projects. Projects link to tasks, invoices, and time logs. The relational model is why modules can share data without duplication
Design System
Built for dense information, not decoration.
Command centers don't get to be beautiful at the cost of being readable. The palette is dark-first with high-contrast functional accents. Command purple for navigation and primary AI actions. Execute teal for success states, revenue, and live data. Alert coral for recording, warnings, and high-urgency items. Signal amber for proposals in-flight and status flags.
Color Palette
Command
#6C5CE7
Execute
#00D9A3
Alert
#FF6B8A
Signal
#F9A825
Void
#09090F
Surface
#111118
Headlines - Poppins 900
Dashboard. Studio. Command.
Body & Prose - Source Serif 4
Project and client data, rendered in a readable format that doesn't fight the dense surrounding UI for attention.
UI Labels & Navigation - Inter
Projects · CRM · Studio · Analytics · JARVIS
Data & Code - Monospace
INV-108 · $11,400 · 106 routes
Design Philosophy
The decisions that made it useful instead of impressive.
Two principles drove every architectural and design decision. Both came from real frustration with how most tools work.
One data layer, not 15 integrations
Building one system instead of integrating existing tools was the obvious call. Integrations break, fall out of sync, and require maintenance. A shared Postgres database doesn't. When a proposal becomes a project, the link is a foreign key - not a Zapier automation that might fail silently on a Tuesday.
"The relational model is why opening a company record shows every proposal, invoice, project, and contact associated with it. That's not a feature - it's just what a properly normalized database looks like."
AI as infrastructure, not a feature
JARVIS, Studio's co-writer, and Roadmap import all use Claude - but differently. JARVIS injects context about active projects before responding. The co-writer uses conversational state to maintain creative direction. Roadmap import structures raw input into a typed schema. Three different prompting strategies, because three different jobs require three different approaches.
"The difference between an AI feature that feels useful and one that feels like a demo is context. Structured prompting and real data injection are what make the difference."
missiondeck.app/page-1
Homepage
missiondeck.app/page-2
Interior Page
missiondeck.app/page-3
Feature Page
Click any screen to bring it forward
Detailed breakdown
Why it works as one system
Single Auth Layer
One login gets you everywhere. No separate passwords for different modules, no re-verifying identity. NextAuth.js with Postgres sessions.
Shared Postgres Schema
All modules read from the same 30+ related tables. A contact in CRM is the same entity everywhere. No syncing, no data drift.
Single Global Search
One search box finds invoices, projects, clients, proposals, notes, and more. All 13 searchable resource types in one index.
Unified AI Layer
Claude API is injected into the platform at the infrastructure level. Every module that needs AI context gets it automatically.
One Content Pipeline
Files, notes, client work, code snippets all flow through one upload system with real-time transcription for audio.
The Ecosystem
What it connects to
Vercel
Edge Functions power the global search. Middleware handles auth. Deploy previews let clients see work in progress.
Neon Postgres
Hosted Postgres with branching for previews. Full relational integrity. Real foreign keys, not just IDs.
Cloudflare R2
Object storage for files and images. Signed URLs for secure downloads. No bundled uploads to the database.
Anthropic Claude
Context-aware AI across modules. Structured outputs for schema generation. Streaming for real-time UI updates.
OpenAI Whisper
Real-time transcription for the Studio module. Voice notes become searchable text in the content pipeline.
GA4 / Meta / Instagram
Analytics APIs feed into one dashboard. No context switching between platforms. Real cross-channel insights.