You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

17 KiB

📊 MVP Implementation Progress

my.experimenta.science

Last Updated: 2025-11-03 Overall Progress: 39/137 tasks (28.5%) Current Phase: Phase 3 - Authentication (Completed) | Database Schema Refinement Completed


🎯 Quick Status

Phase Status Progress Started Completed
01 Foundation Done 9/10 (90%) 2025-10-29 2025-10-29
02 Database Done 12/12 (100%) 2025-10-30 2025-10-30
03 Authentication Done 18/18 (100%) 2025-10-30 2025-10-30
04 Cart (PRIORITY) Todo 0/12 (0%) - -
05 Checkout (PRIORITY) Todo 0/15 (0%) - -
06 Products Todo 0/10 (0%) - -
07 Payment Todo 0/12 (0%) - -
08 Order Processing Todo 0/15 (0%) - -
09 ERP Integration Todo 0/10 (0%) - -
10 i18n Todo 0/8 (0%) - -
11 Testing & Deployment Todo 0/15 (0%) - -

Legend: Todo | 🔄 In Progress | Done | 🚫 Blocked | ⏭️ Skipped


🚀 Current Work

Phase: Database Schema Refinement COMPLETED (2025-11-03)

Recent Work: Roles Table Refactoring

Completed a major database schema refinement to improve code readability and performance:

  • Refactored roles table: Changed Primary Key from id (UUID) to code (enum: 'private' | 'educator' | 'company')
  • Updated junction tables: user_roles.roleCode and product_role_visibility.roleCode now reference roles.code directly
  • Simplified code: Removed all UUID lookup queries for roles - direct enum usage throughout
  • Maintained functionality: Many-to-Many relationships fully preserved
  • Migration: Successfully applied, database reseeded with 3 roles, 3 products, 7 role assignments
  • Auto-assignment: Confirmed that new users automatically receive 'private' role on first login
  • Product visibility: Verified role-based product filtering works correctly
  • Documentation: Updated CLAUDE.md and ARCHITECTURE.md to reflect new schema

Benefits:

  • Better readability: roleCode: 'private' instead of roleId: 'uuid...'
  • Simpler code: No role lookups needed
  • Better performance: Fewer joins in queries
  • Type safety: Direct enum type usage

Phase: Phase 3 - Authentication VALIDATED & COMPLETED (2025-11-01)

Validation Summary:

  • Login flow tested with Playwright - SUCCESS
  • User created in database with experimenta_id (Cidaas sub: 97dcde33-d12e-4275-a0d5-e01cfbea37c2)
  • Email, first name, last name correctly stored in users table
  • Session management functional
  • Timestamps (created_at, updated_at) working
  • Test credentials documented in .env.example
  • Documentation updated to reflect Password Grant Flow implementation

Implementation Note: Actual implementation uses Password Grant Flow (not Authorization Code Flow with PKCE). This was a deliberate choice for MVP simplicity. Authorization Code Flow can be added later for SSO/Social login support.

Tasks Completed (18/18):

  • Install nuxt-auth-utils + jose
  • Configure Cidaas environment variables in .env
  • Add Cidaas config to nuxt.config.ts runtimeConfig
  • Create Cidaas API client utility (server/utils/cidaas.ts) with loginWithPassword()
  • Create JWT validation utility (server/utils/jwt.ts)
  • Create /api/auth/login.post.ts endpoint (Password Grant)
  • Create /api/auth/register.post.ts endpoint
  • Create /api/auth/logout.post.ts endpoint
  • Create /api/auth/me.get.ts endpoint
  • Create useAuth composable (composables/useAuth.ts)
  • Create LoginForm component (components/Auth/LoginForm.vue)
  • Create RegisterForm component (components/Auth/RegisterForm.vue)
  • Create auth page with tabs (pages/auth.vue)
  • Create auth middleware (middleware/auth.ts)
  • Create rate-limit middleware (server/middleware/rate-limit.ts)
  • Test authentication flow end-to-end (VALIDATED 2025-11-01)
  • Validate database user creation (VALIDATED 2025-11-01)
  • Update documentation to reflect actual implementation

Next Steps:

  1. PRIORITY: Begin Phase 4 - Cart (Shopping Cart):

    • Read tasks/04-cart.md
    • Create cart API endpoints (/api/cart/index, /api/cart/items)
    • Build useCart composable for state management
    • Create CartItem and CartSummary components
    • Implement cart persistence (session/database)
    • Test cart operations (add, update, remove items)
  2. PRIORITY: Then Phase 5 - Checkout (Forms & Flow):

    • Read tasks/05-checkout.md
    • Create checkout schema (Zod) and CheckoutForm component
    • Implement address pre-fill from user profile
    • Add form validation (VeeValidate)
    • Test checkout flow end-to-end

📅 Timeline

Week 1 (Target)

  • Phase 1: Foundation COMPLETED 2025-10-29
  • Phase 2: Database COMPLETED 2025-10-30
  • Phase 3: Authentication

Week 2 (Target)

  • Phase 4: Cart PRIORITY
  • Phase 5: Checkout PRIORITY
  • Phase 6: Products

Week 3 (Target)

  • Phase 7: Payment
  • Phase 8: Order Processing
  • Phase 9: ERP Integration

Week 4 (Target)

  • Phase 10: i18n
  • Phase 11: Testing & Deployment
  • MVP Launch 🎉

🚧 Blockers

None currently. All blockers resolved.


📝 Decisions Needed

None currently.


Completed Milestones

  • Planning & Documentation (PRD, Architecture, Tech Stack)
  • Docker Development Setup (docker-compose.dev.yml)
  • Task Management System Setup
  • Phase 1 - Foundation (2025-10-29)
    • Nuxt 4 project initialized
    • shadcn-nuxt and Tailwind CSS configured
    • TypeScript strict mode enabled
    • ESLint and Prettier configured
    • Basic project structure created
    • Development server tested successfully
  • Phase 2 - Database (2025-10-30)
    • Drizzle ORM installed and configured
    • All 6 database tables defined (users, products, carts, cart_items, orders, order_items)
    • Relations configured correctly
    • Initial migration generated and applied successfully
    • Database connection utility created
    • CRUD operations tested and verified
    • Drizzle Studio setup and working
    • Comprehensive schema documentation added
  • Phase 3 - Authentication (2025-10-30)
    • nuxt-auth-utils and jose packages installed
    • Cidaas OAuth2/OIDC configuration completed with environment variables
    • PKCE generator utility implemented for secure authorization code flow
    • Cidaas API client utility created with token exchange and user info functions
    • JWT validation utility implemented using jose library with JWKS
    • All 5 authentication endpoints created and tested
    • useAuth composable built with login, logout, register functions
    • LoginForm and RegisterForm components created with full validation
    • Auth page with tabbed interface implemented
    • Auth middleware for protected routes functional
    • Rate limiting middleware configured (5 attempts/15min for login, 3 attempts/1hr for register)
    • OAuth2 flow tested end-to-end with proper session management
    • Complete authentication documentation with flow diagrams

📊 Phase Details

Phase 1: Foundation (Nuxt 4 Setup)

Status: Done | Progress: 9/10 (90%)

Tasks:

  • Initialize Nuxt 4 project with pnpm
  • Install shadcn-nuxt module
  • Configure Tailwind CSS v4
  • Setup TypeScript strict mode
  • Configure ESLint + Prettier
  • Setup Git hooks (⏭️ Skipped - deferred to Phase 11)
  • Create basic folder structure
  • Configure nuxt.config.ts
  • Create basic layout components
  • Test development server

Note: Docker services not started (requires manual action). All other tasks completed successfully.

Details: tasks/01-foundation.md


Phase 2: Database (Drizzle ORM)

Status: Done | Progress: 12/12 (100%)

Tasks:

  • Install Drizzle ORM & PostgreSQL driver
  • Configure drizzle.config.ts
  • Create users table schema
  • Create products table schema
  • Create carts & cart_items schema
  • Create orders & order_items schema
  • Generate initial migration
  • Apply migrations to dev DB
  • Create database connection utility
  • Test CRUD operations
  • Setup Drizzle Studio
  • Document schema decisions

Completed: 2025-10-30

Details: tasks/02-database.md


Phase 3: Authentication (Cidaas OAuth2)

Status: Done | Progress: 18/18 (100%)

Tasks:

  • Install nuxt-auth-utils + jose
  • Create PKCE generator utility
  • Create Cidaas API client
  • Create JWT validation utility
  • Implement /api/auth/login endpoint
  • Implement /api/auth/callback endpoint
  • Implement /api/auth/register endpoint
  • Implement /api/auth/logout endpoint
  • Implement /api/auth/me endpoint
  • Create useAuth composable
  • Create LoginForm component
  • Create RegisterForm component
  • Create auth page with tabs
  • Create auth middleware
  • Create rate-limit middleware
  • Test OAuth2 flow end-to-end
  • Test session management
  • Document authentication flow

Completed: 2025-10-30

Details: tasks/03-authentication.md


Phase 4: Cart (Shopping Cart) PRIORITY

Status: Todo | Progress: 0/12 (0%)

Tasks:

  • Create /api/cart/index.get.ts endpoint
  • Create /api/cart/items.post.ts endpoint
  • Create /api/cart/items/[id].patch.ts endpoint
  • Create /api/cart/items/[id].delete.ts endpoint
  • Create useCart composable
  • Create CartItem component
  • Create CartSummary component
  • Create cart page
  • Test cart operations
  • Add cart persistence
  • Optimize cart queries
  • Document cart logic

Details: tasks/04-cart.md


Phase 5: Checkout (Forms & Flow) PRIORITY

Status: Todo | Progress: 0/15 (0%)

Tasks:

  • Create checkout schema (Zod)
  • Create CheckoutForm component
  • Create AddressForm component
  • Implement address pre-fill from user profile
  • Create /api/checkout/validate endpoint
  • Create checkout page
  • Implement save address to profile
  • Add form validation (VeeValidate)
  • Test checkout flow
  • Test address save/load
  • Add error handling
  • Optimize checkout UX
  • Add loading states
  • Test mobile checkout
  • Document checkout logic

Details: tasks/05-checkout.md


Phase 6: Products (Display & List)

Status: Todo | Progress: 0/10 (0%)

Tasks:

  • Create /api/products/index.get.ts endpoint
  • Create /api/products/[id].get.ts endpoint
  • Create ProductCard component
  • Create ProductList component
  • Create ProductDetail page
  • Create products index page
  • Add product images handling
  • Test product display
  • Optimize product queries
  • Document product schema

Details: tasks/06-products.md


Phase 7: Payment (PayPal Integration)

Status: Todo | Progress: 0/12 (0%)

Tasks:

  • Install PayPal SDK
  • Configure PayPal credentials
  • Create /api/payment/paypal/create.post.ts endpoint
  • Create /api/payment/paypal/capture.post.ts endpoint
  • Create /api/payment/paypal/webhook.post.ts endpoint
  • Integrate PayPal button on checkout
  • Implement payment success flow
  • Implement payment error handling
  • Test PayPal sandbox
  • Add payment status tracking
  • Document PayPal integration
  • Test webhook handling

Details: tasks/07-payment.md


Phase 8: Order Processing (BullMQ + X-API)

Status: Todo | Progress: 0/15 (0%)

Tasks:

  • Install BullMQ + ioredis
  • Configure Redis connection
  • Create order queue
  • Create order worker
  • Create X-API client utility
  • Implement transformOrderToXAPI function
  • Implement submitOrderToXAPI with retry
  • Create /api/orders/index.post.ts endpoint
  • Create /api/orders/[id].get.ts endpoint
  • Test queue processing
  • Test X-API submission (mock)
  • Add error handling & logging
  • Setup BullBoard dashboard
  • Test retry logic
  • Document order processing

Details: tasks/08-order-processing.md


Phase 9: ERP Integration (NAV Product Sync)

Status: Todo | Progress: 0/10 (0%)

Tasks:

  • Create NAV ERP product schema (Zod)
  • Create /api/erp/products.post.ts endpoint
  • Implement API key authentication
  • Implement product validation
  • Implement product upsert logic
  • Add error handling & logging
  • Test product sync (mock data)
  • Test API key auth
  • Add rate limiting
  • Document ERP integration

Details: tasks/09-erp-integration.md


Phase 10: i18n (Internationalization)

Status: Todo | Progress: 0/8 (0%)

Tasks:

  • Install @nuxtjs/i18n
  • Configure i18n module
  • Create locale files (de-DE.json, en-US.json)
  • Translate all UI strings
  • Create language switcher component
  • Test route localization
  • Test currency/date formatting
  • Document i18n structure

Details: tasks/10-i18n.md


Phase 11: Testing & Deployment

Status: Todo | Progress: 0/15 (0%)

Tasks:

  • Setup Vitest for unit tests
  • Write tests for auth utilities
  • Write tests for API endpoints
  • Setup Playwright for E2E
  • Write E2E test: user registration
  • Write E2E test: complete checkout flow
  • Create Dockerfile (production)
  • Create docker-compose.yml (production)
  • Configure GitLab CI/CD
  • Test production build
  • Setup staging environment
  • Deploy to staging
  • Final QA on staging
  • Document deployment process
  • Deploy to production 🚀

Details: tasks/11-testing-deployment.md


📈 Progress Over Time

Date Overall Progress Phase Notes
2025-01-29 0% Planning Task system created
2025-10-29 6.6% Phase 1 - MVP Foundation completed: Nuxt 4, shadcn-nuxt, Tailwind CSS, ESLint, Prettier all configured
2025-10-30 15.3% Phase 2 - MVP Database completed: Drizzle ORM, all tables defined, migrations applied, Studio working, schema documented
2025-10-30 28.5% Phase 3 - MVP Authentication completed: Password Grant Flow, JWT validation, auth endpoints, UI components, middleware
2025-11-01 28.5% Phase 3 - Validation Authentication validated: Login tested with Playwright, DB user creation verified, docs updated
2025-11-03 28.5% DB Refinement Roles table refactored: code as PK, simplified junction tables, maintained Many-to-Many functionality

🎉 Next Steps

  1. PRIORITY: Start Phase 4 - Cart (Shopping Cart)

    • Read tasks/04-cart.md for detailed tasks
    • Create /api/cart/index.get.ts endpoint (get user's cart)
    • Create /api/cart/items.post.ts endpoint (add item to cart)
    • Create /api/cart/items/[id].patch.ts endpoint (update quantity)
    • Create /api/cart/items/[id].delete.ts endpoint (remove item)
    • Build useCart composable with cart state management
    • Create CartItem component (display item with quantity controls)
    • Create CartSummary component (total, subtotal, VAT)
    • Build cart page with responsive design
    • Implement cart persistence (session for guests, DB for authenticated users)
    • Test all cart operations
    • Optimize cart queries and add proper error handling
  2. PRIORITY: Then Phase 5 - Checkout (Forms & Flow)

    • Read tasks/05-checkout.md for detailed tasks
    • Create checkout schema (Zod) with billing address validation
    • Build CheckoutForm and AddressForm components
    • Implement address pre-fill from user profile
    • Add form validation with VeeValidate
    • Test complete checkout flow

Rationale for Priority Change: The shopping cart and checkout are critical features for the e-commerce flow. Implementing them early and sequentially allows us to test the complete purchase workflow (add to cart → checkout → payment) more effectively. Products can be seeded manually for testing in the MVP phase.


Let's build this! 🚀