Created Turnpike, event attendee and volunteer management

Built after prototype, Traverse, an attendee and volunteer list
maintainer.
This commit is contained in:
Pen Anderson 2026-03-03 11:27:07 -06:00
commit 5d56ba8112
59 changed files with 8663 additions and 0 deletions

49
frontend/src/db.js Normal file
View file

@ -0,0 +1,49 @@
import Dexie from 'dexie'
export const db = new Dexie('turnpike')
db.version(1).stores({
session: 'id, token, user',
meta: 'key',
event: 'id',
attendees: 'id, name, ticket_type, checked_in, deleted_at',
departments: 'id, name, deleted_at',
volunteers: 'id, name, department_id, checked_in, attendee_id, deleted_at',
shifts: 'id, department_id, day, deleted_at',
volunteer_shifts: '[volunteer_id+shift_id], volunteer_id, shift_id',
outbox: '++id, table, op, synced_at',
})
db.version(2).stores({
session: 'id, token, user',
meta: 'key',
event: 'id',
attendees: 'id, name, ticket_type, checked_in, volunteer_token, deleted_at',
departments: 'id, name, deleted_at',
volunteers: 'id, name, department_id, checked_in, attendee_id, deleted_at',
shifts: 'id, department_id, day, position, deleted_at',
volunteer_shifts: '[volunteer_id+shift_id], volunteer_id, shift_id',
outbox: '++id, table, op, synced_at',
})
export async function getLastSync() {
const m = await db.meta.get('last_sync')
return m?.value ?? ''
}
export async function setLastSync(ts) {
await db.meta.put({ key: 'last_sync', value: ts })
}
export async function getSession() {
return db.session.get(1)
}
export async function saveSession(token, user) {
await db.session.put({ id: 1, token, user })
}
export async function clearSession() {
await db.session.clear()
await db.meta.clear()
}