Taskflow is a lightweight project & task management web app built with Next.js, Tailwind CSS, and shadcn/ui. It provides an intuitive interface to create projects, manage tasks, collaborate, and prototype workflow UIs quickly using local state (Zustand-based store).
Taskflow helps you organize projects and tasks in a simple kanban-like UI with support for:
- Creating projects and inviting members
- Adding tasks to columns with positions
- Archiving and deleting projects
- Local persistence using a persisted Zustand store
It is intended as a small, fast prototype app and a good starting point for experimenting with UI patterns and local-first data flows.
- Multi-project support with project-level members and roles
- Task creation, ordering, moving between columns
- Commenting on tasks
- Project archival and deletion (cascade removes tasks/comments)
- Persistent local store (persisted by Zustand)
- Component library via shadcn/ui and iconography with lucide-react
- Next.js (App Router)
- TypeScript
- Tailwind CSS
- shadcn/ui (UI primitives)
- Zustand + zustand/middleware for app store
- lucide-react (icons)
- dnd-kit (drag & drop foundations)
- Optional: Supabase (planned integration in README)
Prerequisites:
- Node 18+ recommended
- npm or pnpm
-
Clone the repo
git clone <repo-url> cd task-flow
-
Install dependencies
npm install # or pnpm install -
Copy environment example
cp .env.example .env.local # Edit .env.local if needed -
Run development server
npm run dev # or pnpm dev -
Build / preview
npm run build npm run start
Common scripts (see package.json):
- npm run dev — start dev server with Fast Refresh
- npm run build — production build
- npm run start — start production server (after build)
- npm run lint — run ESLint
- npm run format — run Prettier (if configured)
Always run lint/format before committing.
- app/ — Next.js App Router pages and layouts
- app/(app)/projects/[projectId]/page.tsx — project detail page
- components/ — shared UI components (sidebar, modals, nav, etc.)
- store.ts — central Zustand store and actions
- store/ — additional seed data and app-store helpers
- types.tsx — main app data types
- lib/ — app utilities (e.g.,
lib/constants) - public/ — static assets
- .env.example / .env.local — environment variables
- The app uses a persisted Zustand store exposed as
useTaskFlowStore. See store.ts for all state and actions.- Notable actions:
addProject,addTask,moveTask,archiveProject,deleteProject.
- Notable actions:
- Seed/demo data is available in store/app-store.ts.
- Types are centralized in types.tsx (Project, Task, Comment, User, etc.).
- Static column definitions:
STATIC_COLUMNS(imported in store.ts).
Examples:
- Creating a project uses the store action
addProject(creates project, adds current user as member). - The project detail page is implemented in app/(app)/projects/[projectId]/page.tsx.
- Use feature branches (
feature/xyz) and small PRs. - Commit messages: use Conventional Commits style for clarity.
- Keep UI components small, presentational vs container separation.
- Prefer immutable updates (the store already uses immutability patterns).
- For adding real auth or persistence, consider Supabase or your backend:
- Keep the Zustand store as a local cache and implement sync layers.
- Use the
.env.exampleas canonical reference for any required keys.
Debugging suggestions:
- Log store contents: call
useTaskFlowStore.getState()in the console (dev only). - When tasks reorder unexpectedly, inspect
positionvalues in the store. - Use browser devtools to inspect network & console for SSR vs client-only issues.
Accessibility & UX:
- Ensure interactive elements have accessible labels.
- Confirm modals trap focus and keyboard navigation works (Tab/Esc).
Performance:
- Memoize expensive list renders.
- Keep heavy packages lazy-loaded where appropriate.
- Fork the repo
- Create a branch:
git checkout -b feature/awesome - Implement and test locally
- Open a pull request with a clear description
Please run linters and formatters before submitting. Refer to this README's development scripts.
This project is MIT licensed — see LICENSE file (if included) or add desired license.
If you need a short developer onboarding checklist or CI suggestions (GitHub Actions for lint/test/build), I can add recommended workflow YAML and branch protection rules.
Relevant files and symbols:
useTaskFlowStore— central store and actions- store.ts
- types.tsx
- store/app-store.ts
- app/(app)/projects/[projectId]/page.tsx
- components/