Restaurant reservations

Tables have a seat count and an area; service periods say when the room is open and how many covers it takes. A reservation is a party at a time, assigned to one or more tables when seated, moving through requested, confirmed, seated and finished. The waitlist holds walk-ins with how long they said they would wait.

Start a project from this schema
$ npx vela create my-app --schema restaurant-reservations
users auth
  • id* text
  • password* password
  • tokenKey* text
  • email* email
  • emailVisibility bool
  • verified bool
  • name text
  • avatar file
  • created autodate
  • updated autodate
areas
  • id* text
  • name* text
  • outdoor bool
  • sort number
  • created autodate
  • updated autodate
tables
  • id* text
  • name* text
  • area* areas
  • seats* number
  • active bool
  • created autodate
  • updated autodate
service_periods
  • id* text
  • name* text
  • day* select[]
  • opens_at* text
  • closes_at* text
  • max_covers number
  • created autodate
  • updated autodate
guests
  • id* text
  • name* text
  • phone text
  • email email
  • allergies text
  • notes text
  • visits number
  • user users
  • created autodate
  • updated autodate
reservations
  • id* text
  • guest* guests
  • at* date
  • party_size* number
  • duration_minutes number
  • tables tables[]
  • status* select
  • source select
  • occasion text
  • notes text
  • created autodate
  • updated autodate
waitlist
  • id* text
  • name* text
  • phone text
  • party_size* number
  • quoted_minutes number
  • status* select
  • reservation reservations
  • created autodate
  • updated autodate

Every collection, field and relation above becomes a PocketBase migration in the new project. Change any of it afterwards with vela generate migration --ai, which opens this same diagram as an editor.