Atelier, a productivity dashboard.
A productivity dashboard for small teams. Tasks, notes, analytics, and an interface that doesn't yell.

A no-auth public build — click anywhere.
Public demo: every visitor lands as a shared 'Demo User' on a pre-seeded workspace. Edit tasks, write notes, invite teammates — nothing is gated.
Productivity tools mostly perform productivity. This one tries to disappear.
Atelier started as a question: what does a dashboard look like if it's designed to be closed? The features earn their place by removing decisions, not adding panels — tasks have priority and status; notes auto-save; analytics shows last-30-day completion as a sparkline, not a billboard.
Beneath the calm surface is a real full-stack app — Next.js 14 App Router, Drizzle ORM over Turso (libSQL), every server action gated by a workspace-membership check that's the equivalent of Postgres RLS, just enforced in app code. Engineering rigor in the service of a quieter UI.
What it actually does.
Tasks with teeth
Editable data table with status, priority, assignee, and due dates. Filterable. Keyboard-friendly. Editorial typography that respects density without crowding.
Auto-saving notes
Title + body editor that persists on every keystroke via server actions — no save button, no anxiety. Notes are workspace-scoped and listed by recency.
Team without ceremony
Member list and invite-by-email flow that generates a copyable link. Invites resolve to workspace memberships at first hit.
Analytics that mean something
Last-30-day metrics, a completion sparkline, and a top-contributors block. The page answers two questions and stops.
The system, in four moves.
- Step 01
Schema
Drizzle ORM with libSQL/SQLite. Source of truth lives in src/lib/db/schema.ts; auth tables exist for future Auth.js wiring but are unused in the public demo.
- Step 02
Authorization
Every server action calls requireMembership(workspaceId) before mutating. The access model is part of the data model, not bolted on.
- Step 03
No-auth demo seed
ensureDemoSetup() resolves every visitor to demo@atelier.local on first request and seeds a few tasks and notes — so the dashboard is never empty on arrival.
- Step 04
Deploy
Vercel + Turso. Schema pushed via drizzle-kit. Local dev falls back to a SQLite file if Turso env vars are blank.
"Productivity software shouldn't feel like productivity software. The best dashboard is the one you close at 5pm."
— Project notes, Atelier