{"id":50931980,"url":"https://github.com/kisaesdevlab/vibe-job-proposals","last_synced_at":"2026-06-17T05:04:37.828Z","repository":{"id":362107577,"uuid":"1252849592","full_name":"KisaesDevLab/Vibe-Job-Proposals","owner":"KisaesDevLab","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-02T16:21:33.000Z","size":999,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-02T17:09:05.587Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KisaesDevLab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-28T23:52:48.000Z","updated_at":"2026-06-02T16:22:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/KisaesDevLab/Vibe-Job-Proposals","commit_stats":null,"previous_names":["kisaesdevlab/vibe-job-proposals"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/KisaesDevLab/Vibe-Job-Proposals","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KisaesDevLab%2FVibe-Job-Proposals","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KisaesDevLab%2FVibe-Job-Proposals/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KisaesDevLab%2FVibe-Job-Proposals/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KisaesDevLab%2FVibe-Job-Proposals/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KisaesDevLab","download_url":"https://codeload.github.com/KisaesDevLab/Vibe-Job-Proposals/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KisaesDevLab%2FVibe-Job-Proposals/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34434497,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-17T05:04:23.629Z","updated_at":"2026-06-17T05:04:37.820Z","avatar_url":"https://github.com/KisaesDevLab.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Darrow Time \u0026 Invoicing\n\nA single-tenant web application that replaces the legacy `Time_Allocation_Tracking.xlsm`\nworkbook for Darrow Electric: track field-electrician time by day/job/employee/tier, log\njob expenses with receipt attachments, and generate customer invoices (DOCX + PDF) that\ncombine billed time and expenses with configurable per-customer markups.\n\nBuilt per [`CLAUDE.md`](./CLAUDE.md) (the full 20-phase build plan). UI follows\n[`docs/mockup.html`](./docs/mockup.html) — charcoal + copper.\n\n## Stack\n\nReact 18 + TypeScript + Vite + TanStack Router/Query + Tailwind · Node 20 + Express ·\nPostgreSQL 16 + Drizzle · Redis 7 + BullMQ · docxtemplater + LibreOffice (DOCX→PDF) ·\nsharp + pdf-lib (image→PDF). npm workspaces monorepo.\n\n```\napps/web   React SPA          packages/shared   zod schemas + pricing engine\napps/api   Express API        packages/db       Drizzle schema + numbered migrations\n                              packages/workers  BullMQ workers (image→pdf, docx, pdf, email)\n```\n\n## Quick start (Docker)\n\n```bash\ncp .env.example .env            # fill SESSION_SECRET (and SMTP_ENC_KEY if using email)\ndocker compose -f docker/docker-compose.prod.yml up -d\n# create the first admin (prints a generated password if none given):\ndocker compose -f docker/docker-compose.prod.yml exec app npx tsx scripts/bootstrap-admin.ts admin\n```\nOpen `http://localhost:3000` and sign in. Put a reverse proxy (see\n`docker/examples/Caddyfile`) in front for HTTPS.\n\n## Local development\n\n```bash\ndocker compose -f docker/docker-compose.yml up -d   # Postgres + Redis\nnpm install\nnpm run db:migrate \u0026\u0026 npm run db:seed\nnpm run bootstrap                                    # creates admin, writes docs/FIRST_RUN.md\nnpm run dev                                          # api :4000 + web :5173\nnpm run dev:workers                                  # workers (separate terminal)\n```\n\n### Seed defaults\n- 9 customers (Jasper Products, Bagcraft, Nutra Blend, Sugar Creek, Diamond Pet Foods,\n  Graham Packaging, Modine, Eagle Picher, Darlington) with blank addresses to fill in.\n- 9 rate levels (Foreman, Journeyman, Apprentice Yr 1–7).\n- Markup defaults: materials 15%, equipment rent 10%, others 0%.\n\n## Scripts\n\n| Command | Purpose |\n|---|---|\n| `npm run dev` | API + web together |\n| `npm run build` | Build all workspaces |\n| `npm run lint` / `npm run type-check` / `npm test` | Green gate |\n| `npm run db:migrate` / `db:seed` / `db:reset` | Database |\n| `npm run bootstrap` | Create first admin |\n| `npm run import:xlsm -- \u003cfile.xlsm\u003e` | Historical import (Phase 18) |\n| `npm run smoke` | Automated end-to-end smoke test |\n\n## Docs\n- [SMOKETEST](./docs/SMOKETEST.md) · [OPERATIONS](./docs/OPERATIONS.md) ·\n  [BACKUP](./docs/BACKUP.md) · [UPGRADE](./docs/UPGRADE.md) ·\n  [PLACEHOLDERS](./docs/PLACEHOLDERS.md)\n- Autonomous build decisions: [QUESTIONS.md](./QUESTIONS.md)\n\n## License\nPolyForm Internal Use License 1.0.0 — see [LICENSE.md](./LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkisaesdevlab%2Fvibe-job-proposals","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkisaesdevlab%2Fvibe-job-proposals","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkisaesdevlab%2Fvibe-job-proposals/lists"}