Commit Graph

242 Commits

Author SHA1 Message Date
Ryan Moon
5993f8b370 fix: remove unused postgres/valkey services from CI — tests are pure unit tests 2026-04-01 21:01:33 -05:00
Ryan Moon
4c971f90eb fix: run CI on host runner to fix service container networking 2026-04-01 21:00:15 -05:00
Ryan Moon
05f926c0dc fix: remove unused imports and dead code to clear ESLint errors 2026-04-01 20:34:56 -05:00
Ryan Moon
a73c2de26e feat: add frontend nginx image and update build workflow for both images 2026-04-01 20:32:34 -05:00
Ryan Moon
0f8aff9426 fix: resolve ESLint errors — remove unused imports and dead code 2026-04-01 20:18:13 -05:00
lunarfront-bot
97638b888e chore: bump version to v0.0.24 2026-04-02 01:07:20 +00:00
ryan
6852a79f87 Merge pull request 'fix: skip build workflow on version bump commits' (#3) from feat/ci-cd-pipeline into main
Reviewed-on: #3
2026-04-02 01:06:44 +00:00
lunarfront-bot
a561b184e1 chore: bump version to v0.0.23 2026-04-02 01:06:36 +00:00
lunarfront-bot
7864c07be1 chore: bump version to v0.0.22 2026-04-02 01:06:10 +00:00
Ryan Moon
c3de66e554 fix: skip build workflow on version bump commits 2026-04-01 20:05:50 -05:00
lunarfront-bot
1e38d69b21 chore: bump version to v0.0.21 2026-04-02 01:05:45 +00:00
lunarfront-bot
eb9e669233 chore: bump version to v0.0.20 2026-04-02 01:05:20 +00:00
lunarfront-bot
13db5ce5f1 chore: bump version to v0.0.19 2026-04-02 01:04:52 +00:00
lunarfront-bot
babfccaa1b chore: bump version to v0.0.18 2026-04-02 01:04:24 +00:00
lunarfront-bot
1aa29dfb31 chore: bump version to v0.0.17 2026-04-02 01:04:02 +00:00
lunarfront-bot
efb55bc784 chore: bump version to v0.0.16 2026-04-02 01:03:40 +00:00
lunarfront-bot
9cdb2cf427 chore: bump version to v0.0.15 2026-04-02 01:03:19 +00:00
lunarfront-bot
135b88029a chore: bump version to v0.0.14 2026-04-02 01:02:59 +00:00
lunarfront-bot
23df7feaf1 chore: bump version to v0.0.13 2026-04-02 01:02:38 +00:00
lunarfront-bot
2e2832b1e3 chore: bump version to v0.0.12 2026-04-02 01:02:24 +00:00
lunarfront-bot
dd846bc86a chore: bump version to v0.0.11 2026-04-02 01:02:11 +00:00
lunarfront-bot
25e9177554 chore: bump version to v0.0.10 2026-04-02 01:01:51 +00:00
lunarfront-bot
cfd1561de9 chore: bump version to v0.0.9 2026-04-02 01:01:29 +00:00
lunarfront-bot
6304d14e56 chore: bump version to v0.0.8 2026-04-02 01:01:07 +00:00
lunarfront-bot
e4fe42c6ec chore: bump version to v0.0.7 2026-04-02 01:00:42 +00:00
lunarfront-bot
27a9900787 chore: bump version to v0.0.6 2026-04-02 01:00:15 +00:00
lunarfront-bot
90cbff0611 chore: bump version to v0.0.5 2026-04-02 00:59:46 +00:00
lunarfront-bot
ddae05dc3f chore: bump version to v0.0.4 2026-04-02 00:59:22 +00:00
lunarfront-bot
12fa36a7b0 chore: bump version to v0.0.3 2026-04-02 00:59:00 +00:00
lunarfront-bot
fc7d92e33f chore: bump version to v0.0.2 2026-04-02 00:58:35 +00:00
ryan
8f941381f9 Merge pull request 'fix: use node script for version bump instead of npm version' (#2) from feat/ci-cd-pipeline into main
Reviewed-on: #2
2026-04-02 00:58:19 +00:00
Ryan Moon
7987818ae7 fix: use node script for version bump instead of npm version 2026-04-01 19:57:09 -05:00
ryan
83b48cb3be Merge pull request 'feat: add CI/CD pipeline, production Dockerfile, and deployment architecture' (#1) from feat/ci-cd-pipeline into main
Reviewed-on: #1
2026-04-02 00:52:02 +00:00
Ryan Moon
c2b1073fef feat: add CI/CD pipeline, production Dockerfile, and deployment architecture
- Add production Dockerfile with bun build --compile, multi-stage Alpine build
- Add .dockerignore
- Swap bcrypt -> bcryptjs (pure JS, no native addons)
- Add programmatic migrations on startup via drizzle migrator
- Add /v1/version endpoint with APP_VERSION baked in at build time
- Add .gitea/workflows/ci.yml (lint + test with postgres/valkey services)
- Add .gitea/workflows/build.yml (version bump, build, push to registry)
- Update CLAUDE.md and docs/architecture.md to remove multi-tenancy
- Add docs/deployment.md covering DOKS + ArgoCD architecture

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 19:50:37 -05:00
Ryan Moon
ffef4c8727 Remove infra folder — moved to lunarfront-infra repo 2026-03-31 08:11:37 -05:00
Ryan Moon
d18d431bd0 Add terraform lock file 2026-03-31 06:12:44 -05:00
Ryan Moon
41b6f076cb Remove terraform provider binaries from git, add .gitignore 2026-03-31 06:12:25 -05:00
Ryan Moon
fe3c7646d6 Add infra setup: Terraform for DO droplet + Cloudflare DNS, Ansible roles for Gitea, Vaultwarden, and Gitea runner 2026-03-31 06:08:21 -05:00
Ryan Moon
bde3ad64fd Fix code review items: atomic qty increment, unit updatedAt, suppliers/all endpoint, SKU unique index 2026-03-31 05:08:01 -05:00
Ryan Moon
5f5ba9e4a2 Build inventory frontend and stock management features
- Full inventory UI: product list with search/filter, product detail with
  tabs (details, units, suppliers, stock receipts, price history)
- Product filters: category, type (serialized/rental/repair), low stock,
  active/inactive — all server-side with URL-synced state
- Product-supplier junction: link products to multiple suppliers with
  preferred flag, joined supplier details in UI
- Stock receipts: record incoming stock with supplier, qty, cost per unit,
  invoice number; auto-increments qty_on_hand for non-serialized products
- Price history tab on product detail page
- categories/all endpoint to avoid pagination limit on dropdown fetches
- categoryId filter on product list endpoint
- Repair parts and additional inventory items in music store seed data
- isDualUseRepair corrected: instruments set to false, strings/parts true
- Product-supplier links and stock receipts in seed data
- Price history seed data simulating cost increases over past year
- 37 API tests covering categories, suppliers, products, units,
  product-suppliers, and stock receipts
- alert-dialog and checkbox UI components
- sync-and-deploy.sh script for rsync + remote deploy
2026-03-30 20:12:07 -05:00
Ryan Moon
ec09e319ed Update accounting planning doc v2 — fix AP/safe accounts, add periods, tax rates, gift cards, consignment, posting service 2026-03-30 19:41:23 -05:00
Ryan Moon
89b412374a Expand POS planning — discounts, returns, cash management, training mode, customer display, quick keys 2026-03-30 19:15:13 -05:00
Ryan Moon
07f199b69d Add PIN unlock flow to POS frontend planning 2026-03-30 19:12:17 -05:00
Ryan Moon
ae3c85fee0 Add frontend strategy planning doc — admin, POS, floor app 2026-03-30 19:08:16 -05:00
Ryan Moon
5ad27bc196 Add lessons module, rate cycles, EC2 deploy scripts, and help content
- Lessons module: lesson types, instructors, schedule slots, enrollments,
  sessions (list + week grid view), lesson plans, grading scales, templates
- Rate cycles: replace monthly_rate with billing_interval + billing_unit on
  enrollments; add weekly/monthly/quarterly rate presets to lesson types and
  schedule slots with auto-fill on enrollment form
- Member detail page: tabbed layout for details, identity documents, enrollments
- Sessions week view: custom 7-column grid replacing react-big-calendar
- Music store seed: instructors, lesson types, slots, enrollments, sessions,
  grading scale, lesson plan template
- Scrollbar styling: themed to match sidebar/app palette
- deploy/: EC2 setup and redeploy scripts, nginx config, systemd service
- Help: add Lessons category (overview, types, instructors, slots, enrollments,
  sessions, plans/grading); collapsible sidebar with independent scroll;
  remove POS/accounting references from docs
2026-03-30 18:52:57 -05:00
Ryan Moon
7680a73d88 Add Phase 8: lesson plan templates with deep-copy instantiation
- New tables: lesson_plan_template, lesson_plan_template_section, lesson_plan_template_item
- skill_level enum: beginner, intermediate, advanced, all_levels
- Templates are reusable curriculum definitions independent of any member/enrollment
- POST /lesson-plan-templates/:id/create-plan deep-copies the template into a member plan
- Instantiation uses template name as default plan title, accepts custom title override
- Instantiation deactivates any existing active plan on the enrollment (one-active rule)
- Plan items are independent copies — renaming the template does not affect existing plans
- 11 new integration tests
2026-03-30 10:37:30 -05:00
Ryan Moon
2cc8f24535 Add Phase 7: grade history and session-plan item linking
- New tables: lesson_plan_item_grade_history (append-only), lesson_session_plan_item
- Grading an item updates current_grade_value and creates immutable history record
- Grading a not_started item auto-transitions it to in_progress
- Linking items to a session also auto-transitions not_started items
- Link operation is idempotent — re-linking same items produces no duplicates
- Endpoints: POST/GET /lesson-plan-items/:id/grades, GET /lesson-plan-items/:id/grade-history
- Endpoints: POST/GET /lesson-sessions/:id/plan-items
- 8 new integration tests
2026-03-30 10:33:21 -05:00
Ryan Moon
5cd2d05983 Add Phase 4b: instructor blocked dates, store closures, and substitute instructors
- New tables: instructor_blocked_date, store_closure (migration 0034)
- substitute_instructor_id column added to lesson_session
- Session generation skips blocked instructor dates and store closure periods
- Substitute assignment validates sub is not blocked and has no conflicting slot
- Routes: POST/GET/DELETE /instructors/:id/blocked-dates, POST/GET/DELETE /store-closures
- 15 new integration tests covering blocked dates, store closures, and sub validation
2026-03-30 10:29:13 -05:00
Ryan Moon
aae5a022a8 Add lessons Phase 6: lesson plans with curriculum tracking
Structured lesson plans with nested sections and items per enrollment.
Deep create in one request, one-active-per-enrollment constraint,
auto-set startedDate/masteredDate on status transitions, progress %
calculation (skipped items excluded). 8 new tests (84 total).
2026-03-30 09:40:41 -05:00
Ryan Moon
31f661ff4f Add lessons Phase 5: grading scales with nested levels
Custom grading scales with ordered levels (value, label, numeric score,
color). Supports one-default-per-store constraint, deep create with
nested levels, lookup endpoint for dropdowns, and search/pagination.
12 new tests (76 total lessons tests).
2026-03-30 09:36:48 -05:00