Files
lunarfront-app/docs/database.md
Ryan Moon 9400828f62 Rename Forte to LunarFront, generalize for any small business
Rebrand from Forte (music-store-specific) to LunarFront (any small business):
- Package namespace @forte/* → @lunarfront/*
- Database forte/forte_test → lunarfront/lunarfront_test
- Docker containers, volumes, connection strings
- UI branding, localStorage keys, test emails
- All documentation and planning docs

Generalize music-specific terminology:
- instrumentDescription → itemDescription
- instrumentCount → itemCount
- instrumentType → itemCategory (on service templates)
- New migration 0027_generalize_terminology for column renames
- Seed data updated with generic examples
- RBAC descriptions updated
2026-03-30 08:51:54 -05:00

2.4 KiB

Database

Setup

PostgreSQL 16. Two databases:

Database Port Usage
lunarfront 5432 Development
lunarfront_api_test 5432 API integration tests (auto-created by test runner)

Migrations

Migrations are managed by Drizzle Kit and live in packages/backend/src/db/migrations/.

cd packages/backend

# Generate a migration from schema changes
bunx drizzle-kit generate

# Apply pending migrations
bunx drizzle-kit migrate

Schema files: packages/backend/src/db/schema/

Multi-Tenancy

All domain tables include company_id (uuid FK to company). Every query filters by the authenticated user's company. Location-scoped tables additionally include location_id.

Schema Overview

Core

Table Description
company Tenant (tenant business)
location Physical store location
user Staff/admin user account

Accounts & Members

Table Description
account Billing entity (family, individual, business)
member Individual person on an account
member_identifier ID documents (DL, passport, school ID)
payment_method Stored payment methods
processor_link Payment processor integrations
tax_exemption Tax exemption records

Inventory

Table Description
product Product catalog entry
inventory_unit Individual serialized/non-serialized unit
stock_receipt Incoming stock records
category Product categories
supplier Product suppliers
inventory_unit_status Lookup: unit statuses
item_condition Lookup: item conditions

RBAC

Table Description
permission System permissions (global, seeded)
role Company-scoped roles (system + custom)
role_permission Role-to-permission mapping
user_role_assignment User-to-role mapping

Files

Table Description
file File metadata (path, type, size, entity reference)

Key Conventions

  • UUIDs for all primary keys (defaultRandom())
  • created_at and updated_at timestamps with timezone on all tables
  • Soft deletes via is_active boolean where applicable
  • Auto-generated sequential numbers: account_number (6-digit), member_number
  • Lookup tables support both system (immutable) and custom (company-scoped) values