260 lines
9.2 KiB
Markdown
260 lines
9.2 KiB
Markdown
You are working on an existing SvelteKit codebase with separate `backend` and `frontend` folders.
|
||
|
||
Assume the frontend is a SvelteKit application.
|
||
|
||
Your task is to decouple all mobile-specific experience logic from the main frontend and introduce a first-class mobile architecture for two distinct app experiences:
|
||
|
||
1. Admin mobile experience
|
||
2. Member mobile experience
|
||
|
||
These should feel like a polished mobile app experience similar in quality and intentionality to a React Expo app, but built fully within this SvelteKit project.
|
||
|
||
Critical objective
|
||
The mobile experience must not just be a responsive version of the desktop site. Mobile users should be routed into dedicated, optimised mobile layouts and flows so they receive a purpose-built experience rather than squeezed desktop screens.
|
||
|
||
Read first
|
||
- Read `THEME.md` first and use it as the source of truth for visual language, spacing, tone, interaction style, and component feel.
|
||
- Update `THEME.md` to explicitly document the new mobile design language and mobile UX rules.
|
||
- Preserve the existing bottom bar navigation pattern. This is a key product feature and must remain, while being refined for mobile.
|
||
|
||
High-level goals
|
||
- Decouple all mobile logic into its own clear architecture.
|
||
- Create shared mobile foundations used by both Admin and Member mobile apps.
|
||
- Ensure Admin and Member mobile experiences share the same design language and UX philosophy.
|
||
- Keep desktop and tablet experiences stable.
|
||
- Implement proper routing so mobile users are served dedicated mobile routes/layouts instead of generic responsive pages.
|
||
|
||
Core requirements
|
||
|
||
1. Create a dedicated mobile architecture
|
||
Refactor the frontend so mobile concerns are separated into their own folder structure instead of being scattered across desktop pages and shared components.
|
||
|
||
Target outcome:
|
||
- shared mobile UI system
|
||
- shared mobile layout shell
|
||
- shared bottom navigation system
|
||
- shared mobile interaction primitives
|
||
- dedicated Admin mobile routes
|
||
- dedicated Member mobile routes
|
||
- explicit desktop vs mobile route separation
|
||
|
||
Suggested structure
|
||
Refine if necessary, but preserve the intent:
|
||
|
||
frontend/
|
||
src/
|
||
lib/
|
||
mobile/
|
||
components/
|
||
layouts/
|
||
navigation/
|
||
stores/
|
||
utils/
|
||
styles/
|
||
guards/
|
||
routes/
|
||
(desktop)/
|
||
...
|
||
(mobile)/
|
||
admin/
|
||
...
|
||
members/
|
||
...
|
||
|
||
Or an equivalent structure that clearly separates:
|
||
- mobile shared system
|
||
- mobile admin experience
|
||
- mobile member experience
|
||
- desktop/default experience
|
||
|
||
2. Implement dedicated mobile route handling in SvelteKit
|
||
This is required.
|
||
|
||
You must introduce a routing strategy that ensures mobile users are directed into purpose-built mobile routes rather than receiving the responsive desktop experience.
|
||
|
||
Requirements:
|
||
- Determine a maintainable SvelteKit approach for routing users to mobile experiences
|
||
- Use a clean and explicit strategy, for example:
|
||
- route groups
|
||
- layout-level guards
|
||
- hooks
|
||
- server/client detection
|
||
- redirects based on device class where appropriate
|
||
- Avoid fragile UA logic where possible, but pragmatic device detection is acceptable if implemented cleanly
|
||
- Do not create redirect loops
|
||
- Do not break deep links
|
||
- Preserve auth, permissions, and route protection
|
||
- Ensure Admin mobile users land in Admin mobile flows
|
||
- Ensure Member mobile users land in Member mobile flows
|
||
- Ensure desktop users remain on desktop routes
|
||
- Make this maintainable and easy to reason about
|
||
|
||
Expected behaviour:
|
||
- Mobile users should receive mobile-specific routes/layouts/screens
|
||
- Desktop users should receive desktop-specific routes/layouts/screens
|
||
- Shared business logic should remain reusable where appropriate
|
||
- End users should not accidentally fall back into desktop responsive pages unless explicitly intended
|
||
|
||
3. Create a mobile app shell
|
||
Build a mobile shell that feels app-like rather than website-like.
|
||
|
||
Requirements:
|
||
- fixed or sticky top area where appropriate
|
||
- preserved bottom tab bar navigation
|
||
- safe spacing for thumb reach and small screens
|
||
- proper scrolling regions
|
||
- smooth transitions between sections
|
||
- sticky action areas where useful
|
||
- consistent mobile headers, titles, back navigation, and action buttons
|
||
- support for common in-app patterns like stacked navigation, slide-up panels, and compact action menus
|
||
|
||
4. Shared design language between Admin and Member mobile
|
||
Admin and Member mobile areas should feel like part of the same product family.
|
||
|
||
Ensure:
|
||
- same spacing scale
|
||
- same mobile card styling
|
||
- same navigation treatment
|
||
- same touch target sizing
|
||
- same motion philosophy
|
||
- same bottom nav design system
|
||
- same typography rules
|
||
- same form and list behaviour
|
||
- same empty/loading/error state patterns
|
||
|
||
But separate:
|
||
- route groups
|
||
- permissions
|
||
- business logic
|
||
- data flows
|
||
- feature sets
|
||
|
||
5. Mobile-first component system
|
||
Create or refactor reusable mobile components so logic is not duplicated across Admin and Member experiences.
|
||
|
||
Examples:
|
||
- `MobileAppShell.svelte`
|
||
- `MobilePageShell.svelte`
|
||
- `MobileHeader.svelte`
|
||
- `MobileSection.svelte`
|
||
- `MobileCard.svelte`
|
||
- `MobileListItem.svelte`
|
||
- `MobileBottomNav.svelte`
|
||
- `MobileActionBar.svelte`
|
||
- `MobileSearchBar.svelte`
|
||
- `MobileFilterSheet.svelte`
|
||
- `MobileTabs.svelte`
|
||
- `MobileStatCard.svelte`
|
||
- `MobileFormField.svelte`
|
||
- `MobileEmptyState.svelte`
|
||
|
||
Use names that fit the project, but the system should be clearly structured and reusable.
|
||
|
||
6. Route strategy for Admin and Members
|
||
Introduce a clear, maintainable routing approach for mobile.
|
||
|
||
Need:
|
||
- dedicated Admin mobile routes
|
||
- dedicated Member mobile routes
|
||
- shared layout wrappers where sensible
|
||
- clear conventions for naming and extending routes
|
||
|
||
Examples:
|
||
- `/m/admin/dashboard`
|
||
- `/m/admin/bookings`
|
||
- `/m/admin/customers`
|
||
- `/m/members/home`
|
||
- `/m/members/bookings`
|
||
- `/m/members/profile`
|
||
|
||
Desktop equivalents should remain in their own route structure.
|
||
|
||
You may adapt to the project’s existing route conventions, but the separation must be obvious, scalable, and easy for future developers to follow.
|
||
|
||
7. UX expectations
|
||
The mobile UX should feel premium, dense, fast, and intentional.
|
||
|
||
It should:
|
||
- feel native-app inspired
|
||
- prioritise one-handed use
|
||
- avoid crammed desktop patterns squeezed onto small screens
|
||
- use bottom navigation elegantly
|
||
- support quick scanning of bookings, schedules, profiles, alerts, and actions
|
||
- reduce modal overload where possible
|
||
- prefer slide-up panels / sheets / stacked views where appropriate
|
||
- make forms usable on mobile without frustration
|
||
|
||
8. Keep desktop logic stable
|
||
Do not break or regress desktop/tablet experiences.
|
||
Refactor carefully so mobile-specific logic is isolated without causing duplication or regressions in the main frontend.
|
||
|
||
9. Update THEME.md
|
||
Update `THEME.md` to include a substantial new section for mobile design language.
|
||
|
||
This new section must define:
|
||
- mobile philosophy
|
||
- mobile vs desktop experience rules
|
||
- bottom navigation principles
|
||
- touch target minimums
|
||
- spacing and rhythm for small screens
|
||
- mobile card/list patterns
|
||
- mobile form behaviour
|
||
- hierarchy of headers and page titles
|
||
- motion and transitions for mobile
|
||
- how Admin and Member mobile experiences stay visually aligned
|
||
- what should never be done in mobile views
|
||
|
||
10. Documentation
|
||
Document all structural changes clearly.
|
||
Update any relevant docs so another developer can understand:
|
||
- where mobile code now lives
|
||
- how mobile routing works
|
||
- how device-based rerouting works
|
||
- how shared mobile components should be used
|
||
- how Admin and Member mobile experiences differ
|
||
- how to extend the mobile shell safely
|
||
- how to avoid mixing desktop-only concerns back into mobile components
|
||
|
||
Implementation standards
|
||
- Keep code production-quality, clean, and maintainable.
|
||
- Prefer composition over duplication.
|
||
- Avoid massive files.
|
||
- Extract reusable patterns.
|
||
- Keep naming clear and scalable.
|
||
- Preserve existing business logic unless a cleaner shared abstraction is necessary.
|
||
- Do not leave mobile logic buried inside unrelated desktop components.
|
||
- Do not implement this as random CSS media query patches only.
|
||
- Make the mobile experience feel like a deliberate application layer.
|
||
|
||
Technical expectations for SvelteKit
|
||
- Use idiomatic SvelteKit patterns
|
||
- Be deliberate about where redirects occur:
|
||
- hooks
|
||
- `+layout.server.ts`
|
||
- `+page.server.ts`
|
||
- shared route guards
|
||
- Ensure SSR/CSR behaviour is considered
|
||
- Ensure hydration does not cause route flicker
|
||
- Ensure navigation between mobile routes remains smooth
|
||
- Preserve auth/session handling and existing route protections
|
||
- Keep deep linking functional
|
||
- Prevent infinite redirect edge cases
|
||
|
||
Deliverables
|
||
1. Refactored folder structure for mobile architecture
|
||
2. Shared mobile layout/components/navigation primitives
|
||
3. Dedicated Admin mobile experience
|
||
4. Dedicated Member mobile experience
|
||
5. Proper SvelteKit mobile rerouting strategy so end users receive optimised mobile routes
|
||
6. Preserved and improved bottom bar navigation
|
||
7. Updated `THEME.md` with explicit mobile design language
|
||
8. Any additional docs needed to explain the architecture
|
||
|
||
At the end, provide:
|
||
- a summary of what was changed
|
||
- the new folder structure
|
||
- which files were created
|
||
- which files were updated
|
||
- how mobile rerouting works
|
||
- any migration notes
|
||
- follow-up recommendations for improving the mobile UX further |