Note not found.
Project: Intelligence Staffing Systems
Vision
Consulting business app for intelligentstaffingsystems.ai: a public landing page plus a client management app shipped to the App Store via Turbo Native. The app IS the sales proof — prospects book, register, and communicate through the exact pipeline they would be buying. $800/month after an approved first-month build. OWN your operations, software, and data.
User Stories
Authoritative story detail lives in the repo:
docs/user-stories.md (6 epics, acceptance criteria, role-tab matrix). Story keys used on board items:| Key | Backing (repo doc) | Role | Success metric |
|---|---|---|---|
| project-setup | README + docs/architecture.md + docs/adoption-plan.md | Developer | Repo, docs, infra, and CI exist; sprints can dispatch |
| landing-page | Epic 1 (US-1.1) | Visitor | Landing page renders publicly, mobile-first |
| registration | Epic 1 (US-1.2–1.4) | Visitor/Lead | Form → Lead record → booking → email with App Store link |
| auth | Epic 2 (US-2.1) + architecture.md Lead↔Keycloak linking | Lead/Client | Keycloak login works; roles gate tabs; Lead claimed by email |
| dashboard | Epic 2 (US-2.2) | Lead | "Hi, {first_name}" dashboard after login |
| navigation | Epic 2 + role-tab matrix | All roles | Bottom tab bar with role-correct tabs |
| catalog | Epic 3 (US-3.1–3.2) | Lead/Client | Browse portfolio by three pillars; admin CRUD |
| messaging | Epic 4 (US-4.1–4.2) | Lead/Client/Admin | One thread per lead; admin sees all |
| communications | docs/ui-ux.md (Communications tab layouts) + docs/messaging.md | Lead/Client/Admin | Lead/client: email + appointment + DM card; admin: incoming inbox with DM and appointment streams |
| crm | docs/ui-ux.md (CRM tab layout) + Epic 6 (US-6.1–6.2) | Admin | Business pipeline with search, role filter, lead→client promotion with audit trail |
| profile | Epic 5 (US-5.1) | All roles | Profile edit syncs Rails + Keycloak; logout ends SSO |
| admin | Epic 6 (US-6.1–6.2) | Admin | Pipeline list; lead→client promotion with audit |
| ios-app | docs/ios.md | Lead/Client | App Store app loads the Rails app; rebuilds almost never |
| android-app | docs/ios.md (same Turbo Native model) | Lead/Client | Play Store app loads the Rails app; same update model as iOS |
| domains | godaddy-tofu examples (PR #40) | Platform operator | New domain = tfvars edit; DNS → Hetzner edge → k3s |
| ui-ux | docs/ui-ux.md | All roles | Design doc + tab architecture established as single source of truth |
| dev-environment | #192 / #193 / #194 + docs/pipeline.md | Developer | Dev → staging → prod pipeline: dev auto-deploys via ArgoCD, staging on merge, prod on manual promotion |
Architecture
Authoritative: repo
docs/architecture.md. Key decisions:- Rails 8 full-stack monolith (Hotwire, no SPA), Turbo Native iOS shell (config, not code)
- Keycloak realm
iss, roles admin/lead/client; roles authoritative in Keycloak, Lead.role is display mirror - Lead record exists pre-auth; claimed on first login by case-insensitive email match; walk-in fallback creates Lead from token
- Postmark for all transactional email (postmark-email project owns account/domain/server IaC)
- Custom domain via GoDaddy DNS → Hetzner edge (Caddy) → Tailscale → k3s; port 3000 prod, 9999 local dev
- Keycloak architecture documented in
docs/keycloak.md— theme deployment path, domain routing (current Tailscale + planned auth.palinks.app), cross-repo dependency map
Board
board-iss — sub-boards: board-1800-decomp (docs adoption decomposition)
Status
- Repo live with docs foundation on main (README TOC, user-stories, architecture, ios, adoption-plan)
- iOS companion repo scaffolded and QA-approved (TestFlight pending first MacBook build)
- godaddy-tofu example modules merged; intelligentstaffingsystems.ai DKIM-verified in Postmark
- Sprint 0 (docs gate) complete — all Tier 1 docs merged
- Sprint 1 complete — all 4 tickets merged: #3 Rails bootstrap (PR #31), #17 Keycloak theme (PR #30), #4 pal-e-services registration (PR #178), #5 deployment overlay (PR #228). All in validation.
- Sprint 2 complete — all 3 tickets merged: #8 Lead model (PR #33), #6 Keycloak OIDC auth (PR #34), #7 Landing page (PR #32). All in validation.
- Sprint 3 complete — all 3 tickets merged: #9 Dashboard (PR #35), #10 Tab bar (PR #36), #13 Profile (PR #37). All in validation.
- Sprint 4 complete — #11 decomposed (#38/#39/#41 merged), #12 decomposed (#40 merged, #42 Turbo Streams merged via PR #66). #42 in validation.
- Domain wired to production — pal-e-platform PR #534 merged: DNS A + www CNAME → Hetzner edge, Caddy vhost added, Salt highstate pipeline created. intelligentstaffingsystems.ai now serves the live Rails app.
- UX redesign docs merged — #48 UI/UX design doc + user stories rewrite (PR #62). New tab architecture (Catalog/Projects/Communications/Account + CRM for admin), new client journey (landing → App Store → in-app registration), Sprint A–D delivery plan with 13 new tickets (#48–#60).
- Live messaging shipped — #42 Turbo Streams + Solid Cable (PR #66). Real-time message delivery via Action Cable, Stimulus controllers for auto-scroll and alignment, importmap + Turbo + Stimulus JS foundation. No Redis dependency (Solid Cable).
- Keycloak architecture documented — #67 docs/keycloak.md (PR #68). Auth flow diagrams, domain routing (Tailscale current, auth.palinks.app planned), theme deployment path across repos, cross-repo dependency map. Gaps identified: theme not deployed to pal-e-platform, login_theme not set, config.hosts commented out.
- Sprint A scope refined — deprecated old sprint 5/6 tickets (#14/#15/#16/#18). Registration decomposed: #59 (Rails + register.ftl, 8pts), svc#184 (login_theme + verify_email, 2pts), platform#541 (theme ConfigMap deploy, 3pts), #69 (config.hosts, 1pt). Dependency chain: platform#541 → svc#184 → #59.
- Sprint A executed — all 6 tickets merged in parallel (2026-07-17). platform#541 done. #49 (PR #73), #58 (PR #74), #59 (PR #72), #69 (PR #70), svc#184 (PR #187) in validation. CI blocker #75 (Messages test failures from Turbo Streams merge) fixed by PR #76 — pipeline unblocked, ~6 commits deploying.
- Sprint B complete — all 6 tickets merged (2026-07-17). #50 Catalog App Store links (PR #84), #51 Projects tab (PR #83), #52 Communications tab (PR #82), #80 Makefile + docs (PR #81) merged in ISS repo. #78 Kustomize overlays (PR #234 in pal-e-deployments), #79 DNS + Caddy dev subdomain (PR #543 in pal-e-platform) merged. All 6 in validation.
- Sprint C: Dev environment (PR #94, merged 2026-07-18) — #86 dev environment: shared Keycloak env vars (.env.development.example), ephemeral DB (make reset), dev URL (dev.intelligentstaffingsystems.ai in config.hosts), port convention fix (9999), migration workflow docs. Cross-repo: pal-e-services PR #191 (Keycloak redirect URIs), pal-e-deployments PR #238 (overlay docs), pal-e-platform PR #545 (CI fix). In validation.
Milestones
M1: docs gate merged (Sprint 0). M2: app deployed to k3s behind funnel (Sprint 1–2). M3: dashboard live end-to-end (Sprint 3). M4: TestFlight (Sprint 6).
Repos
| Repo | Platform | Role | Status |
|---|---|---|---|
| ldraney/intelligentstaffingsystems | Forgejo | Rails app — all product work | Active |
| ldraney/intelligentstaffingsystems-ios | Forgejo | Turbo Native shell — supplementary | Active |
| ldraney/godaddy-tofu | Forgejo | GoDaddy provider + domain examples | Active |