A web app to manage garage stock, orders, and purchases. https://garage.nokopia.com
  • TypeScript 97.2%
  • CSS 1.9%
  • Nix 0.4%
  • Dockerfile 0.3%
  • JavaScript 0.2%
Find a file
Yuris Cakranegara ef16002ec4
All checks were successful
Build and Publish Container / build-push (push) Successful in 5m34s
refactor: shrink duplicated code and dead config (#20)
## Summary

- deduplicate report order/purchase queries and inventory lookups
- centralize manual stock adjustments
- collapse duplicated report tables and movement badges
- remove repeated session/type/config plumbing
- remove dead `db:seed`, store fields/helpers, and unused exports

## Verification

- management TypeScript: passed
- store TypeScript: passed
- management tests: 25 passed
- store tests: 6 passed
- management production build: passed (Next.js emitted one existing NFT tracing warning from dynamic env file access)
- `git diff --check`: passed

DetailsShell extraction was intentionally skipped: existing `DetailsPanel` already owns the reusable shell, and extracting the remaining entity-specific wrappers increased code size.

Reviewed-on: #20
2026-07-18 06:57:22 +00:00
.forgejo/workflows Preserve management container publishing after the monorepo move (#8) (#12) 2026-07-17 20:25:40 +00:00
.omp chore: capture local dev env state before monorepo move 2026-07-18 02:18:53 +07:00
apps refactor: shrink duplicated code and dead config (#20) 2026-07-18 06:57:22 +00:00
docs feat: add internal catalog endpoint (#3) 2026-07-16 23:16:22 +00:00
packages/catalog refactor: shrink duplicated code and dead config (#20) 2026-07-18 06:57:22 +00:00
.dockerignore fix(docker): make container build monorepo-aware (#6) 2026-07-18 03:00:08 +07:00
.gitignore build: set up pnpm + Turborepo monorepo (#6) 2026-07-18 02:30:11 +07:00
biome.json chore: initial commit 2026-04-22 17:09:20 +10:00
devenv.lock chore: capture local dev env state before monorepo move 2026-07-18 02:18:53 +07:00
devenv.nix feat(devenv): run store dev alongside management in devenv up (#15) 2026-07-18 04:44:04 +07:00
package.json build: set up pnpm + Turborepo monorepo (#6) 2026-07-18 02:30:11 +07:00
pnpm-lock.yaml Extract the public catalog contract into a shared package (#7) (#11) 2026-07-17 20:25:34 +00:00
pnpm-workspace.yaml build: set up pnpm + Turborepo monorepo (#6) 2026-07-18 02:30:11 +07:00
README.md build: set up pnpm + Turborepo monorepo (#6) 2026-07-18 02:30:11 +07:00
turbo.json build: set up pnpm + Turborepo monorepo (#6) 2026-07-18 02:30:11 +07:00

Garage monorepo

pnpm + Turborepo workspace hosting both garage applications.

Layout

apps/management   # Next.js CRM / management dashboard (garage)
apps/store        # Next.js static storefront (garage-store)
packages/         # shared packages (e.g. @garage/catalog, added later)

Prerequisites

  • devenv and direnv (Nix-based)
  • Node.js 22 and pnpm (provided by devenv)

Commands

Run from the repository root:

pnpm install          # install all workspaces (frozen lockfile in CI)
pnpm dev              # turbo run dev (all apps)
pnpm build            # turbo run build
pnpm lint             # turbo run lint (Biome)
pnpm test             # turbo run test
pnpm format           # biome format --write

Target a single app with pnpm filters:

pnpm --filter garage dev          # management on :3000
pnpm --filter garage-store dev    # storefront

App-specific setup, environment variables, and scripts live in each app's README.md and .env.example.