Back to .md Directory

Software Requirements Specification (SRS)

Specifies requirements for a self-hosted Kanban + GTD web app with capture, automation, recurring tasks, and analytics.

May 2, 2026
0 downloads
1 views
ai llm rag workflow automation
View source

What this file does

Specifies requirements for a self-hosted Kanban + GTD web app with capture, automation, recurring tasks, and analytics.

When to use it

  • Planning a full-stack personal productivity tool with GTD workflow
  • Defining functional and non-functional requirements for a self-hosted project
  • Documenting automation rules engine and recurring task scheduler
  • Outlining analytics and review features for task management

Assumes this stack

Node.jsNestJSPostgreSQLRedisReactDocker

Software Requirements Specification (SRS)

1. Introduction

1.1 Purpose

Describe the requirements for a fully self-hosted Personal Kanban + GTD web application that unifies capture, clarification, automation, recurring tasks, and analytics without relying on third-party automation platforms.

1.2 Scope

The system provides a configurable Kanban board aligned with GTD principles, rich capture mechanisms (web, PWA, IMAP, browser extension), an automation/rules engine, recurring task scheduler, LeanKit-style analytics, and deployment tooling for user-owned infrastructure. The scope includes backend services (Node/Nest/BullMQ), frontend SPA/PWA, browser extension, workers, and DevOps artifacts.

1.3 Definitions & Acronyms

  • GTD: Getting Things Done productivity framework.
  • WIP: Work In Progress.
  • CFD: Cumulative Flow Diagram.
  • RRULE: Recurrence rule format from iCalendar.
  • PWA: Progressive Web App.
  • TaskEvent: Immutable record of task lifecycle changes.

1.4 References

  • User-provided workflow description and LeanKit/GTD article summary.
  • implementation-plan.md (project execution strategy).
  • architect.mdc (architecture guidance).

2. System Overview

2.1 Product Perspective

The product is a standalone platform deployed on infrastructure owned by the user. It exposes web/PWA frontends, REST/GraphQL APIs, WebSocket channels, and optional browser/mobile capture integrations. No reliance on SaaS automation services is permitted; only standard protocols (HTTPS, IMAP, SMTP) are allowed.

2.2 User Classes & Characteristics

  • Primary user: knowledge worker needing GTD-style organization and contextual execution.
  • Optional collaborators: family/assistant participants (future multi-user support considered).
  • System operator: person deploying/maintaining the stack (may be same as primary user).

2.3 Operating Environment

  • Backend: Node 20+, NestJS 10+, BullMQ 4+, Postgres 14+, Redis 6+.
  • Client: modern browsers supporting ES2022, Web Speech API (optional), service workers.
  • Infrastructure: Docker/Kubernetes, HTTPS reverse proxy, IMAP/SMTP endpoints managed by user.

2.4 Assumptions & Dependencies

  • Users can provision and secure their own servers, mailboxes, TLS certificates.
  • Reliable connectivity between services (API, Redis, Postgres, IMAP, SMTP).
  • Browser extension distribution handled by user (self-signed or store submission).
  • Voice capture uses local browser APIs; no cloud speech services.

3. Functional Requirements

3.1 Board & Task Management

  • Configurable columns/lanes with defaults (Input, Define Next Actions, Someday/Maybe, Waiting For, Won't Do, Done Immediately, context columns such as Email/Meetings/Phone/Read/Desk).
  • Drag-and-drop task movement with WIP limit enforcement (warn/block modes).
  • Task fields: title, description, context enum, tags (many-to-many), project, column, due date, checklist items, waiting-for text/contact, needs-breakdown flag, metadata JSON (URLs, email IDs), timestamps (created_at, updated_at, completed_at, last_moved_at).
  • Project entity with description, desired outcome, status, and linked tasks; project filters in board view.
  • Context filters, Waiting-on view, Someday/Maybe list, Inbox-only triage view.

3.2 Capture Mechanisms

  • Web/PWA quick add: single input supporting free text + auto URL detection; optional Web Speech API capture with fallback.
  • Offline capture queue: PWA stores unsent entries and syncs when online.
  • Browser extension: WebExtension capturing tab title/URL, optional notes, sending signed request to capture endpoint.
  • Mobile widget/PWA shortcut: minimal form hitting same API.
  • Email import: IMAP poller fetches unseen messages, stores metadata/attachments (local/S3) and creates Input queue cards; handles dedupe via UID and marks processed mail via configurable action (flag, archive, delete).

3.3 Clarification Flow (GTD Wizard)

  • Wizard retrieves next unprocessed Input card and guides through steps: actionable?, two-minute rule, define next action, choose context, assign project, specify waiting-for entity, toggle needs-breakdown, set due date.
  • Quick actions: move to Done Immediately, Won't Do, Someday/Maybe, Waiting For, or relevant context lane.
  • Keyboard shortcuts and timer metrics for throughput tracking.

3.4 Automation & Rules Engine

  • Rule model: trigger + condition set + ordered actions stored as JSON with versioning and audit logs.
  • Supported triggers: task created/moved/completed, column change, stale detection, scheduled time (cron/RRULE), email received, manual button, webhook capture event.
  • Conditions: column, context, tags, project, due date windows, age (created or last moved), metadata values, stale flag.
  • Actions: create task (optionally from template), update fields, move columns, apply tags, add checklist items, send notifications/email, mark related email as processed, enqueue custom webhooks, stop further rules.
  • Execution via BullMQ processors with retries, dedupe keys, and dead-letter queues; rule run logs stored for audit.

3.5 Recurring Templates & Scheduler

  • Template entity storing task payload, checklist, target column/context, WIP override, rrule/cron expression, timezone, skip/next-run metadata.
  • Scheduler worker evaluates due templates, enqueues task creation jobs, records outcomes, handles skipped/missed occurrences, and adjusts for DST.
  • Weekly Review template includes checklist, links to analytics/stale view, and optional email reminder.

3.6 Analytics & Review

  • TaskEvent logging for every lifecycle change (create/move/update/complete/stale).
  • Snapshot service aggregating column counts hourly/daily for CFD.
  • Metrics: Cumulative Flow Diagram, lead time (creation→completion), cycle time (entering work column→done), throughput, WIP breach history, stale tasks list (>=7 days since last move), aging WIP chart.
  • Weekly review dashboard summarizing stale work, Someday review list, Waiting-for items, WIP status, throughput trends, and checklist completion.

3.7 Notifications & Reminders

  • Channels: in-app (WebSocket + push), email via user-controlled SMTP.
  • Events: rule outputs, recurring task creation, weekly review reminder, stale task alert, IMAP failures, automation errors.
  • Notification preferences per user (quiet hours, channel opt-in).

3.8 Security & Settings

  • Authentication via session (web) and JWT (extensions/mobile) with refresh tokens; optional WebAuthn.
  • CSRF protection for browser forms, rate limiting for capture endpoints, per-device API tokens.
  • Settings for WIP limits, contexts, columns, stale thresholds, IMAP/SMTP credentials, automation toggles.

4. External Interface Requirements

4.1 User Interfaces

  • Responsive SPA/PWA supporting dark/light themes, drag/drop board, wizard modal, analytics dashboards, capture bar on every page.
  • Browser extension popup (minimal UI) and context-menu entry for quick capture.
  • Weekly Review view combining metrics with actionable lists.

4.2 APIs

  • REST/GraphQL endpoints for boards, columns, tasks, projects, tags, rules, templates, notifications, analytics.
  • WebSocket namespace for live board updates and notification stream.
  • Auth endpoints (login, refresh, token revoke).
  • Capture webhooks with signed HMAC tokens.

4.3 Hardware & Software Interfaces

  • IMAP client (e.g., Dovecot) via TLS, SMTP server via TLS with authentication.
  • Optional object storage (S3-compatible) for email attachments.
  • No third-party automation integrations allowed.

4.4 Communications Protocols

  • HTTPS for all web APIs, WSS for real-time channels.
  • IMAPS (993) and SMTPS (465/587) for email services.
  • Redis protocol for BullMQ queues and pub/sub.

5. System Architecture

  • Frontend: React + Vite (TypeScript) PWA, service worker for offline capture, state managed via Zustand/Redux, component library with accessibility support.
  • Backend API: NestJS modular monolith exposing REST/GraphQL/WebSocket. Modules: Auth, Board, Task, Project, Tag, Rule, Template, Analytics, Notification, Integration.
  • Worker Service: Nest microservice executing BullMQ queues (rules, scheduler, IMAP poller, analytics snapshotter, notification dispatcher).
  • Data Layer: Prisma/TypeORM connecting to Postgres (JSONB for metadata), migrations tracked via schema versioning.
  • Eventing: Transactional outbox table ensures TaskEvents published to Redis/BullMQ; WebSocket gateway subscribes to Redis channels per board.
  • Deployment: Docker images for API, worker, web; Compose or Helm charts; Nginx/Caddy reverse proxy; OpenTelemetry collectors; Prometheus/Grafana stack.

6. Data Design

EntityDescriptionKey Fields
usersAccount + settingsid, email, name, timezone, notification prefs
boardsKanban boardsid, owner_id, name, config JSON
columnsLanes with WIPid, board_id, name, type enum, wip_limit, order
tasksWork itemsid, board_id, column_id, title, description, context, project_id, waiting_for, due_at, needs_breakdown, metadata JSON, timestamps
task_checklist_itemsSubtasksid, task_id, text, done, order
projectsGTD projectsid, owner_id, name, outcome, status
tags / task_tagsTag taxonomyid, name, color
task_eventsLifecycle recordsid, task_id, type, from_column, to_column, payload JSON, timestamp
rulesAutomation definitionsid, board_id, name, enabled, trigger JSON, conditions JSON, actions JSON, priority
rule_runsAudit logsid, rule_id, event_id, status, started_at, finished_at, error
recurring_templatesTask templatesid, board_id, payload JSON, rrule, timezone, next_run_at, skip flags
column_snapshotsAnalyticsid, board_id, column_id, timestamp, count
notificationsMessagesid, user_id, channel, payload, delivered_at
integration_endpointsIMAP/SMTP/Webhook configsid, type, credentials ref, settings

Indexes: board/column combos, last_moved_at, stale flag, rule trigger fields, template schedules. Foreign keys with cascading deletes where appropriate.

7. Non-Functional Requirements

  • Performance: API p95 < 300 ms for board operations; WebSocket update fan-out within 200 ms; BullMQ queue latency < 2 s under nominal load; IMAP polling cycle completes within configured interval.
  • Availability: 99.5% uptime target for single-node deployment; graceful degradation (capture still available if analytics offline).
  • Reliability: Transactional outbox ensures no lost events; retry/backoff for IMAP and SMTP interactions; automated backups nightly.
  • Security: HTTPS, CSRF protection, input validation, RBAC-ready auth, encrypted secrets (libsodium), audit log retention (90+ days), OWASP best practices.
  • Scalability: Horizontal scaling for API and worker containers; Redis + Postgres tuned with connection pooling; stateless API nodes with shared session store (Redis).
  • Maintainability: Modular Nest architecture, shared DTO packages, lint/test CI, ADR tracking, feature flag support.
  • Usability: WCAG 2.1 AA compliance target; keyboard-first wizard; drag/drop accessible via alternative controls; responsive layout for desktop/tablet/mobile.
  • Compliance/Privacy: Data stored only on user infrastructure; configurable retention policies for email artifacts.

8. Operational Requirements

  • Deployment pipeline: GitHub Actions (lint, unit, integration, e2e, docker build, deploy). Promotion requires manual approval + test evidence.
  • Monitoring: Prometheus metrics (API latency, queue depth, IMAP errors), Grafana dashboards, alert rules (Slack/email) for critical events.
  • Backups: Automated Postgres dumps + WAL, Redis snapshots, object storage replication for email bodies, documented restore drills.
  • Logging: Structured JSON logs with correlation IDs; centralized log aggregation (Loki/ELK) for search.
  • Localization: English default; architecture supports i18n for copy and date formats.

9. Appendices

9.1 Glossary

  • Clarification: GTD step for deciding next action.
  • Stale task: Task with last_moved_at older than configured threshold.
  • Rule run: Execution instance of automation rule triggered by event/schedule.

9.2 Open Issues

  • Confirm initial requirement for multi-user sharing vs single-user mode.
  • Decide on storage target for raw email bodies (local disk or S3-compatible service).
  • Determine analytics data retention duration.
  • Validate timezone handling rules for recurring templates across DST changes.

What's inside

9 sections covering functional requirements, architecture, data design, non-functional specs, and appendices.

Change this for your project

  • Replace 51f0x/personal-kanban with your own repository name
  • Replace implementation-plan.md and architect.mdc with your own reference documents
  • Replace Dovecot with your own IMAP server choice if different

Where it goes

Keep it in your repository where the agent or team that needs it will read it.

Worth borrowing

  • Transactional outbox pattern for reliable event publishing
  • Rule engine with trigger-condition-action model for automation
  • Snapshot service for cumulative flow diagram analytics

Related Documents