A focused collaborative document workspace for small teams. Create and rename documents, edit rich HTML content in the browser, import .txt and .md files, and share documents with seeded teammates.
Live demo: https://docflow-xi-eight.vercel.app
Product walkthrough: https://docflow-xi-eight.vercel.app/walkthrough/
-
Start the API and web services in two terminals:
pnpm --filter @workspace/api-server run dev pnpm --filter @workspace/docflow run dev
-
Open the web preview.
-
Use the member switcher in the lower-left corner to demonstrate access:
- Maya Chen (
maya) owns the seeded welcome document. - Sam Rivera (
sam) owns “Q3 planning notes”. - Noor Patel (
noor) is available as another share target.
- Maya Chen (
-
As Maya, open “Welcome to DocFlow”, edit the title or content, click Save, then use Share to grant Sam access.
-
Switch to Sam and confirm the document appears under Shared with me.
The import flow intentionally supports .txt, .md, and .markdown only. Markdown headings and ordered/unordered lists are converted into editable rich content. .docx and binary attachments are intentionally out of scope for this timeboxed slice.
Requirements: Node.js 24 and pnpm.
pnpm install
pnpm --filter @workspace/db run push
pnpm --filter @workspace/api-spec run codegen
pnpm run typecheckThe project uses PostgreSQL via DATABASE_URL. For local development, set DATABASE_URL in .env.local. On Vercel, provision Neon (or Vercel Postgres) and add DATABASE_URL to the project environment. Run pnpm --filter @workspace/db run push when schema changes need to be applied. The API seeds three demo users and two starter documents on first request.
With the API service running:
pnpm --filter @workspace/scripts run smokeThe smoke test creates a temporary document, saves formatted HTML content, shares it with Sam, and verifies that Sam can see it as a shared document. To target another API URL, set DOCFLOW_API_BASE_URL to the /api base.
Working: document creation, rename/save/reopen, rich formatting (bold, italic, underline, headings, code blocks, links, bulleted and numbered lists), text/Markdown import, PostgreSQL persistence, seeded user switching, owner/shared visibility, owner-only sharing, loading/empty/error/success states, and responsive layout.
Intentionally incomplete: real authentication, concurrent real-time editing, comments, version history, revoking access, .docx parsing, binary attachment storage, and document deletion. With another 2–4 hours, I would add real auth and role-aware permissions first, then presence/version history and a safe revoke-access flow.
- Live deployment: https://docflow-xi-eight.vercel.app
- Product walkthrough: https://docflow-xi-eight.vercel.app/walkthrough/
- Build process note:
BUILD_PROCESS.md - Architecture rationale:
ARCHITECTURE.md - AI workflow note:
AI_WORKFLOW.md - Submission checklist:
SUBMISSION.md - Walkthrough handoff:
WALKTHROUGH_VIDEO_URL.txt