Files
oysqn.app/docs/archive/handoffs/handoff-2026-03-25-project-scaffold.md

3.6 KiB

Session Handoff: oysqn.app Initial Scaffold

Date: 2026-03-25 Session Duration: ~30 min Session Focus: Create new project oysqn.app — Nuxt + Ionic Vue + PrimeVue + Supabase Context Usage at Handoff: Low

What Was Accomplished

  1. Created /home/ptoal/Dev/mobile-projects/oysqn.app/ project scaffold
  2. Configured Nuxt 4 + @ionic/vue + PrimeVue 4 + @nuxtjs/supabase + @pinia/nuxt + @vite-pwa/nuxt
  3. Created app shell: app/app.vue with IonApp + IonMenu + IonRouterOutlet
  4. Created ionic plugin: app/plugins/ionic.client.ts
  5. Created skeleton pages: app/pages/index.vue, app/pages/login.vue, app/pages/auth/callback.vue
  6. Created skeleton stores: app/stores/auth.ts, app/stores/boat.ts
  7. Created auth middleware: app/middleware/auth.ts
  8. Created shared composable: app/composables/useToast.ts
  9. Created placeholder Supabase types: types/supabase.ts
  10. Copied docs: docs/planning/, docs/context/, templates/
  11. Created project-specific CLAUDE.md

Exact State of Work in Progress

  • Dependencies NOT yet installed — run yarn install to install
  • Supabase project NOT yet configured — .env file needed with SUPABASE_URL + SUPABASE_KEY
  • Supabase schema NOT yet created — types/supabase.ts is a placeholder with inferred types from bab-app domain
  • No icons in public/icons/ — copy from bab-app or generate new ones

Decisions Made This Session

  • USE IonRouterOutlet instead of NuxtPage BECAUSE user decision — enables Ionic page transitions and lifecycle hooks
  • USE Supabase INSTEAD OF Appwrite BECAUSE user decision — new project rewrite
  • USE mode: 'md' in IonicVue plugin BECAUSE consistent cross-platform appearance in PWA
  • USE @nuxtjs/supabase module BECAUSE handles SSR-safe client creation and useSupabaseUser() composable
  • USE magic link + OTP auth only (no password) BECAUSE carried forward from bab-app — confirmed auth model
  • NO @ionic/vue-router BECAUSE Nuxt manages the router; IonRouterOutlet from @ionic/vue works with standard Vue Router

Key Numbers

  • 0 TypeScript errors at scaffold time (no yarn install yet)
  • 3 skeleton pages created
  • 2 skeleton stores created
  • 3 tables in placeholder types/supabase.ts: boats, members, reservations

What the NEXT Session Should Do

  1. First: Run yarn install in /home/ptoal/Dev/mobile-projects/oysqn.app/
  2. Then: Create Supabase project at supabase.com, copy URL + anon key to .env
  3. Then: Run npx supabase gen types typescript --project-id YOUR_ID > types/supabase.ts to get real types
  4. Then: Design Supabase schema (tables: boats, members, reservations, interval_templates, intervals, certifications, reference_docs)
  5. Then: Implement auth pages (login.vue — magic link/OTP)
  6. Then: Run yarn dev and verify IonRouterOutlet renders correctly

Open Questions Requiring User Input

  • Supabase project ID — needed to generate real types and configure .env
  • Should the scheduling refactor (new resource picker + booking flow) be designed before or after implementing auth + boat pages?
  • Copy icons from bab-app or generate new ones for oysqn.app?
  • Should the admin section use a separate IonMenu or just role-based visibility in the same menu?

Assumptions That Need Validation

  • ASSUMED: magic link + OTP auth carried forward from bab-app — validate with Patrick

Files to Load Next Session

  • app/app.vue — if modifying the app shell
  • app/plugins/ionic.client.ts — if debugging Ionic setup
  • types/supabase.ts — after regenerating from real Supabase project
  • CLAUDE.md — for project context