Initial project scaffolding

This commit is contained in:
2026-03-25 22:34:03 -04:00
commit a46c97c88a
92 changed files with 9671 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
# 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