No description
Find a file
hermes 9efc63f453
Some checks failed
CI / lint-and-typecheck (push) Has been cancelled
CI / test (push) Has been cancelled
Deploy to Node Hub / deploy (push) Has been cancelled
Test / test (push) Has been cancelled
CI / build (push) Has been cancelled
ci: re-run via runner pickup verification
2026-09-26 20:06:47 -07:00
.forgejo/workflows fix(ci): tolerate offline Node Hub in deploy.yml 2026-09-14 17:37:39 -07:00
.kilo/plans fix(export): correctly fetch previous revision for diff (AuWoMe/forgeflow#5) 2026-07-31 00:37:35 -07:00
data/secrets chore: add secrets templates for deployment 2026-04-23 21:07:33 -07:00
scripts/hermes fix(hooks,tests): loop-detector hardening + relax over-strict .next test (#26, #27) 2026-08-11 02:49:54 -07:00
src fix(export): pass ArrayBuffer to NextResponse instead of Blob (pre-push gate was red on main) 2026-08-11 02:52:30 -07:00
tests Fix ruff lint errors in test_pre_commit_loop_detector 2026-09-14 09:50:54 -07:00
.env.example chore: initial commit with .gitignore and project setup 2026-04-10 15:56:00 -07:00
.eslintrc.json chore: initial commit with .gitignore and project setup 2026-04-10 15:56:00 -07:00
.gitignore chore(security): harden .env* ignore rules (fixes #2) 2026-07-31 00:51:54 -07:00
.quickfix-plan.md fix: enforce Clerk auth in middleware unconditionally (refs #17) 2026-07-31 00:03:35 -07:00
.semgrepignore quickfix: Reference issue #20 in Semgrep ignore comments (refs #20) 2026-07-07 21:43:28 -07:00
AGENTS.md chore: initial commit with .gitignore and project setup 2026-04-10 15:56:00 -07:00
bun.lock fix: resolve CI, security, config, and code quality issues 2026-05-09 18:29:40 -07:00
drizzle.config.ts chore: initial commit with .gitignore and project setup 2026-04-10 15:56:00 -07:00
lefthook.yml ci: add test workflow, lefthook pre-commit/pre-push hooks 2026-04-18 12:24:24 -07:00
next-env.d.ts Apply changes from kilo-gsd.py run for AuWoMe/forgeflow#22 2026-09-14 09:50:54 -07:00
next.config.js fix: add standalone output to next config 2026-04-30 21:53:07 -07:00
package-lock.json chore(deps): remediate critical+high CVE bundle (closes #22) 2026-09-14 09:50:54 -07:00
package.json chore(deps): remediate critical+high CVE bundle (closes #22) 2026-09-14 09:50:54 -07:00
postcss.config.js chore: initial commit with .gitignore and project setup 2026-04-10 15:56:00 -07:00
README.md chore: initial commit with .gitignore and project setup 2026-04-10 15:56:00 -07:00
tailwind.config.js chore: initial commit with .gitignore and project setup 2026-04-10 15:56:00 -07:00
tsconfig.json chore: initial commit with .gitignore and project setup 2026-04-10 15:56:00 -07:00
vitest.config.ts chore: initial commit with .gitignore and project setup 2026-04-10 15:56:00 -07:00

Forgeflow

A hardware-first project tracker that turns BOM + revisions + supplier comms into a single, searchable timeline.

Features

  • BOM Workspace + Part Library — Create parts with MPN, manufacturer, lifecycle, preferred supplier, lead time, unit cost, and attachments
  • BOM Import (CSV) — Upload a spreadsheet BOM, map columns, dedupe parts by MPN, and generate a clean baseline
  • Revisioned BOM Snapshots — Every change creates a revision with diff (qty, MPN swap, supplier swap, cost/lead-time edits)
  • Change Requests + Approvals — Propose substitutions/qty changes, route for approval, and automatically create a new BOM revision when approved
  • Project Timeline — A chronological feed combining BOM revisions, change approvals, and key milestones
  • Supplier/Quote Tracker — Track supplier quotes per part (price breaks, MOQ, lead time, validity date)
  • Export Pack — One-click export of current BOM (CSV) plus a revision diff

Tech Stack

  • Next.js 14+ App Router
  • React 18 + TypeScript (strict)
  • Drizzle ORM + PostgreSQL
  • Tailwind CSS + shadcn/ui
  • Clerk (auth + orgs)
  • Stripe (subscriptions)
  • Resend (emails)
  • UploadThing (file uploads)

Getting Started

  1. Clone the repository

  2. Install dependencies:

    npm install
    
  3. Set up environment variables:

    cp .env.example .env.local
    

    Fill in all required environment variables.

  4. Set up the database:

    npm run db:push
    
  5. Run the development server:

    npm run dev
    
  6. Open http://localhost:3000 in your browser.

Environment Variables

Variable Description
DATABASE_URL PostgreSQL connection string
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY Clerk public key
CLERK_SECRET_KEY Clerk secret key
CLERK_WEBHOOK_SECRET Clerk webhook secret (optional)
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY Stripe public key
STRIPE_SECRET_KEY Stripe secret key
STRIPE_WEBHOOK_SECRET Stripe webhook secret
RESEND_API_KEY Resend API key
UPLOADTHING_SECRET UploadThing secret
UPLOADTHING_APP_ID UploadThing app ID

Database Schema

The application uses the following entities:

  • User — Application users synced from Clerk
  • Organization — Workspaces/teams
  • OrgMember — Organization membership with roles
  • Project — Hardware projects
  • Part — Component library (deduped by MPN)
  • Bom — Bill of Materials
  • BomRevision — Versioned BOM snapshots
  • BomLine — Individual BOM entries
  • ChangeRequest — Proposed changes
  • ChangeItem — Individual change items
  • Quote — Supplier quotes
  • TimelineEvent — Project activity feed

API Routes

Method Route Description
GET /api/orgs/current Get current org context
GET /api/projects List projects
POST /api/projects Create project
GET /api/projects/:id Get project details
GET /api/projects/:id/boms List project BOMs
GET /api/projects/:id/timeline Get project timeline
POST /api/boms/import Import BOM from CSV
GET /api/boms/:id/revisions List BOM revisions
GET /api/boms/:id/revisions/:revId Get revision with lines
GET /api/changes List change requests
POST /api/changes Create change request
POST /api/changes/:id/decide Approve/reject change

Deployment

The application is designed to be deployed on Vercel:

  1. Push your code to GitHub
  2. Connect your repository to Vercel
  3. Configure environment variables in Vercel dashboard
  4. Deploy!

License

MIT