Clerk + Turso ready role architecture

Join RoamPK as anyone in the travel ecosystem.

Tourists, local users, hotels, hostels, cafés, SIM partners, guides, food experts, emergency teams, and admins all share one extensible role model.

Active role preview

Tourist / Traveler

Book hotels, follow routes, save destinations, request guides, and manage travel plans.

booking:create
follow:create
review:create
trip:manage

Pick a Role

Adding another role later is one new object in src/lib/roles.ts — tiny door, huge hallway.

Traveler

Partner

Community

Operations

Role-Aware Onboarding Form

UI-only today; Clerk owns identity, Turso owns roles and partner profiles later.

Implementation Notes

Clerk stores identity, session, email verification, and auth providers.

Turso stores app truth: roles, partner verification, follows, and role-specific metadata.

Clerk public metadata can cache the active role for fast UI rendering, but Turso should remain the source of truth.

Turso schema preview
users
- id
- clerk_user_id
- display_name
- email
- active_role
- created_at

user_roles
- id
- user_id
- role
- status

follows
- id
- follower_user_id
- target_type
- target_id
- created_at

partner_profiles
- id
- user_id
- role
- business_name
- verification_status
- metadata_json

Follow Anything

Users can follow people, partners, places, routes, and future objects without redesigning the database.

touristlocal_userhotelhostelcafesim_outlettour_guidefood_expertdestinationroutetour_packageAdd more later