Skip to content

Task & Time

Cross-platform task management and time tracking SaaS built by Bytes and Books.

Architecture Overview

flowchart TB
    subgraph Clients
        Web["Web Portal<br/>(Next.js / Cloudflare Pages)"]
        Desktop["Desktop App<br/>(Tauri + Vite + React)"]
        Homepage["Marketing Site<br/>(Next.js / Cloudflare Pages)"]
        Slack["Slack App"]
    end

    subgraph AWS
        APIGW["API Gateway"]
        Cognito["Cognito User Pool"]
        subgraph Lambdas
            TaskSync["task-sync"]
            TimeEntrySync["time-entry-sync"]
            CustomerSync["customer-sync"]
            StatusCheck["status-check"]
            ActiveTimerSync["active-timer-sync"]
            XeroSync["xero-sync"]
            SlackIntegration["slack-integration"]
        end
        subgraph DynamoDB
            Tasks["tasks"]
            TimeEntries["time-entries"]
            TimeBills["time-bills"]
            Customers["customers"]
            CustomerUsers["customer-users"]
            Pillars["pillars"]
            ActiveTimers["active-timers"]
            XeroTokens["xero-tokens"]
            CustomerFocus["customer-focus"]
            SlackMappings["slack-channel-mappings"]
        end
        EventBridge["EventBridge<br/>(Scheduled)"]
        SES["SES Email"]
    end

    subgraph External
        Xero["Xero Accounting"]
        Claude["Claude AI<br/>(Title Generation)"]
        Sentry["Sentry<br/>(Error Tracking)"]
    end

    Web & Desktop -->|REST + JWT| APIGW
    Homepage -->|POST /api/leads| APIGW
    Slack -->|Events + Interactivity| APIGW
    APIGW -->|Authorize| Cognito
    APIGW --> Lambdas
    Lambdas --> DynamoDB
    EventBridge -->|Schedule| StatusCheck
    CustomerSync --> SES
    TimeEntrySync --> Xero
    XeroSync --> Xero
    SlackIntegration --> Claude
    Lambdas --> Sentry
Section Description
Architecture Overview Monorepo structure, deployment topology, build pipeline
API Endpoints All REST API routes with auth requirements
DynamoDB Tables Table schemas, keys, GSIs, entity relationships
Integrations Xero, Slack, Cognito, and SES integration flows
Status Workflows Task and TimeBill state machines
Environment Variables All config values and how they flow
Web App Structure Next.js App Router, auth, navigation patterns
Configuration Guide Where to set each config value
Deployment Guide Full deployment walkthrough
Adding Features How to add endpoints, tables, pages, and Lambdas
Updating Docs How to edit and deploy this documentation

Tech Stack

Layer Technology
Desktop App Tauri + Vite + React 18 + Zustand + Dexie.js
Web Portal Next.js 14 + React 18 + React Query + Tailwind CSS
Marketing Site Next.js 14 (Cloudflare Pages)
Auth AWS Cognito (JWT)
API API Gateway + Lambda (Node.js 20.x)
Database DynamoDB (10 tables, PAY_PER_REQUEST)
Infrastructure AWS CDK v2
Accounting Xero (OAuth 2.0 + Projects API)
Chat Slack (Slash commands, message actions, modals)
AI Claude Haiku (task title generation)
Email AWS SES
Error Tracking Sentry (4 projects)
Hosting Cloudflare Pages (web + homepage + docs)