NoteStack-Test / docs /PHASE0.md
Arslan1997's picture
added elevenlabs grant
00a4363
|
Raw History Blame
3.15 kB

Phase 0: Foundations task list

Legend: [x] done in this scaffold, [ ] open

Repo and infra

  • Monorepo layout: backend/, frontend/, renderer/, docs/
  • docker-compose: api, worker, postgres (pgvector), redis, minio (local R2 stand-in), renderer, frontend
  • .env.example covering every service
  • CI: backend lint + tests, frontend typecheck + build, renderer typecheck
  • Production deploy target (Fly, Render or DO App Platform) and R2 bucket + custom domain
  • Sentry (api, worker, frontend)

Backend core

  • Settings (app/config.py), DB session, Alembic initial migration with pgvector
  • Full data model from design doc Section 4
  • Health endpoint, CORS, request id logging
  • Jobs table + arq worker + Redis progress pub/sub + SSE endpoint
  • Usage metering table and helper (record_usage)

Auth (mirrors blog2video)

  • JWT access/refresh with token_version revocation
  • Google sign-in (ID token verify)
  • Email signup with 6 digit code, password login, forgot password
  • /me, logout (revoke), delete account (soft delete)
  • Workspace auto-created on first login
  • MCP OAuth 2.1 bridge (Phase 4)

Email (Resend)

  • EmailService over ResendEmailProvider, console provider for local dev
  • Templates: verification code, password reset, welcome, job finished, job failed alert
  • Signed unsubscribe link + /api/unsubscribe
  • Update email campaign tables + hourly batch sender loop

Storage (Cloudflare R2)

  • S3 client against R2 endpoint, key helpers, put/get/delete/head
  • Presigned upload flow (start, direct PUT, complete) and presigned read redirect
  • TTS cache key helper
  • Lifecycle rule on R2 for tmp/ prefix (set in Cloudflare dashboard)

LLM (agnostic, Z.ai first)

  • dspy.LM factory from env, Z.ai defaults
  • Embeddings client with fixed dimensions
  • Signatures + Pydantic outputs for CleanAndSegment, GroundedAnswer, BuildVoiceProfile, stubs for the rest
  • Em dash stripping post-processor
  • Dev sets and first optimization run (Phase 1)

Billing

  • Three tiers defined in code, BILLING_ENABLED flag, /api/billing/plans, /api/billing/me
  • Stripe checkout + webhook when billing turns on

Frontend

  • Design tokens (black, #217cff, white only), fonts
  • Night sky starfield with twinkling sparkles, reduced motion fallback
  • Custom SVG icon set (single stroke weight)
  • Logo slot (white tile, black silhouette placeholder)
  • Landing page with "Paste your Substack URL" CTA
  • Pricing section and /pricing
  • Blog: /blogs, /blogs/:slug, typed blogPosts.ts
  • Auth page: Google button + email code flow + password login
  • App shell: Mission Control, sidebar with themed icons and plain labels
  • Real product demo video on landing (replace placeholder)

Renderer

  • Remotion project with shared props schema (zod), ShortVertical and QuoteCard compositions
  • POST /render service that renders and uploads to a presigned R2 URL, progress callbacks
  • ExplainerLong and AudiogramSquare compositions (Phase 2)