Tasker is a production-minded project and task management system for focused execution.
This project was built end-to-end by GPT-5.3-Codex, covering architecture, backend modeling, authorization, frontend implementation, and iterative product refinement.
- Project-based workspaces with scoped membership and permissions.
- Dual task views: structured list view and drag-and-drop Kanban by status.
- Fast task operations: status, priority, assignee, due date, labels, and search/filtering.
- Parent tasks with one-level sub-task support, progress rollups, and nested list/Kanban presentation.
- Unified task timeline combining comments and system activity in chronological order.
- In-app inbox plus assignment email notifications.
- Admin controls for user role management and account activation state.
- Real-time synced data layer for projects, tasks, comments, members, and activity.
- Role-based access with strict server-side authorization checks.
- Project-specific task numbering and soft-delete behavior.
- Member management with invite, revoke, and add-existing-user flows.
- Persistent project view preferences and filters in URL state.
- Async notification email delivery through Convex actions and SMTP env config.
-
admin -
Full system access across all projects and users.
-
member -
Write access to projects they created or were added to.
-
viewer -
Read-only access to projects they were added to.
All read/write enforcement happens on the server in Convex permission helpers.
Core tables in /convex/schema.ts:
usersprojectsprojectMembersprojectInvitesprojectCountersissuescommentsactivities
- Auth is Clerk-based, with Convex identity mapped to internal
usersrecords. - User bootstrap/sync is handled through
users.ensureCurrentUser. - Invite acceptance is auto-processed when a signed-in user email matches pending invites.
- Project activity and task activity are recorded for audit-friendly history.
/src/routes- all route screens and page-level logic./src/features/tasker- domain UI, auth guards, and shared feature modules./src/components/ui- shared design system primitives and dialogs./convex- schema, queries, mutations, actions, and auth/permission helpers.
pnpm dev
pnpm build
pnpm check
pnpm testThis project is licensed under the Unlicense. See /LICENSE.
- Install dependencies.
pnpm install- Configure client env vars in
.env.local.
CONVEX_DEPLOYMENT=...
VITE_CONVEX_URL=...
VITE_CLERK_PUBLISHABLE_KEY=...
VITE_CONVEX_SITE_URL=...
VITE_CLERK_JWT_TEMPLATE=convex- Configure Clerk authentication prerequisites.
- Create a Clerk JWT template named
convex(used by Convex auth). - Enable email sign-in in Clerk, because project invite delivery and acceptance rely on email identity.
- Configure Convex server env vars (required for invite actions and SMTP notifications).
pnpm dlx convex env set CLERK_SECRET_KEY sk_...
pnpm dlx convex env set APP_BASE_URL https://tasker.yourcompany.com
pnpm dlx convex env set SMTP_HOST smtp.sendgrid.net
pnpm dlx convex env set SMTP_PORT 587
pnpm dlx convex env set SMTP_SECURE false
pnpm dlx convex env set SMTP_USER apikey
pnpm dlx convex env set SMTP_PASS your-sendgrid-smtp-password
pnpm dlx convex env set SMTP_FROM_EMAIL tasker@yourcompany.com
pnpm dlx convex env set SMTP_FROM_NAME TaskerNotes:
APP_BASE_URLmust be the public app origin used in email links and invite redirects, for examplehttps://tasker.yourcompany.com.SMTP_HOST,SMTP_PORT,SMTP_SECURE,SMTP_USER, andSMTP_PASSare server-side SMTP transport settings for assignment notification emails.SMTP_USERis typicallyapikeyfor SendGrid SMTP.SMTP_PASSshould be your SendGrid SMTP password / API key value.SMTP_FROM_EMAILandSMTP_FROM_NAMEcontrol the visible sender on assignment emails.- These values stay in Convex server env only. Do not put them in
.env.local.
Optional:
pnpm dlx convex env set CLERK_API_URL https://api.clerk.com/v1- Verify Convex auth provider values for your Clerk instance in
/convex/auth.config.ts.
domainandissuermust match your Clerk account domain.applicationIDshould match the JWT template/application id (convexin this setup).- SMTP notification delivery is configured only through Convex server env vars; no SMTP settings are exposed in the app UI.
- Start development services.
pnpm dlx convex dev
pnpm dev- Open
http://localhost:3000, sign in, and optionally seed demo data from/settings.