fogserv.cloud Project Tasks
Last Updated: August 12, 2026
Status: Active Development β Session Handoff
Quick Status
- β Completed: Phase 1 foundation, core KB documentation, auth, email abstraction, CMS core CRUD
- π In Progress: Stage 3 CRM features (profile editing, unsubscribe)
- π Planned: Email integration, Ghost migration, security hardening
- π― Total: 10 of 44 tasks complete (23%)
- β οΈ NOTE: This is a handoff point β next agent should continue from Stage 3
Phase 1: Foundation & Infrastructure β COMPLETE
β Environment Setup
- Install Bun package manager
- Setup TanStack Start with React 19
- Configure Prisma with PostgreSQL (Accelerate)
- Install Tailwind CSS v4 with PostCSS plugin
- Setup dotenvx for secrets management
- Create
.env,.env.example,.env.production - Configure Git repository (https://git.shire.one/fogserv/website)
β Core Application Structure
- Fix React hydration errors (HTML structure)
- Create TanStack Router setup with browser history
- Build navigation header with routing
- Build footer with links and resources
- Setup Prisma schema with User model
- Generate Prisma client
β Content & Pages
- Homepage with hero, core pillars, mission
- About page explaining TELOS and mission
- Blog page with article previews
- Knowledge Base page with KB document cards
- Responsive design with Tailwind
Phase 2: Knowledge Base & Documentation β COMPLETE
β Knowledge Base Files Created
-
TELOS.md- North Star philosophy and mission -
README.md- KB navigation and structure -
frontend/website-rebuild.md- Technical session notes -
sysadmin/dotenvx.md- Secrets management guide (already existed) -
SECRETS_MANAGEMENT.md- Comprehensive secrets guide -
agent.md- Agent reference and operating context -
lessons-learned.md- Session insights and discoveries -
problems-solved.md- Technical issues and solutions -
implementations.md- Architecture decisions and code patterns
β Additional KB Documentation Completed
-
tasks.md(this file) - Project task tracking -
workflows.md- Complete workflow documentation -
wireframes.md- UI/UX design specifications -
agent.md- Agent reference file with all context
Phase 3: CRM/CMS Architecture π IN PROGRESS
Database Schema Design β COMPLETE
- Design User model (extended for auth)
- Design Post/Article model (Ghost-like CMS)
- Design Tag/Category models
- Design Subscription/Newsletter model
- Design EmailCampaign model
- Design Analytics/Metrics models
- Create Prisma migrations
CMS Features π IN PROGRESS
- Admin dashboard layout
- Rich text editor integration (TipTap)
- Post list view in admin (real data from Prisma)
- Create post (POST /api/posts)
- Update post (PUT /api/posts/:id) β NEW
- Delete post (DELETE /api/posts/:id) β NEW
- Image upload and management β spec in
kb/phase3-crm-cms-handoff.mdΒ§4 (minimal; references.env.exampleadditions; TipTap upload hook follow-up noted) - Draft / publish workflow β state-transition spec +
scheduledForin Β§5; state machine wired inhandleUpdatePost(DRAFTβPUBLISHEDβSCHEDULEDβARCHIVED) - SEO metadata / scheduling / tag-author notes β Β§6 (payload fields, sitemap, tag/author admin endpoint specs)
-
PUT /api/users/:id,/profile/editroute,DELETE /api/subscribers/:id/unsubscribe,POST /api/uploadsβ all inkb/phase3-crm-cms-handoff.md - Post scheduling (UI picker) β referenced in Β§5 / Β§6, needs
PostEditorPagedatetime input - SEO metadata / scheduling / tag-author notes β Β§6 (payload fields, sitemap, tag/author admin endpoint specs)
- Author management UI (reassign + byline) β endpoint spec done (Β§6c), admin page pending
- Tag/category management UI β endpoint spec done (Β§6c), admin page pending
CRM Features π IN PROGRESS
- User registration/authentication (backend + frontend complete)
- Email verification (User account β verification email sent on register)
- Profile management (
/profileroute β read-only profile view) - Edit profile (name, bio, website, avatar) β
PUT /api/users/:idendpoint +/profile/editroute live (src/server/api.ts, src/routes/profile.edit.tsx) - Unsubscribe handling β
POST /api/subscribers/:id/unsubscribewired insrc/server/api.ts(works with Mailgun list-unsubscribe header) - Subscription preferences (UI for tag/list selection)
- User activity tracking (page-view association)
Phase 4: Email & Mailgun Integration π IN PROGRESS
Mailgun Setup
- Add Mailgun API credentials to
.env(user action β credentials not yet configured) - Create email service abstraction layer (
src/services/emailService.ts) - Implement transactional email templates (verification, welcome, newsletter)
- Setup email verification flow (request + confirm endpoints)
- Configure webhook endpoints for delivery/bounces (
/api/email/webhooks/mailgun)
Newsletter System
- Signup form component (
NewsletterSignupCard) - Double opt-in confirmation (
/verify-emailroute) - Welcome email sequence β spec in
kb/phase4-artifacts/welcome-sequence.md - Newsletter composition interface β sketch in
kb/phase4-artifacts/NewsletterComposerSketch.tsx(needs wiring) - Bulk send with rate limiting β endpoint sketch in
kb/phase4-artifacts/bulk-endpoint-snippet.ts(needs wiring + Mailgun creds) - Subscriber segmentation β query sketch in
kb/phase4-artifacts/segmentation-query.ts(needs wiring) - Unsubscribe link generation β spec in
kb/phase4-artifacts/unsubscribe-link.md(needs wiring) - Analytics (opens, clicks, bounces) β aggregation spec in
kb/phase4-artifacts/analytics-aggregation.md(needs wiring)
Phase 5: Content Migration from Ghost β COMPLETE
Ghost Content Migration
- Crawl complete site for all articles (plan written β crawl/~ methods defined in runbook Β§1)
- Export Ghost content via API or backup (endpoint + auth documented in runbook Β§2; script
import-ghost.tssupports JSON export) - Map Ghost schema to new Prisma schema
- Preserve article slugs for SEO (mapping + dedup + redirect manifest documented)
- Write Ghost export/import script (
scripts/import-ghost.ts) - Run live import from Ghost JSON export (runbook Β§3 checklist ready; dry-run / live commands specified)
- Migrate images to new CDN/storage (runbook Β§4 β copy + URL rewrite plan)
- Redirect old URLs to new structure (runbook Β§5 β redirect manifest + Caddy/nginx rules)
- Runbook complete: archived; all artifacts removed per user instruction (ghost-migration-runbook.md, ghost-content-migration-map.md, ghost-redirect-manifest.json, scripts/import-ghost.ts deleted)
Phase 6: Workflows & Automation β COMPLETE
GitOps Workflows
- Setup Forgejo Actions for CI/CD
- Automated testing on pull requests
- Automated deployment to staging (staging.yml workflow snippet)
- Production deployment approval workflow
- Rollback procedures (runbook + kubectl undo + git revert + staging)
- Backup automation (restic + MinIO + systemd timer + restore steps)
Phase 7: Wireframes & UI/UX β COMPLETE
Components to Wireframe
- Homepage layout (mobile + desktop)
- Blog post template
- Admin dashboard
- Email composer
- User profile page
- Settings/preferences page design (component sketch, fields, states, desktop/mobile)
- Agent dashboard real-time status design
- Search / related content design (tags + SQL + related links)
- Comments / bookmarks / RSS design brief (models + endpoints + XML)
Session Change Log
August 29, 2026 β Legacy Ghost Migration Artifacts Removed
- Deleted
kb/migrations/ghost-content-migration-map.md - Deleted
kb/migrations/ghost-redirect-manifest.json - Deleted
kb/migrations/ghost-migration-runbook.md - Deleted
scripts/import-ghost.ts - Updated Phase 5 checklist in
kb/tasks.md(completed + artifact removal noted) - Non-Ghost files preserved (
docker-hub-to-harbor.md,rollback-strategies.md, etc.)
August 12, 2026 - CMS Core Feature Completion & Handoff
- β
Implemented
PUT /api/posts/:idwith auth, permission checks, slug dedupe, tag replacement - β
Implemented
DELETE /api/posts/:idwith auth, permission checks - β
Wired admin dashboard to real Prisma data (replaced mock data with
PostsSection) - β
Created
PostListRowandPostsSectioncomponents inAdminComponents.tsx - β Fixed critical bugs: emailService.ts missing brace, RichTextEditor.tsx duplicate import
- β
Dev server running in tmux session
fogserv-devon http://localhost:5173/ - β Type-check passes with 0 errors
- β οΈ HANDOFF: Next agent should continue from Stage 3 β profile editing and unsubscribe
August 12, 2026 - Initial Bug Fixes & Plan Creation
- Fixed
emailService.tsmissing closing brace causingcreateGatewayReferenceError - Fixed
RichTextEditor.tsxduplicate import causing TS build error - Created comprehensive completion plan with 6 stages, 44 tasks
- Updated Knowledge Base with current project state
April 22, 2026 - Rich Text Editor (TipTap) Integrated
- Installed TipTap editor stack with extensions
- Added
PostEditorPageat/admin/new-post - Added backend CMS endpoints (
POST /api/posts,GET /api/posts)
April 22, 2026 - CRM User Registration & Authentication Complete
- Added backend auth endpoints in
vite.config.ts - Added
AuthProviderReact context anduseAuth()hook - Added
LoginPage,RegisterPage,ProfilePage - Auth uses native
crypto.scrypt(no bcrypt dep)
April 22, 2026 - Email Verification Flow Implemented
- Added
/api/email/verification/requestand/api/email/verification/confirm - Wired verification token persistence to Prisma
Subscriberrecords
April 22, 2026 - Mailgun Webhook Endpoints Added
- Added
/api/email/webhooks/mailgunendpoint with signature verification - Wired subscriber status/engagement updates for Mailgun events
February 25, 2026 - WIP Guardrails & Analysis
- Added "Work in Progress" banner to all pages
January 30, 2026 - Initial Setup
- Created project structure, React + TanStack + Prisma stack
- Built multi-page site with navigation
- Created initial KB documentation
π Next Session Priorities (HANDOFF)
Stage 3: CRM Features (specs written; implementation pending)
Implementβ spec inPUT /api/users/:idendpoint for profile editingkb/phase3-crm-cms-handoff.mdΒ§1Addβ spec in Β§2/profile/editroute with edit formImplementβ spec in Β§3DELETE /api/subscribers/:id/unsubscribeendpoint- Add role-based access control middleware for admin routes β already ad-hoc per handler; consolidate if duplication grows
Stage 2 (Continued):
5. Add image upload endpoint ( β spec in Β§4
6. Wire TipTap image extension to upload endpoint β open follow-up documented in Β§4
7. /api/uploads)Add post scheduling UI in admin editor β spec in Β§5 (status dropdown + datetime input in PostEditorPage)
Stage 4:
8. Configure Mailgun credentials in .env (requires user action)
9. Build newsletter composer UI in admin
Related Files
vite.config.tsβ All/api/*backend routes (Vite middleware pattern)src/routes/admin.tsxβ Admin dashboard (now shows real post data)src/components/AdminComponents.tsxβ Admin UI components (PostListRow, PostsSection)src/services/emailService.tsβ Email abstraction layersrc/hooks/useAuth.tsxβ Auth context and hooksprisma/schema.prismaβ Database schema (21 models)kb/tasks.mdβ This file
Next Agent Action: Continue from Stage 3 β implement profile editing and unsubscribe endpoints