No description
Find a file
2026-07-10 13:28:00 -04:00
.devin/workflows docs: capture exploration — PAX8 integration scope 2026-07-10 11:45:11 -04:00
.firecrawl feat: Mimecast multi-tenant held mail viewer 2026-03-31 22:38:22 -04:00
.planning docs(10): record planning completion in STATE.md, add pattern map 2026-07-10 13:28:00 -04:00
app feat(engagement): replace Graph email counts with real-time mimecast data 2026-06-02 20:25:14 -04:00
components fix(theme): guard ThemeSessionBridge sync with hasSynced ref 2026-05-14 21:58:35 -04:00
dev feat(260519-0oz-02): add apply-fh-deposit.ts CLI script and 5/18 batch mapping JSON 2026-05-19 00:37:31 -04:00
docs feat(design): nav/visual overhaul — brand layer, /status route, KPI dashboard, TanStack DataTable 2026-05-03 09:33:13 -04:00
hooks Add comprehensive admin features and multi-system integration 2025-11-19 14:18:16 -05:00
lib feat(engagement): replace Graph email counts with real-time mimecast data 2026-06-02 20:25:14 -04:00
migrations feat(260521-fci-02): wire tickets-reconcile schedule + migration 090 2026-05-21 11:09:36 -04:00
public fix(04-01): restore phase 2/3 work lost by worktree soft-reset 2026-05-03 18:01:14 -04:00
scripts fix(260519-0oz-02): defer QBO client construction in dry-run to avoid credential requirement 2026-05-19 00:38:47 -04:00
tasks feat: Duo Security integration — full data sync from Accounts + Admin API 2026-03-27 11:10:30 -04:00
.dockerignore Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
.gitignore chore: remove build artifacts and update gitignore 2025-10-28 23:21:59 -04:00
.mcp.json feat(design): nav/visual overhaul — brand layer, /status route, KPI dashboard, TanStack DataTable 2026-05-03 09:33:13 -04:00
_clientMiddlewareManifest.json Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
ADDIGY_API_GUIDE.md Add Addigy API integration and Docker deployment with Redis caching 2025-10-28 22:49:08 -04:00
ARCHITECTURE.md feat(design): nav/visual overhaul — brand layer, /status route, KPI dashboard, TanStack DataTable 2026-05-03 09:33:13 -04:00
AUTOTASK_API_GUIDE.md Add comprehensive admin features and multi-system integration 2025-11-19 14:18:16 -05:00
CLAUDE.md fix(04-01): restore phase 2/3 work lost by worktree soft-reset 2026-05-03 18:01:14 -04:00
components.json Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
DESIGN.md feat: status popover + CSV export 2026-05-03 10:20:27 -04:00
docker-compose.yml feat: Veeam RPO analysis, comparison, ticket analysis + company teams table 2026-04-29 09:16:46 -04:00
DOCKER_README.md Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
Dockerfile Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
eslint.config.mjs Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
favicon.0b3bf435.ico Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
FIX_TICKET_SYNC.md Add comprehensive admin features and multi-system integration 2025-11-19 14:18:16 -05:00
get-config-text.js Add comprehensive admin features and multi-system integration 2025-11-19 14:18:16 -05:00
LCI_FEATURE_DESIGN.md feat: QuickBooks Online integration 2026-03-17 07:39:55 -04:00
mcp.json feat: add authentication, user management, and admin features 2026-01-31 12:43:14 -05:00
middleware.ts feat: RMM Overshell, IT Glue audit/write-back, LogLift, link-aware bundles, dashboard overhaul 2026-05-03 07:13:18 -04:00
next-development.log Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
next-devtools-config.json Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
next.config.ts Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
package-lock.json feat(09-05): ProfileChannelsSection (Teams + ntfy + QR code) + qrcode.react install 2026-05-10 07:48:03 -04:00
package.json feat(09-05): ProfileChannelsSection (Teams + ntfy + QR code) + qrcode.react install 2026-05-10 07:48:03 -04:00
postcss.config.mjs Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
POSTGRES_SYNC_SETUP.md Add comprehensive admin features and multi-system integration 2025-11-19 14:18:16 -05:00
PULSE_DATABASE_SKILL.md docs: refresh database skill — timezone (UTC), full picklist tables, updated row counts 2026-03-17 23:05:57 -04:00
README.md docs(analyzer): phase 8 — operator runbook 2026-04-29 11:05:46 -04:00
routes.d.ts Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
test-config.js Add comprehensive admin features and multi-system integration 2025-11-19 14:18:16 -05:00
test-time-entry.js Add comprehensive admin features and multi-system integration 2025-11-19 14:18:16 -05:00
tsconfig.json Restructure: rename to Pulse and move app to root 2025-10-28 23:08:54 -04:00
vitest.config.ts feat: AI ticket analyzer (phases 1-6) 2026-04-29 10:59:40 -04:00

Pulse

Internal PSA management dashboard for Wulf Consulting. Pulse syncs Autotask data into Postgres and layers dashboards, ticket workflow automation, and analytics across a number of MSP tooling integrations (Microsoft 365, Datto RMM, Veeam, Auvik, Addigy, IT Glue, Mimecast, SentinelOne, Duo, Zoom, QuickBooks Online, Zabbix, and more).

Stack

  • Next.js 16 (App Router) + React 19, TypeScript
  • PostgreSQL 16 via pg (no ORM); Redis for caching
  • Better Auth — magic link, TOTP 2FA, Microsoft OAuth
  • Tailwind 4 + shadcn/ui, recharts, sonner, lucide
  • Anthropic SDK for AI triage and analysis features
  • node-cron scheduler embedded in the app process
  • Docker Compose for local and prod (Traefik-fronted)

Quick start

Prerequisites: Docker + Docker Compose, or Node 20+ and a local Postgres/Redis.

cp .env.example .env.local   # if present, otherwise see docker-compose.yml
docker compose up -d         # Postgres applies migrations/ on first init
npm install
npm run dev                  # http://localhost:3100

The first user to authenticate is bootstrapped as super-admin from DEFAULT_ADMIN_EMAIL.

Scripts

Command What it does
npm run dev Next.js dev server on port 3100
npm run build Production build (turbopack)
npm start Run the built app
npm run lint ESLint
npx tsc --noEmit --pretty Type check (the project's only automated check — there is no test suite or CI)

Project layout

app/                    Next.js App Router — pages and app/api/**/route.ts handlers
components/             Feature components; components/ui/ is shadcn primitives
lib/services/           Integration clients, sync services, scheduler
lib/types/              Shared TypeScript types per domain
lib/auth*.ts            Better Auth config and helpers
migrations/             Numbered SQL migrations applied on Postgres init
scripts/                One-off ops/diagnostic scripts (not tests)
docs/                   Deep-dive guides per integration and feature

Configuration

All credentials come from environment variables. The major groups:

  • Database / cache: POSTGRES_HOST/PORT/DB/USER/PASSWORD (or DATABASE_URL), REDIS_URL
  • Auth: BETTER_AUTH_SECRET, BETTER_AUTH_URL, MICROSOFT_CLIENT_ID/SECRET/TENANT_ID, DEFAULT_ADMIN_EMAIL
  • Autotask: AUTOTASK_API_URL, AUTOTASK_USERNAME, AUTOTASK_SECRET, AUTOTASK_API_INTEGRATION_CODE, AUTOTASK_WEBHOOK_SECRET
  • Microsoft 365 Graph (app): MSGRAPH_CLIENT_ID/SECRET/TENANT_ID
  • Other integrations: DATTO_RMM_*, VEEAM_VSPC_*, AUVIK_*, ADDIGY_*, ITGLUE_*, MIMECAST_*, S1_*, DUO_*, ZOOM_*, QBO_*, ZABBIX_*, SALESBLDR_*
  • AI: ANTHROPIC_API_KEY

See AUTOTASK_API_GUIDE.md and ADDIGY_API_GUIDE.md for credential setup. docs/ has per-integration guides for the rest.

Documentation

  • CLAUDE.md — repo orientation for AI coding sessions; also a useful overview for new contributors
  • AUTOTASK_API_GUIDE.md, ADDIGY_API_GUIDE.md — credential setup
  • POSTGRES_SYNC_SETUP.md — database initialization
  • DOCKER_README.md — Docker workflow
  • PULSE_DATABASE_SKILL.md — diagnostic SQL queries
  • docs/wulf-pulse-ticket-analyzer-runbook.md — AI ticket analyzer operator runbook (cost monitoring, IT Glue alias map, failure triage)
  • docs/ — sync behavior, webhook setup, workflow editor, per-integration guides

Deployment

Production runs via docker compose up -d behind Traefik. The app is reachable at pulse.wulfconsulting.cloud. There is no CI/CD pipeline — deploys are manual (rebuild image, recreate containers).

License

Internal use only.