# 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