ryan cf299ac1d2 feat: POS PIN unlock with employee number + PIN auth
- Add employeeNumber and pinHash fields to users table
- POST /auth/pin-login: takes combined code (4-digit employee# + 4-digit PIN)
- POST /auth/set-pin: employee sets their own PIN (requires full auth)
- DELETE /auth/pin: remove PIN
- Lock screen with numpad, auto-submits on 8 digits, visual dot separator
- POS uses its own auth token separate from admin session
- Admin "POS" link clears admin session before navigating
- /pos route has no auth guard — lock screen is the auth
- API client uses POS token when available, admin token otherwise
- Auto-lock timer reads pos_lock_timeout from app_config (default 15 min)
- Lock button in POS top bar, shows current cashier name

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 16:05:19 +00:00

LunarFront

Small business management platform — POS, inventory, rentals, scheduling, repairs, and accounting.

Built by Lunarfront Tech LLC.

Tech Stack

  • Runtime: Bun
  • Language: TypeScript (end-to-end)
  • API: Fastify + Drizzle ORM + PostgreSQL 16
  • Frontend: React + TanStack Router + TanStack Query
  • Validation: Zod (shared schemas)
  • Queue/Cache: BullMQ + Valkey 8
  • Monorepo: Turborepo + Bun workspaces

Quick Start

bun install
cp .env.example .env       # configure DATABASE_URL, REDIS_URL, JWT_SECRET
cd packages/backend && bunx drizzle-kit migrate
bun run dev                # starts backend (:8000) + admin UI (:5173)

Packages

Package Description
packages/backend Fastify API server
packages/admin Admin UI (React + Vite)
packages/shared Zod schemas, types, shared utils

Documentation

Doc Description
Setup Prerequisites, environment, installation, running
Architecture Monorepo structure, backend/frontend design, state management
API Reference All endpoints, pagination, auth, permissions
Database Schema overview, migrations, multi-tenancy
Testing Test runner, suites, writing tests, assertions

Commands

bun run dev       # start all packages in dev mode
bun run test      # run all tests
bun run lint      # lint all packages
bun run format    # format with Prettier

License

Proprietary. All rights reserved.

Description
No description provided
Readme 23 MiB
Languages
TypeScript 99.2%
Shell 0.5%
CSS 0.2%