Complete architecture for a ClickUp/Notion/Miro-class project management app: - Turborepo monorepo with Next.js 15, TypeScript, PostgreSQL (Drizzle ORM) - Object-centered database schema (everything is an Object: tasks, projects, docs, whiteboards) - NextAuth v5 authentication with credentials + OAuth providers - tRPC v11 API layer with full CRUD for objects, properties, relations, templates, search - Three-panel UI: collapsible sidebar, center content area, push-in right panel - Purple/teal theme with light/dark mode via Shadcn/ui + Tailwind CSS - Multiple views: List, Kanban board (dnd-kit), Table (spreadsheet), Embedded iframe - TipTap rich text editor with slash commands, custom blocks (callout, toggle, mention, embed, divider), AI block - Real-time collaboration via Yjs + Hocuspocus with presence/cursors - tldraw whiteboard with custom shape cards (task, document, project) - MCP server exposing all app data/tools for AI agents - AI chat panel, editor AI slash commands, Cmd+K command palette - Template system with built-in templates (Bug Report, Meeting Notes, Sprint) - Full-text search with result highlighting - Docker Compose for full-stack deployment (web + collab + postgres + redis) Made-with: Cursor
95 lines
1.9 KiB
CSS
95 lines
1.9 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
@layer base {
|
|
:root {
|
|
--background: 0 0% 100%;
|
|
--foreground: 222 47% 11%;
|
|
|
|
--card: 0 0% 100%;
|
|
--card-foreground: 222 47% 11%;
|
|
|
|
--popover: 0 0% 100%;
|
|
--popover-foreground: 222 47% 11%;
|
|
|
|
--primary: 263 70% 55%;
|
|
--primary-foreground: 0 0% 100%;
|
|
|
|
--teal: 168 76% 42%;
|
|
--teal-foreground: 0 0% 100%;
|
|
|
|
--secondary: 210 40% 96%;
|
|
--secondary-foreground: 222 47% 11%;
|
|
|
|
--muted: 210 40% 96%;
|
|
--muted-foreground: 215 16% 47%;
|
|
|
|
--accent: 210 40% 96%;
|
|
--accent-foreground: 222 47% 11%;
|
|
|
|
--destructive: 0 84% 60%;
|
|
--destructive-foreground: 0 0% 100%;
|
|
|
|
--border: 214 32% 91%;
|
|
--input: 214 32% 91%;
|
|
--ring: 263 70% 55%;
|
|
|
|
--radius: 0.5rem;
|
|
|
|
--sidebar: 0 0% 98%;
|
|
--sidebar-foreground: 222 47% 11%;
|
|
--sidebar-border: 214 32% 91%;
|
|
--sidebar-accent: 263 70% 96%;
|
|
--sidebar-accent-foreground: 263 70% 35%;
|
|
}
|
|
|
|
.dark {
|
|
--background: 240 17% 4%;
|
|
--foreground: 210 40% 98%;
|
|
|
|
--card: 240 17% 7%;
|
|
--card-foreground: 210 40% 98%;
|
|
|
|
--popover: 240 17% 7%;
|
|
--popover-foreground: 210 40% 98%;
|
|
|
|
--primary: 263 70% 58%;
|
|
--primary-foreground: 0 0% 100%;
|
|
|
|
--teal: 168 76% 42%;
|
|
--teal-foreground: 0 0% 100%;
|
|
|
|
--secondary: 240 10% 14%;
|
|
--secondary-foreground: 210 40% 98%;
|
|
|
|
--muted: 240 10% 14%;
|
|
--muted-foreground: 215 20% 55%;
|
|
|
|
--accent: 240 10% 14%;
|
|
--accent-foreground: 210 40% 98%;
|
|
|
|
--destructive: 0 63% 31%;
|
|
--destructive-foreground: 0 0% 100%;
|
|
|
|
--border: 240 10% 18%;
|
|
--input: 240 10% 18%;
|
|
--ring: 263 70% 58%;
|
|
|
|
--sidebar: 240 17% 6%;
|
|
--sidebar-foreground: 210 40% 98%;
|
|
--sidebar-border: 240 10% 18%;
|
|
--sidebar-accent: 263 50% 12%;
|
|
--sidebar-accent-foreground: 263 70% 80%;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border;
|
|
}
|
|
|
|
body {
|
|
@apply bg-background text-foreground;
|
|
}
|
|
}
|