ALIGN is a collaborative task management tool with workspace-based projects, team member roles, tasks, and built-in analytics for productivity insights.
It is designed to help teams organize tasks, manage members, and measure project performance with real-time statistics.
- Register & Login: Create an account or log in with email/password.
- Session Management: Secure cookie-based session handling.
- Logout: Invalidate user sessions safely.
- Get Current User: Fetch logged-in user details.
- List Members: Retrieve all members of a workspace with enriched user details (name, email, role).
- Delete Member: Remove a member from a workspace (with role-based authorization).
- Update Member Role: Change a member’s role (e.g., ADMIN, MEMBER).
- Role-based Authorization:
- Only Admins can update or remove other members.
- Prevents removing the last member in a workspace.
- List Workspaces: Get all workspaces a user belongs to.
- Get Workspace: Retrieve details of a workspace.
- Create Workspace: Create a new workspace (with optional image upload).
- Update Workspace: Edit workspace name or image (admin-only).
- Delete Workspace: Delete a workspace (admin-only).
- Reset Invite Code: Generate a new invite code for joining.
- Join Workspace: Join using an invite code.
- Workspace Analytics: Productivity insights across all projects in a workspace.
- Create Project: Add a new project within a workspace (supports project images).
- List Projects: Get all projects for a workspace.
- Get Project: Fetch details of a specific project.
- Update Project: Edit project name or image.
- Delete Project: Remove a project (with member authorization).
- Project Analytics: Reporting on tasks and productivity inside a project.
- List Tasks: Retrieve tasks with filters:
workspaceId(required)projectId(optional)assigneeId(optional)status(optional, e.g.TODO,IN_PROGRESS,DONE)search(optional, by task name)dueDate(optional, ISO string)
- Get Task: Retrieve a specific task with its project and assignee populated.
- Create Task: Add a new task (with auto-calculated position).
- Update Task: Modify task details (name, description, dueDate, status, projectId, assigneeId).
- Delete Task: Remove a task (workspace membership required).
- Bulk Update Tasks: Update multiple tasks at once (status and position).
- Task + Relations:
- Each task can reference a project and an assignee (workspace member).
- Returned tasks include enriched project and user details.
- Workspace-level Analytics:
- Total tasks, assigned tasks, completed, incomplete, overdue.
- Month-over-month comparisons.
- Project-level Analytics:
- Similar breakdown, scoped to a single project.
- Next.js 14 – React framework for app routing & server components
- Lucide React – icon set
- TanStack Query – server state management
- TanStack Table – data tables
- React Hook Form – form handling
- React Big Calendar – calendar & scheduling
- ShadcnUI - customizable tailwind components
- Hono – lightweight web framework
- Zod – schema validation
- Appwrite – authentication, database, and file storage
- node-appwrite – Appwrite SDK
- date-fns – date & time utilities
- TypeScript – type safety
- ESLint – linting
- PostCSS – CSS processing
POST /login– Login with email & passwordPOST /register– Create new account & auto-loginGET /current– Get current logged-in userPOST /logout– End session
GET /?workspaceId={id}– List all workspace membersDELETE /:memberId– Remove member (admin-only)PATCH /:memberId– Update member role
GET /– List all workspaces for the current userGET /:workspaceId– Get workspace detailsPOST /– Create new workspace (supports image upload)PATCH /:workspaceId– Update workspace (admin-only)DELETE /:workspaceId– Delete workspace (admin-only)POST /:workspaceId/reset-invite-code– Reset invite code (admin-only)POST /:workspaceId/join– Join workspace using invite codeGET /:workspaceId/analytics– Get workspace analytics
POST /– Create projectGET /?workspaceId={id}– List all projectsGET /:projectId– Get project detailsPATCH /:projectId– Update project detailsDELETE /:projectId– Delete projectGET /:projectId/analytics– Get project analytics
GET /?workspaceId={id}&projectId={id}&status={status}&assigneeId={id}&search={string}&dueDate={date}– List tasks with filtersGET /:taskId– Get task details (with project + assignee)POST /– Create new taskPATCH /:taskId– Update taskDELETE /:taskId– Delete taskPOST /bulk-update– Update multiple tasks (status + position)