Real case study of building a complete internal dashboard with Claude Code. Step-by-step process, prompts used, and lessons learned.
How We Built an Internal Tool in 2 Hours with Claude Code
We needed an internal dashboard to track client projects. Quotes for custom development: $5,000-$15,000. Timeline: 2-4 weeks.
We built it with Claude Code in 2 hours.
Here's exactly how.
The Problem
Our team was tracking client projects across:
- Spreadsheets
- Slack threads
- Email chains
- Random documents
Finding project status meant checking 4 different places. Updates fell through cracks. Clients asked questions we couldn't answer quickly.
We needed:
- One place to see all projects
- Status updates anyone could make
- Client contact info accessible
- Notes and documents attached
- Simple, fast, no training needed
The Build
Hour 1: Core Functionality
Minute 0-10: Project Setup
mkdir client-dashboard
cd client-dashboard
claude
First prompt:
Create a Next.js project for an internal client dashboard.
Use TypeScript, Tailwind CSS, and shadcn/ui components.
Set up basic project structure with pages for:
- Dashboard (list all clients)
- Client detail page
- Add new client form
Claude Code scaffolded the entire project.
Minute 10-25: Database and Models
Set up a SQLite database for development with Prisma.
Create models for:
- Client (name, company, email, phone, status)
- Project (title, description, status, deadline, client relation)
- Note (content, timestamp, project relation)
Add seed data with 5 sample clients and projects.
Claude Code created the schema, migrations, and seed script.
Minute 25-40: Dashboard Page
Build the main dashboard page showing:
- Table of all clients
- Columns: company name, contact name, active projects count, overall status
- Filter by status (active, on hold, completed)
- Search by company or contact name
- Click to view client details
Use the shadcn Table component with sorting.
Working dashboard with filters and search.
Minute 40-60: Client Detail Page
Create the client detail page showing:
- Client info card (editable)
- List of their projects with status badges
- Add new project button
- Recent notes section
- Add note form
Full client view with all project data.
Hour 2: Polish and Features
Minute 60-75: Project Status Workflow
Add status workflow for projects:
- Statuses: Not Started, In Progress, Review, Completed, On Hold
- Dropdown to change status
- Status change adds automatic note with timestamp
- Color-coded status badges
Minute 75-85: Quick Actions
Add quick action buttons on dashboard:
- Mark project complete (one click)
- Send status update email (opens mailto)
- Add quick note (modal popup)
Minute 85-100: Mobile Responsive
Make the dashboard mobile responsive.
On small screens:
- Collapse table to cards
- Stack filters vertically
- Full-width forms
Minute 100-115: Auth and Deploy
Add simple password protection using environment variable.
No user accounts, just a shared team password.
Cookie-based session.
Set up deployment to Vercel.
Create environment variables for database and password.
Minute 115-120: Final Testing
Quick run-through of all features. Fixed two minor issues Claude Code caught during testing.
The Result
A fully functional internal dashboard with:
- Client management
- Project tracking
- Status workflows
- Notes and history
- Search and filters
- Mobile support
- Password protection
- Deployed and live
Total time: 2 hours.
Total cost: $0 (Claude Pro subscription we already had).
Alternative cost: $5,000-15,000 and 2-4 weeks.
Key Prompts That Worked
For UI Components
Use shadcn/ui components wherever possible.
Match the default shadcn styling.
This kept the design consistent without custom CSS work.
For Data Operations
Use Prisma for all database operations.
Include proper error handling.
Use server actions for mutations.
Clear tech choices meant Claude Code made consistent decisions.
For Features
When a project status changes:
1. Update the project record
2. Create a note with "Status changed to [new status]"
3. Update the timestamp
4. Show a toast notification
Step-by-step requirements got implemented correctly.
What We Learned
1. Start with Structure
Don't jump into features. First prompt should establish:
- Framework and tech stack
- Project structure
- Core models
Everything else builds on this foundation.
2. Use Component Libraries
Telling Claude Code to use shadcn/ui (or similar) means:
- Consistent design
- Less custom styling
- Faster development
- Professional look
3. Be Specific About Behavior
Vague: "Add project status"
Specific: "Add status dropdown with options: Not Started, In Progress, Review, Completed, On Hold. Display as color-coded badge. Changing status creates a note automatically."
Specificity = correct implementation.
4. Iterate in Small Steps
We didn't try to build everything at once. Each prompt added one feature or fixed one thing.
Small steps = fewer errors = faster progress.
5. Review the Diffs
Claude Code shows what it's changing. Reviewing these:
- Catches mistakes early
- Helps you understand the code
- Gives opportunities to course-correct
What We'd Do Differently
More Upfront Planning
We added features as we thought of them. A 10-minute planning session would have made the process smoother.
Better Seed Data
The initial seed data was too simple. More realistic data would have caught UI issues earlier.
Test Mobile Earlier
We did mobile responsiveness at the end. Testing on mobile throughout would have been better.
Could You Do This?
Yes. Here's why:
Technical skill required: Minimal. You need to:
- Run terminal commands
- Describe what you want clearly
- Review and approve changes
What Claude Code handles:
- All actual coding
- Tech decisions
- File structure
- Database design
- UI implementation
- Deployment setup
Cost Comparison
| Approach |
Cost |
Time |
Maintenance |
| Custom dev agency |
$10,000+ |
3-4 weeks |
Expensive |
| Freelancer |
$3,000-8,000 |
1-2 weeks |
Variable |
| No-code platform |
$50-300/month |
1 week |
Platform lock-in |
| Claude Code |
$20/month |
2 hours |
You own everything |
Claude Code isn't just faster and cheaper. You end up with real code you control.
Next Steps for Our Dashboard
Now that it's live, we're planning:
- Email notifications for status changes
- Client-facing view (read-only)
- Document attachments
- Integration with our invoicing system
Each feature: another Claude Code session.
The Bottom Line
Two hours. $0 extra cost. Full internal tool.
This isn't a theoretical possibility. It's what we actually built.
If you need internal tools, dashboards, or simple apps—Claude Code is the fastest path from idea to working product.
Need help building internal tools or dashboards for your business? Cedar Operations helps companies create custom solutions. Book a consultation →
Related reading: