3.6 KiB
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
- Created
/home/ptoal/Dev/mobile-projects/oysqn.app/project scaffold - Configured Nuxt 4 + @ionic/vue + PrimeVue 4 + @nuxtjs/supabase + @pinia/nuxt + @vite-pwa/nuxt
- Created app shell:
app/app.vuewith IonApp + IonMenu + IonRouterOutlet - Created ionic plugin:
app/plugins/ionic.client.ts - Created skeleton pages:
app/pages/index.vue,app/pages/login.vue,app/pages/auth/callback.vue - Created skeleton stores:
app/stores/auth.ts,app/stores/boat.ts - Created auth middleware:
app/middleware/auth.ts - Created shared composable:
app/composables/useToast.ts - Created placeholder Supabase types:
types/supabase.ts - Copied docs:
docs/planning/,docs/context/,templates/ - Created project-specific
CLAUDE.md
Exact State of Work in Progress
- Dependencies NOT yet installed — run
yarn installto install - Supabase project NOT yet configured —
.envfile needed with SUPABASE_URL + SUPABASE_KEY - Supabase schema NOT yet created —
types/supabase.tsis 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
- First: Run
yarn installin/home/ptoal/Dev/mobile-projects/oysqn.app/ - Then: Create Supabase project at supabase.com, copy URL + anon key to
.env - Then: Run
npx supabase gen types typescript --project-id YOUR_ID > types/supabase.tsto get real types - Then: Design Supabase schema (tables: boats, members, reservations, interval_templates, intervals, certifications, reference_docs)
- Then: Implement auth pages (login.vue — magic link/OTP)
- Then: Run
yarn devand 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 shellapp/plugins/ionic.client.ts— if debugging Ionic setuptypes/supabase.ts— after regenerating from real Supabase projectCLAUDE.md— for project context