I built the one tool my studio needed. Now it's becoming a product.
Millstream is the shared workspace where your team, your clients, and the studios you collaborate with work from the same projects, files, and conversations. It started life as 'Maximized Portal', the internal tool that ran my studio. Today it's a multi-tenant product in closed beta at millstream.app.
The problem
Running a studio means managing clients, projects, tickets, time, trips, and content. I was doing all of that across a patchwork of tools, and everyone I worked with saw a different copy of the truth.
Tools everywhere, nothing connected
Client info lived in a spreadsheet. Tasks in Jira. Notes in Notion. Time tracking in yet another app. Every tool had its own login, its own data silo, its own way of doing things.
Manual tracking between systems
Logging time against a ticket meant cross-referencing three apps. Billing a client meant pulling data from five places. Nothing linked to anything else.
Everyone on a different copy
Briefs sat in email. Feedback was split across DMs and comment threads. When a client asked for a status update, I had to piece it together from scattered tools. No one place told the full story.
The vision
It started simple. I wanted a place where clients could access files, leave feedback, and submit requests, a shared portal between us. Feedback turned into tickets. Tickets needed sprint planning. Sprints needed time tracking. Time tracking needed billing. And suddenly I was building something much bigger.
Millstream grew organically from real needs. Each module exists because the studio needed it, not because a feature list said so. The result is twelve modules that all connect. A ticket links to a project, which links to a client, and that client carries logged time, trips, media, notes, and a discussion thread. Everything is one click away, for everyone you choose to share it with.
CRM
The CRM is the backbone. Every other module connects back to it. Open a client and you see their projects, tickets, logged time, trips, media, notes, and conversations, all in one place. No more cross-referencing spreadsheets.

Company management
Track clients with logos, status, and custom hourly rates. Each company is the anchor point for everything else.
Contacts per company
Manage contacts per company with primary contact promotion, so the right person is always one click away.
Three-tier rate system
Billing rates cascade: client default, project override, per-entry override. Flexible without being complicated.
A timeline of every interaction
Calls, meetings, and emails logged per client. The full history of a relationship in one feed.
Kanban
Client feedback becomes a ticket. Tickets live on the kanban board. Drag them through your workflow. Because tickets link to projects, clients, and media, moving a card forward means the whole system knows about it. And because clients can follow the board, they see progress without asking for it.

Full drag-and-drop
Built on Pragmatic drag and drop for smooth, accessible dragging across status columns. Cards snap into place with visual feedback.
Ticket linking
Every ticket connects to a project and client. Link media assets directly to tickets for full context.
Smart filtering
Filter by client, assignee, or status. The board adapts instantly, showing only what matters right now.
Assignee tracking
Assign team members with avatar indicators. See at a glance who owns what across the board.
Built for collaboration
What turned Portal into Millstream was one recurring question: why does the client have to email me for this? The answer became the product. One source of truth, shared with the three circles you work with: your team, your clients, and the studios you partner with.
Clients join as external members. They review media, follow the board, and raise requests, while internal tools, rates, and the CRM stay private. Partner studios and freelancers work alongside you in shared project spaces without getting your whole workspace. And realtime discussions live on every workspace, project, file, and ticket, so feedback lands where the work is.
The newest layer is an AI assistant that watches the work happen. It reads a call summary and proposes a ticket. It sees two hours of commits and proposes a time entry. It notices a proposal went out and suggests updating the deal stage. Every suggestion is approve or dismiss, so you stay in control.
Tech stack
Built on the same stack I use for client work. Modern, typed, production-grade.
Next.js
App Router with Server Components and Server Actions.
React
React 19 for the entire interactive UI layer.
Supabase
PostgreSQL, Auth, Storage, Realtime, and Row-Level Security.
Tailwind CSS
Utility-first styling with Tailwind CSS 4.
Vercel
Hosting and deployment with edge functions.
Challenges
The hardest part was never any single feature. It was keeping the whole thing simple while making it flexible enough for others.
I built Portal for my own studio's workflow. But the moment other teams came on board, every assumption got pressure-tested. Their projects work differently. Their team structure is different. Their permissions need to be different. And their clients should see exactly enough, and nothing more.
The challenge was keeping the tool opinionated (fast to use, no unnecessary configuration) while giving enough room for others to make it their own. That tension shaped every design decision: the permission system, the rate cascading, the module structure. Opinionated defaults, but overridable at every level.
Scope was the other constant battle. Every module I added connected to everything else, which meant every addition was more complex than it looked. A "simple" trip tracking feature needed client linking, project linking, ticket linking, rate calculations, autocomplete intelligence, and permission checks. Twelve times over.
Results
Millstream is live, in daily use, and onboarding its first outside teams. What started as a client feedback tool became the operating system for my studio, and is now becoming one for other studios too.
12 integrated modules
CRM, projects, kanban, media review, notes, discussions, time tracking, trips, social planning, an AI assistant, team management, and a live activity feed. All connected.
Multi-tenant in production
Real workspaces with full data isolation via RLS, granular per-user permissions, and clients joining as external members.
Daily use, now in closed beta
This isn't a demo. It's the tool that runs my studio every day, and the first teams are now working in it through the closed beta at millstream.app.
Solo end-to-end build
Design, frontend, backend, database schema, RLS policies, AI integration, deployment, all one person.