This repository is a production-oriented CRUD and Agile SDLC application for task and workspace management, built with Next.js (App Router) and TypeScript. It demonstrates end-to-end frontend and backend integration, complex state and UI (Kanban, Calendar, Table), and analytics surfaces designed to support software development workflows.
- Shows a current modern full-stack application design (Next.js app + Hono server routes + Appwrite backend).
- Demonstrates complex client UI (drag-and-drop Kanban with optimistic updates, calendar view, paginated tables).
- Emphasizes data integrity and UX: status normalization, accessibility improvements, and progressive enhancement.
- Architected and implemented feature-rich task management UI (Kanban, Calendar, Table).
- Built analytics pages with metric-driven filtering and pagination.
- Implemented server-side APIs with validation, helpful errors, and normalization logic.
- Improved accessibility (ARIA), defensive UI (truncation, scroll containers), and testable typing (TypeScript + Zod schemas).
- Frontend: Next.js (App Router), React 18, TypeScript, Tailwind CSS
- Backend: Hono server routes (embedded in app), Appwrite admin SDK for persistence
- Libraries: @hello-pangea/dnd, react-big-calendar, react-hook-form, zod, TanStack Query, Sonner, Radix UI primitives
- Kanban board with drag-and-drop and batch reorder persistence
- Calendar view for tasks using react-big-calendar (events colored by status)
- Table view with pagination and task row actions
- Workspace & Project analytics: metric cards, recent tasks, projects and assignees lists
- Create/Edit task modal with schema validation and client-side limits
✔️. Copy the sample environment file and fill values.
# macOS / Linux / PowerShell
cp .env.example .env.local
# Windows cmd
copy .env.example .env.local✔️. Install dependencies and run:
# using bun
bun install
bun dev
# or use npm
npm install
npm run dev✔️. Type checking (useful):
bun tsc --noEmit- The
taskscollection supports a numericpositionattribute to persist ordering across Kanban columns. If not present, drag-and-drop will still work client-side but reordering will not persist.
- Added a
normalizeStatushelper to harmonize legacy status values and avoid UI/server mismatches. - Metric cards are toggleable and have
aria-pressedfor accessibility. - Improved layout to avoid overflow (pagination buttons contained inside cards) and made long lists scrollable.
- Reduced noisy server logs in production and ensured helpful error messages for common Appwrite schema issues.
src/features/tasks/server/route.ts— API for task CRUD, listing, and batch reordersrc/features/tasks/components— Kanban (data-kanban.tsx), Calendar (data-calendar.tsx), and task rows (task-row.tsx)src/app/(dashboard)/workspaces/[workspaceId]/projects/[projectId]/page.tsx— Project analytics viewsrc/features/workspaces/components/home-analytics.tsx— Workspace-level analytics viewsrc/lib/utils.ts— shared helpers (e.g.,normalizeStatus)
Learned how to build the first part of application from this tutorial. Came back to finish project my way.