Files
webref/specs/001-reference-board-viewer/PLANNING-COMPLETE.md

11 KiB

PLANNING COMPLETE: Reference Board Viewer

Date: 2025-11-02
Branch: 001-reference-board-viewer
Status: Ready for Implementation (Week 1)


Executive Summary

Complete implementation plan ready for a web-based reference board application (PureRef-inspired) for artists and creative professionals. All research, design, and planning artifacts have been generated and verified.

Technology Stack: 100% Verified in Nix
Timeline: 16 weeks to MVP
Team Size: 2-3 developers recommended


Workflow Completion Status

Phase 0: Research & Design COMPLETE

Artifact Status Description
tech-research.md Complete (18KB) Comprehensive technology stack analysis with alternatives
nix-package-verification.md Complete Detailed verification of all packages in nixpkgs
VERIFICATION-COMPLETE.md Complete Proof of 100% Nix compatibility + command outputs
Clarifications Resolved All 3 NEEDS CLARIFICATION items resolved

Key Decisions:

  • Frontend: Svelte + SvelteKit + Konva.js
  • Backend: FastAPI (Python)
  • Database: PostgreSQL
  • Storage: MinIO (S3-compatible)
  • Image Processing: Pillow + ImageMagick
  • Deployment: Nix Flakes + NixOS modules

Phase 1: Design & Contracts COMPLETE

Artifact Status Lines Description
data-model.md Complete 650+ Full database schema with all entities
contracts/api.yaml Complete 900+ OpenAPI 3.0 spec for REST API
plan.md Complete 750+ 16-week implementation plan
quickstart.md Complete 400+ Developer getting-started guide

Agent Context: Updated (.cursor/rules/specify-rules.mdc)


Generated Artifacts

📄 Specification Documents

specs/001-reference-board-viewer/
├── spec.md                      ✅ 708 lines (Requirements)
├── plan.md                      ✅ 750 lines (Implementation plan)
├── data-model.md                ✅ 650 lines (Database schema)
├── tech-research.md             ✅ 661 lines (Technology analysis)
├── nix-package-verification.md  ✅ 468 lines (Package verification)
├── VERIFICATION-COMPLETE.md     ✅ Summary + proof
├── PLANNING-COMPLETE.md         ✅ This file
├── quickstart.md                ✅ 400 lines (Getting started)
├── contracts/
│   └── api.yaml                 ✅ 900 lines (OpenAPI spec)
└── checklists/
    └── requirements.md          ✅ 109 lines (Quality validation)

Total: ~5,100 lines of comprehensive documentation

🔬 Research Findings

Technology Evaluation:

  • 14 different options analyzed
  • Frontend: React vs Svelte vs Vue (Svelte chosen)
  • Canvas: Konva vs Fabric vs PixiJS (Konva chosen)
  • Backend: FastAPI vs Django vs Node vs Rust (FastAPI chosen)
  • All decisions documented with rationale

Nix Verification:

  • 27 packages checked
  • 27 packages verified
  • 0 packages missing
  • 100% compatibility confirmed

🗄️ Data Model

7 Core Entities Defined:

  1. User (authentication, account management)
  2. Board (canvas, viewport state)
  3. Image (uploaded files, metadata)
  4. BoardImage (junction: position, transformations)
  5. Group (annotations, colored labels)
  6. ShareLink (configurable permissions)
  7. Comment (viewer feedback)

Complete Schema:

  • All fields defined with types and constraints
  • Indexes specified for performance
  • Relationships mapped
  • Validation rules documented
  • PostgreSQL CREATE statements provided

🔌 API Contracts

28 Endpoints Defined:

Authentication (3):

  • POST /auth/register
  • POST /auth/login
  • GET /auth/me

Boards (5):

  • GET /boards
  • POST /boards
  • GET /boards/{id}
  • PATCH /boards/{id}
  • DELETE /boards/{id}

Images (4):

  • POST /boards/{id}/images
  • PATCH /boards/{id}/images/{id}
  • DELETE /boards/{id}/images/{id}
  • PATCH /boards/{id}/images/bulk

Groups (4):

  • GET /boards/{id}/groups
  • POST /boards/{id}/groups
  • PATCH /boards/{id}/groups/{id}
  • DELETE /boards/{id}/groups/{id}

Sharing (4):

  • GET /boards/{id}/share-links
  • POST /boards/{id}/share-links
  • DELETE /boards/{id}/share-links/{id}
  • GET /shared/{token}

Export & Library (3):

  • POST /boards/{id}/export
  • GET /library/images

All endpoints include:

  • Request/response schemas
  • Authentication requirements
  • Error responses
  • Example payloads

Implementation Roadmap

Timeline: 16 Weeks (4 Months)

Phase Weeks Focus Deliverables
Phase 1 1-4 Foundation Auth, Boards, Upload, Storage
Phase 2 5-8 Canvas Manipulation, Transforms, Multi-select
Phase 3 9-12 Advanced Groups, Sharing, Export
Phase 4 13-16 Polish Performance, Testing, Deployment

Week-by-Week Breakdown

Week 1: Project setup, Nix config, CI/CD
Week 2: Authentication system (JWT)
Week 3: Board CRUD operations
Week 4: Image upload & MinIO
Week 5: Canvas foundation (Konva.js)
Week 6: Image transformations
Week 7: Multi-selection & bulk ops
Week 8: Z-order & layering
Week 9: Grouping & annotations
Week 10: Alignment & distribution
Week 11: Board sharing (permissions)
Week 12: Export (ZIP, composite)
Week 13: Performance & adaptive quality
Week 14: Command palette & features
Week 15: Testing & accessibility
Week 16: Deployment & documentation


Success Criteria

Functional Defined

  • 18 functional requirements implemented
  • All user scenarios work end-to-end
  • No critical bugs
  • Beta users complete workflows

Quality Defined

  • ≥80% test coverage (pytest + Vitest)
  • Zero linter errors (Ruff + ESLint)
  • All tests passing in CI
  • Code reviews approved

Performance Defined

  • Canvas 60fps with 500 images
  • API <200ms p95
  • Page load <3s on 5Mbps
  • Board with 100 images loads <2s

Accessibility Defined

  • WCAG 2.1 AA compliant
  • Keyboard navigation for all features
  • User-friendly error messages
  • 90%+ "easy to use" rating

Deployment Defined

  • nixos-rebuild deploys successfully
  • All services start correctly
  • Rollback works
  • Documentation complete

Constitutional Compliance

All planning aligns with project constitution:

Principle 1 (Code Quality): Modular architecture, type hints, linting
Principle 2 (Testing): ≥80% coverage, comprehensive test strategy
Principle 3 (UX): WCAG 2.1 AA, keyboard nav, clear errors
Principle 4 (Performance): Specific budgets (60fps, <200ms, etc)


Technology Stack Summary

Frontend

- Framework: Svelte + SvelteKit
- Canvas: Konva.js
- Build: Vite
- Package Manager: npm (via Nix buildNpmPackage)
- State: Svelte Stores
- Testing: Vitest + Testing Library + Playwright

Backend

- Framework: FastAPI
- Server: Uvicorn
- ORM: SQLAlchemy
- Migrations: Alembic
- Validation: Pydantic
- Auth: python-jose + passlib
- Image Processing: Pillow + ImageMagick
- Storage Client: boto3 (S3-compatible)
- Testing: pytest + pytest-cov + pytest-asyncio

Infrastructure

- Database: PostgreSQL 16
- Storage: MinIO (S3-compatible)
- Reverse Proxy: Nginx
- Deployment: Nix Flakes + NixOS modules
- Package Manager: uv (Python) + npm (JS)

All Verified: See VERIFICATION-COMPLETE.md


Next Steps

Immediate (Week 1)

  1. Review all documents:

    • Read spec.md (requirements)
    • Read plan.md (implementation strategy)
    • Read data-model.md (database design)
    • Review contracts/api.yaml (API design)
  2. Set up environment:

    • Follow quickstart.md
    • Create flake.nix (based on examples in nix-package-verification.md)
    • Initialize Git repository structure
    • Set up CI/CD pipeline
  3. Create project structure:

    mkdir -p backend/{app,tests}
    mkdir -p frontend/{src,tests}
    mkdir -p docs
    
  4. Start Week 1 tasks:

    • See plan.md, Phase 1, Week 1
    • Initialize backend (FastAPI + uv)
    • Initialize frontend (SvelteKit + Vite)
    • Configure PostgreSQL with Nix
    • Set up pre-commit hooks

This Week (Week 2-4)

  • Complete Phase 1 (Foundation)
  • Implement authentication
  • Build board CRUD
  • Set up image upload & storage

This Month (Weeks 1-8)

  • Complete Phases 1 & 2
  • Working canvas with manipulation
  • Multi-selection and transformations

Documentation Map

Document Purpose When to Use
spec.md Requirements Understanding WHAT to build
plan.md Implementation Knowing HOW to build it
data-model.md Database Designing data structures
contracts/api.yaml API Implementing endpoints
tech-research.md Technology Understanding WHY we chose tech
quickstart.md Getting Started First day of development
VERIFICATION-COMPLETE.md Nix Proof Confirming package availability

Key Files Reference

Planning Documents

specs/001-reference-board-viewer/
├── spec.md                      Requirements specification
├── plan.md                      Implementation plan (this is the main guide)
├── data-model.md                Database schema design
├── quickstart.md                Getting started guide
├── tech-research.md             Technology evaluation
├── nix-package-verification.md  Package verification details
└── VERIFICATION-COMPLETE.md     Verification summary

API & Contracts

specs/001-reference-board-viewer/contracts/
└── api.yaml                     OpenAPI 3.0 specification

Quality Assurance

specs/001-reference-board-viewer/checklists/
└── requirements.md              Quality validation checklist

Resources

Internal

  • Main README: ../../README.md
  • Constitution: ../../.specify/memory/constitution.md
  • Templates: ../../.specify/templates/

External


Summary

Planning Phase: COMPLETE
Research: COMPLETE
Design: COMPLETE
Contracts: COMPLETE
Nix Verification: COMPLETE

Status: READY FOR WEEK 1 IMPLEMENTATION

Next Action: Follow quickstart.md to set up development environment and begin Week 1 tasks from plan.md.


Timeline: 16 weeks to MVP
Start Date: Ready now
Team: 2-3 developers recommended
Deployment: Self-hosted NixOS with reproducible builds

🚀 Let's build this!