Awatasks: Real-Time Task Collaboration for Small Teams
A Kanban collaboration platform where super admins invite outside collaborators via magic links for real-time tasks, chat, voice notes and time tracking.




The problem and context
Small teams and freelance developers frequently need to bring external participants into a project—such as a client, a contract engineer, or an independent designer. Traditional enterprise workspace suites make that process heavy and cumbersome: external collaborators are forced to create full accounts, seat licenses must be purchased, and permissions often leak broader project context than intended. Consequently, communication fragments across WhatsApp groups, email chains, and disconnected spreadsheets.
Awatasks was engineered as a focused, lightweight alternative. The Super Admin (the system owner) owns projects and boards, inviting outside collaborators with a single email magic link. There is no sign-up flow, no password to remember, and access is strictly scoped to a single project. The collaborator lands directly on the project board, seeing only their designated tasks, with access to real-time chat, file attachments, recorded voice instructions, and native time tracking. Platform growth is managed via an access-request system, ensuring new admin and collaborator slots are manually approved by the owner rather than exposed to open registration.
Stack and architecture
Role: Full-Stack Engineer
Timeline: March 2026
Core Stack: React, Node.js, Express, PostgreSQL, Prisma ORM, Socket.IO, Tailwind CSS, Supabase Storage
The platform architecture is built around several foundational decisions:
1. Two-Actor Identity Model
The core architectural pattern is a dual-actor schema. The Super Admin (the system owner) maintains standard user credentials with password authentication. Invited Collaborators belong to a dedicated Collaborator table, scoped exclusively to a single project, authenticated via long-lived tokens with zero password friction. Tasks, chat channels, reactions, read receipts, and notifications seamlessly support either actor type across a unified relational graph.
// One assignment table serves both actor types (simplified)
model TaskAssignee {
id Int @id @default(autoincrement())
taskId Int
userId Int? // Super Admin / system owner
collaboratorId Int? // Invited collaborator (project-scoped)
assignedBy Int
@@unique([taskId, userId])
@@unique([taskId, collaboratorId])
}
Task assignment schema supporting both Super Admins and collaborators, guarded by database-level CHECK constraints.
A database-level CHECK constraint ensures that exactly one actor reference (userId or collaboratorId) is populated per record, guaranteeing data integrity at the persistence layer.
2. Dual-Layered Authentication & Token Lifecycles
Authentication uses signed JWTs (HS512) enforcing strict issuer, audience, and unique token identifier (jti) checks. Collaborator tokens are issued with multi-year validity to eliminate recurring login barriers for external clients. To maintain strict security without short expiration windows, every protected collaborator request validates an isRemoved flag in the database, cached in memory for 30 seconds. When an admin revokes collaborator access, permissions terminate within about 30 seconds without requiring short-lived token refresh dance.
3. Isolated Storage & Session Scoping
To prevent credential pollution when an administrator tests or views a collaborator link on the same machine, sessions use segregated browser storage: administrator JWTs reside in localStorage, whereas collaborator credentials strictly use sessionStorage. A collaborator tab can never accidentally inherit the administrator's administrative token.
4. Real-Time Streaming & Presence Tracking
Socket.IO handles real-time task updates, presence, active typing, and voice-recording indicators. Multi-tab socket tracking incorporates a 5-second offline grace period, preventing brief network blips or page reloads from flickering a user's status offline. Client-side, TanStack Query handles server state, with incoming WebSocket events surgically patching or invalidating cache keys in place.
5. Media Pipeline & Voice Transcription
Attachments and audio files are hosted in Supabase Storage. Voice notes recorded directly on task cards stream to an automated pipeline powered by OpenAI Whisper, generating instant, editable transcripts so team members can skim instructions quickly without treating raw AI transcripts as infallible truth.
6. Scheduled Automation & System Health
Background jobs managed with node-cron orchestrate daily deadline notifications, purge stale notifications, and auto-archive completed tasks. Operational stability is enforced through structured Pino logging, rate limiting (both at the HTTP layer and per-socket), Helmet security headers, temporary IP lockouts for repeated failed attempts, and a /health endpoint that actively probes PostgreSQL connectivity.
Design and UX decisions
- Zero-Friction Collaborator Onboarding: Magic-link invitation → pick display name and avatar → instant board access. Returning collaborators arriving via expired email links are automatically restored, ensuring stale invitations never lock out a client.
- Colour-Coded Kanban Board: Distinct visual columns (Backlog, In Progress, Review, Done) with clear priority indicators. Built using
@dnd-kitwith pointer, touch, and keyboard sensors, providing smooth drag-and-drop with active drop-target highlighting. - Mobile-First Board Ergonomics: On narrow mobile viewports, the multi-column board transforms into swipeable tabs. Every card exposes tap-accessible Move-left, Move-right, and a "Move to" bottom sheet with comfortable 44px minimum tap targets.
- Messenger-Grade In-Task Chat: Supports contextual @mentions, threaded replies, emoji reactions, message editing, deletion, read receipts, and an unread jump-to-bottom control. Long-press triggers touch-friendly context menus on mobile devices.
- Voice-First Instructions: In-app audio recorder renders waveform playback directly within the task feed alongside the editable Whisper transcript.
- Productivity & Efficiency Metrics: Visual progress summaries and calculated efficiency scores give team leads insight into project completion velocity, turnaround intervals, and active hours without resorting to intrusive employee tracking.
- Installable Progressive Web App (PWA): Equipped with a service worker, web manifest, guided iOS home-screen installation instructions, and per-project push notification permissions via
web-push. - Accessible Design System: Tailored with Tailwind CSS and Radix/shadcn primitives, complete with persistent light/dark themes, HSL design tokens, route-level skeleton loaders, and comprehensive keyboard focus trapping.
Results
- Deployed and live in production at awatasks.com.
- Actively utilised by the client owner and by me to organise, track, and deliver real-world client software projects.
- Shipped the entire collaborative lifecycle end-to-end: magic-link onboarding, drag-and-drop Kanban boards, nested subtasks, voice instructions with editable transcripts, messenger-style chat, background cron automations, and cross-platform push notifications.
- Chat messages, presence indicators, active timers, notifications, and board statistics synchronise across clients over WebSockets without recurring polling.