feat: Full project management application scaffold
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
2026-03-26 23:39:16 -04:00
|
|
|
"use client";
|
|
|
|
|
|
feat: ECHODO app shell, Coolify deploy, Authentik + Umami
Bundles in-flight ECHODO work with the Coolify deployment configuration:
App
- New routes: ai, forms, planner, settings (templates/types), teams,
doc detail, whiteboard detail
- New components: app shell rework (icon-rail, top-header), forms
builder/renderer/responses, types manager, objects creation dialog,
card primitive, form + overview views
- New tRPC routers: favorites, forms, types, workspaces; updates to
health and objects routers
- Markdown backlog sync (packages/database) + cursor-sync schema/migrations
- Schema additions: forms, types, favorites, markdown_backlog, cursor_sync
- Initial Drizzle migrations checked in
Deployment
- docker/docker-compose.coolify.yml: drops bundled Postgres/Redis
(uses CT 102 shared services), removes host port mappings, adds
Coolify SERVICE_FQDN_* magic vars for web + collab
- .env.example rewritten as the full ECHODO/Coolify variable manifest
- NextAuth gains an Authentik OIDC provider (gated on env presence)
- Root layout injects Umami tracking script when configured;
metadata title flipped to ECHODO
Security
- .gitignore expanded to exclude AGENT-DEPLOY.md, .env.*, secrets/,
credentials.*, *.key, *.crt, *.pem, ssh keys
Made-with: Cursor
2026-04-26 15:34:34 -04:00
|
|
|
import { FileText, Home, Presentation, Search, Settings } from "lucide-react";
|
feat: Full project management application scaffold
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
2026-03-26 23:39:16 -04:00
|
|
|
import { useParams, usePathname } from "next/navigation";
|
|
|
|
|
|
|
|
|
|
import { Separator } from "@/components/ui/separator";
|
|
|
|
|
import { useWorkspaceStore } from "@/lib/stores/workspace-store";
|
|
|
|
|
|
|
|
|
|
import { SidebarItem } from "./sidebar-item";
|
|
|
|
|
|
|
|
|
|
function NavSectionLabel({
|
|
|
|
|
children,
|
|
|
|
|
collapsed,
|
|
|
|
|
}: {
|
|
|
|
|
children: React.ReactNode;
|
|
|
|
|
collapsed?: boolean;
|
|
|
|
|
}) {
|
|
|
|
|
if (collapsed) return null;
|
|
|
|
|
return (
|
|
|
|
|
<div className="px-2 pb-1 pt-3 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground first:pt-1">
|
|
|
|
|
{children}
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function SidebarNav({
|
|
|
|
|
collapsed,
|
|
|
|
|
onOpenSearch,
|
|
|
|
|
}: {
|
|
|
|
|
collapsed: boolean;
|
|
|
|
|
onOpenSearch?: () => void;
|
|
|
|
|
}) {
|
|
|
|
|
const pathname = usePathname();
|
|
|
|
|
const params = useParams();
|
|
|
|
|
const workspace = useWorkspaceStore((s) => s.currentWorkspace);
|
|
|
|
|
const slugParam =
|
|
|
|
|
typeof params?.workspaceSlug === "string" ? params.workspaceSlug : "";
|
|
|
|
|
const base = workspace?.slug
|
|
|
|
|
? `/${workspace.slug}`
|
|
|
|
|
: slugParam
|
|
|
|
|
? `/${slugParam}`
|
|
|
|
|
: "";
|
|
|
|
|
|
|
|
|
|
const homeActive = pathname === base || pathname === `${base}/`;
|
|
|
|
|
|
|
|
|
|
return (
|
feat: ECHODO app shell, Coolify deploy, Authentik + Umami
Bundles in-flight ECHODO work with the Coolify deployment configuration:
App
- New routes: ai, forms, planner, settings (templates/types), teams,
doc detail, whiteboard detail
- New components: app shell rework (icon-rail, top-header), forms
builder/renderer/responses, types manager, objects creation dialog,
card primitive, form + overview views
- New tRPC routers: favorites, forms, types, workspaces; updates to
health and objects routers
- Markdown backlog sync (packages/database) + cursor-sync schema/migrations
- Schema additions: forms, types, favorites, markdown_backlog, cursor_sync
- Initial Drizzle migrations checked in
Deployment
- docker/docker-compose.coolify.yml: drops bundled Postgres/Redis
(uses CT 102 shared services), removes host port mappings, adds
Coolify SERVICE_FQDN_* magic vars for web + collab
- .env.example rewritten as the full ECHODO/Coolify variable manifest
- NextAuth gains an Authentik OIDC provider (gated on env presence)
- Root layout injects Umami tracking script when configured;
metadata title flipped to ECHODO
Security
- .gitignore expanded to exclude AGENT-DEPLOY.md, .env.*, secrets/,
credentials.*, *.key, *.crt, *.pem, ssh keys
Made-with: Cursor
2026-04-26 15:34:34 -04:00
|
|
|
<nav className="flex shrink-0 flex-col gap-0.5 px-2 pb-2 pt-1">
|
|
|
|
|
<SidebarItem
|
|
|
|
|
href={onOpenSearch ? "#" : `${base}/search`}
|
|
|
|
|
icon={<Search />}
|
|
|
|
|
label="Search"
|
|
|
|
|
collapsed={collapsed}
|
|
|
|
|
active={pathname.startsWith(`${base}/search`)}
|
|
|
|
|
onClick={
|
|
|
|
|
onOpenSearch
|
|
|
|
|
? (e) => {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
onOpenSearch();
|
|
|
|
|
}
|
|
|
|
|
: undefined
|
|
|
|
|
}
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
|
|
<Separator className="my-2 bg-sidebar-border" />
|
|
|
|
|
|
|
|
|
|
<SidebarItem
|
|
|
|
|
href={base || "/"}
|
|
|
|
|
icon={<Home />}
|
|
|
|
|
label="Home"
|
|
|
|
|
collapsed={collapsed}
|
|
|
|
|
active={homeActive}
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
|
|
<Separator className="my-2 bg-sidebar-border" />
|
|
|
|
|
|
|
|
|
|
<NavSectionLabel collapsed={collapsed}>Workspace</NavSectionLabel>
|
|
|
|
|
<SidebarItem
|
|
|
|
|
href={`${base}/documents`}
|
|
|
|
|
icon={<FileText />}
|
|
|
|
|
label="Documents"
|
|
|
|
|
collapsed={collapsed}
|
|
|
|
|
active={pathname.startsWith(`${base}/documents`)}
|
|
|
|
|
/>
|
|
|
|
|
<SidebarItem
|
|
|
|
|
href={`${base}/whiteboards`}
|
|
|
|
|
icon={<Presentation />}
|
|
|
|
|
label="Whiteboards"
|
|
|
|
|
collapsed={collapsed}
|
|
|
|
|
active={pathname.startsWith(`${base}/whiteboards`)}
|
|
|
|
|
/>
|
|
|
|
|
<SidebarItem
|
|
|
|
|
href={`${base}/settings`}
|
|
|
|
|
icon={<Settings />}
|
|
|
|
|
label="Settings"
|
|
|
|
|
collapsed={collapsed}
|
|
|
|
|
active={pathname.startsWith(`${base}/settings`)}
|
|
|
|
|
/>
|
|
|
|
|
</nav>
|
feat: Full project management application scaffold
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
2026-03-26 23:39:16 -04:00
|
|
|
);
|
|
|
|
|
}
|