The freelance workspace built for craft, not busywork.
Atelier is an open-source business OS for independent creatives and freelancers — proposals, invoices, client portals, project tracking, and an AI assistant, all in one dark, opinionated workspace.
| Module | What it does |
|---|---|
| Dashboard | Morning brief, financial bento widgets, cash-flow forecast, activity timeline |
| Proposals | AI-generated proposals with a rich editor, section-level refinement, PDF & DOCX export, shareable public link |
| Invoices | Drag-and-drop canvas invoice editor, line items, send via portal |
| Client Portals | White-label portals with an AI editor — clients see tasks, messages, and milestones without logging in |
| Projects | Board view, milestone accordion, task trees with subtasks, client notifications |
| Clients | Client profiles, deal pipeline, contract tracking |
| Insights & Revenue | Earnings comparison, income pacing, cash-flow forecasting |
| Morning Brief | AI-curated daily summary of your business at a glance |
| Calendar | Scheduling and deadlines across projects |
Next.js 16 · React 19 · TypeScript · Tailwind CSS
Supabase (Postgres + Auth + Realtime)
Vercel AI SDK · Claude (proposals, portal AI, assistant)
Three.js · React Three Fiber · GSAP · Framer Motion · Lenis
@dnd-kit · Recharts · React PDF · shadcn/ui
The marketing site is a WebGL-heavy, true-black dark experience — pointer-reactive dot fields, kinetic typography, scroll-choreographed sections. The workspace follows the same design language: monochromatic, precise, fast.
git clone https://github.com/procoder30001/atelier
cd atelier
npm installCopy the environment template and fill in your keys:
cp .env.example .env.localYou'll need:
- A Supabase project (Postgres + Auth)
- An Anthropic API key for AI features
- A Resend API key for email
Run migrations:
npx supabase db pushStart the dev server:
npm run devAtelier is built in the open and contributions are genuinely welcome. The codebase is intentional — every component has a reason to exist — and we'd love help pushing it further.
- New portal templates —
lib/portal/templates.ts+components/portal/portal-template-renderer.tsx. Add a layout, register it in two places, done. - Proposal sections —
lib/proposals/content.tsdefines the section schema. New section types (testimonials, timeline, team) would be valuable. - Chart widgets —
components/dashboard/financial/for new financial widgets using Recharts. - Invoice line-item types — milestone billing, retainer blocks, expense rows.
- Integrations — the integrations page (
app/(workspace)/integrations/) is a blank canvas. Stripe, Toggl, Cal.com, and HubSpot are on the wishlist. - Accessibility — keyboard navigation, focus rings, ARIA labels across the workspace.
- Tests — there aren't many yet. Any coverage helps.
- Fork → branch → PR. Branch from
main. Name branchesfeature/,fix/, orchore/. - Small PRs win. One logical change per PR. A focused 200-line PR ships faster than a sprawling 2,000-line one.
- Match the design system. Use existing tokens from
app/globals.css. No one-off hex values. No purple. - No console.logs. Remove debug output before opening a PR.
- Describe the why. PR descriptions should explain what changed and why, not just list files.
Most workspace features need a seeded Supabase project. The supabase/migrations/ folder has all schema. After npx supabase db push, create a test user through the auth page and data populates from there.
Atelier exists because freelance tools are either ugly, bloated, or both. The design is deliberately restricted: one material (warm white on true black), drama from WebGL and motion rather than color, and a layout system that gets out of the way of the work itself. New UI should feel like it belongs — spare, fast, typographically tight.
MIT — use it, fork it, build your own thing on top.
Built by Drew Wycherley and contributors.