A web app for cataloguing family heirlooms and possessions: item profiles, family history, storage location, preferences for passing items on, photos (current and historical), tags (category and family member), searchable inventory, and downloadable QR code labels.
- Backend: Fastify (Node.js)
- Frontend: React (Vite)
- Database & Auth: Supabase (PostgreSQL, Auth, Storage)
- Create a project at supabase.com.
- In SQL Editor, run the migrations in order:
supabase/migrations/20250301000001_initial_schema.sqlsupabase/migrations/20250301000002_storage.sql
- In Authentication → Providers, enable Email (and confirm email if you want).
- In Project Settings → API, note:
- Project URL →
SUPABASE_URL service_rolekey →SUPABASE_SERVICE_ROLE_KEY(backend only, keep secret)anonpublic key →VITE_SUPABASE_ANON_KEY(frontend)
- Project URL →
Server (server/.env):
SUPABASE_URL=https://xxxx.supabase.co
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
CLIENT_ORIGIN=http://localhost:5173
PORT=3000Client (client/.env):
VITE_SUPABASE_URL=https://xxxx.supabase.co
VITE_SUPABASE_ANON_KEY=your_anon_keyFrom the project root:
npm install
cd server && npm install && cd ..
cd client && npm install && cd ..Run both dev servers (from root):
npm run dev- Frontend: http://localhost:5173
- API: http://localhost:3000
Sign up with email on the app; then sign in and start adding items and tags.
- Sign-in: Email/password via Supabase Auth; all data is per-user.
- Items: Name, short description, family history, “after death” preference, storage location, auto-generated item ID (e.g. BQ-00001).
- Tags: Category (furniture, china, etc.) and family member (e.g. Grandma Russell); create and assign on the Tags page and when editing items.
- Photos: Upload current and historical photos per item; stored in Supabase Storage.
- QR code: Download a PNG label from the item detail page to print and stick on the item; the code links to that item’s page.
- Scan: Use the in-app scanner (camera) to scan a Bquest item label and jump straight to that item's profile.
- Inventory: List all items; search by name/description and filter by tag.
For hosting on Vercel (frontend) and Render (API) with a custom domain, see DEPLOYMENT.md.
| Command | Description |
|---|---|
npm run dev |
Run client + server in dev |
npm run build |
Build client and server |
npm start |
Run server only (after build) |