Vadym Samoilenko
eb9cdbf639
Finalize: CLAUDE.md, report viewer, tsconfig, type fixes
...
CI / Backend — lint + test (push) Has been cancelled
CI / Frontend — lint + typecheck (push) Has been cancelled
CI / Build + push Docker images (push) Has been cancelled
- Update CLAUDE.md with full project structure and conventions
- Add report viewer page: score ring, WCAG compliance cards, issue list with severity filter, next steps, export + auto-fix buttons, real-time polling
- Add Alembic script.py.mako template (required for alembic revision --autogenerate)
- Add frontend/tsconfig.json + postcss.config.js (Next.js build requirements)
- Fix TypeScript error in supabase/server.ts (explicit CookieOptions type)
- Upgrade Next.js 15.3.2 → 15.5.18 (cache poisoning CVE fix)
- Update .gitignore: frontend build artifacts, backend venv, tsbuildinfo
TypeScript: 0 errors (npx tsc --noEmit passes)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 15:20:43 +01:00
Vadym Samoilenko
5cbbcc6e5e
Phase 4–6: Next.js frontend, production deploy, CI/CD
...
CI / Backend — lint + test (push) Waiting to run
CI / Frontend — lint + typecheck (push) Waiting to run
CI / Build + push Docker images (push) Blocked by required conditions
Frontend (Next.js 15 + shadcn/ui + Tailwind, Supabase Auth):
- Landing page: hero, feature grid, social proof (EU Accessibility Act), CTA
- Pricing page: Free / Pro $29 / Business $149 with highlighted Pro tier
- Auth: magic link login + signup (Supabase OTP, no password)
- App layout: sidebar nav (Dashboard, History, Billing, Team)
- Dashboard: drag-and-drop PDF upload with quota error handling
- Jobs history: table with score badges and status indicators
- Billing: Stripe Checkout + Customer Portal integration
- Supabase SSR client/server helpers
Deploy:
- docker-compose.prod.yml: postgres, redis, minio, api, celery, nextjs, caddy
- Caddyfile: auto-SSL for pdfaccess.ai-impress.com
- Watchtower excluded (locally-built images)
CI/CD (Forgejo Actions):
- backend-lint-test: pytest with real postgres + redis
- frontend-lint: tsc typecheck
- build-and-push: docker build → push to registry.ai-impress.com
- SSH deploy to homelab on push to main
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 14:51:14 +01:00
Vadym Samoilenko
fc6f4a12e6
Phase 2+3: FastAPI backend + multi-tenancy schema
...
Backend (replaces PHP api.php + auth.php):
- FastAPI app with routers: jobs, auth, billing
- Supabase JWT authentication in deps.py
- Celery + Redis job queue (process_pdf_task)
- MinIO S3-compatible storage service
- PDF checker wrapper (delegates to enterprise_pdf_checker.py)
- Stripe billing: checkout, portal, webhook handler
Multi-tenancy (Phase 3):
- Alembic migration 001: workspaces, workspace_members, jobs, usage_events
- Row-Level Security on all tenant tables via app.workspace_id session var
- Monthly quota enforcement per workspace (402 on exceeded)
- Plan tiers: free(5) / pro(100) / business(unlimited)
Config:
- pydantic-settings based config.py (no hardcoded values)
- docker-compose.yml rewritten: postgres, redis, minio, api, celery
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 14:46:05 +01:00
Vadym Samoilenko
5a00ec88d7
Phase 1: De-Oliver rebrand — remove Azure AD, GCP, Oliver branding
...
- Delete PHP API layer (api.php, auth.php) — replaced by FastAPI in Phase 2
- Delete MSAL/Azure AD JS files (app.js, app-history.js, api.js)
- Delete GCP Cloud Build/Deploy infra (cloudbuild.yaml, deploy.sh, Dockerfiles)
- Delete Oliver-specific docs (OLIVER_CUSTOMIZATION.md, DAVE_QUICK_SETUP.md, etc.)
- Replace Oliver yellow #FFC407 with Aimpress indigo #6366F1 across CSS + reports
- Replace Oliver Solutions footer in report_generator.py with Aimpress
- Switch font from Montserrat to Inter in CSS
- Replace GCS optical-pdf-images bucket with STORAGE_BUCKET env var
- Rewrite README.md for Aimpress SaaS product
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 14:41:27 +01:00
Vadym Samoilenko
cfa7eeeeac
Initial commit: PDF Accessibility SaaS (forked from Oliver/pdf-accessibility)
2026-05-19 14:34:12 +01:00