尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Professional low-current / ICT / AV / surveillance quotation designer. Powered
by Next.js 15 (App Router), Postgres (any provider, accessed via a
transaction pooler), and Groq for fast AI inference with a live
agentic web-search fallback. All catalogs are pulled in real time from the
DATABASE/ folder of this same GitHub repo — no database seeding required for
product data.
DATABASE/ and are
fetched at request time from raw.githubusercontent.com. Push a new model,
it's instantly available.llama-3.3-70b-versatile for design. For deeper
lookups that the local catalog can't answer, escalates to Groq's agentic
compound-beta model which performs live web search internally.npm run db:init).jose. Default admin on first
boot is admin / admin123 — change it immediately. Admins create further
users from the Admin page.Copy .env.example to .env.local (locally) or add to your Vercel project
settings:
| Variable | Required | Description |
|---|---|---|
POSTGRES_URL or DATABASE_URL | ✅ | Pooled Postgres connection string (transaction pooler, e.g. port 6543) — see below |
AUTH_SECRET | ✅ | Long random string (>=32 chars) for JWT signing. Generate: openssl rand -base64 48 |
GROQ_API_KEY | ✅ | Free at https://console.groq.com/keys |
GROQ_DESIGN_MODEL | Default llama-3.3-70b-versatile | |
GROQ_WEB_MODEL | Default groq/compound (agentic web search) | |
DEFAULT_ADMIN_USER | Default admin | |
DEFAULT_ADMIN_PASS | Default admin123 — change immediately after first login | |
GITHUB_REPO | owner/repo that hosts DATABASE/ — default this repo | |
GITHUB_BRANCH | Branch that hosts DATABASE/ | |
COMPANY_LOGO_URL | Raw GitHub URL for the Magic Tech logo (falls back to SVG) |
The app looks for these env vars in order and uses the first non-empty value:
DATABASE_URL — set manually if you prefer explicit naming.POSTGRES_URL — common alias; some Vercel Postgres integrations
inject this automatically at the pooled
(transaction mode) endpoint.POSTGRES_PRISMA_URL — same source, Prisma-flavoured.POSTGRES_URL_NON_POOLING — last-resort direct connection. Not recommended
from a serverless function.So if your host's Postgres integration injects POSTGRES_URL (pooled), you're
already done — just redeploy so the new env vars are picked up by the build.
⚠ Use the transaction pooler (the
POSTGRES_URL, port 6543), notPOSTGRES_URL_NON_POOLING. The app is configured withprepare: falseandmax: 1for pgbouncer-in-transaction-mode and will exhaust direct connections under serverless load.
npm install
cp .env.example .env.local # then fill in DATABASE_URL, AUTH_SECRET, GROQ_API_KEY
npm run manifest:build # regenerate DB manifest (only after editing DATABASE/)
npm run db:init # bootstrap users + quotations tables (optional)
npm run dev
Open http://localhost:3000, sign in as admin / admin123, and go.
Recommended path:
eu-central-1 for fra1). Grab its pooled (transaction-mode)
connection string.DATABASE_URL (or POSTGRES_URL) for Production, Preview and
Development — marked Sensitive. (If your provider offers a Vercel
integration that injects POSTGRES_URL, that works too.)AUTH_SECRET — openssl rand -base64 48GROQ_API_KEYensureSchema() bootstraps the users
and quotations tables and seeds the default admin./login as admin / admin123, open /admin, and rotate
the admin password immediately.ssl: "require" in the postgres client).httpOnly, sameSite=lax, and secure in production.prepare: false, max: 1) for the
Supavisor transaction pooler./login · default admin / admin123./designer
HIKVISION · IP Cameera) or leave on Auto for
cross-vendor.compound-beta model with
live browsing./quotation?id=..../admin (admins only) · create or remove users.Mirrors your Magic Tech catalog exactly. Each category contains:
*_db.json — the products with pricing.*_selection_theory.json — engineering selection criteria used by the AI
as grounded context.Currently indexed (auto-generated by npm run manifest:build into
src/lib/manifest.generated.ts):
ARUBA, Cables, DSPPA (AMPLIFIERS, Accessories, Conference, IP Network,
MATRIX, misc, PAVA, SPEAKERS), ESVIZ, Extreme cabinet, fanvil,
General Accessories, HIKVISION (Access Control, Alarm, Analog Cameras,
Cables, DVR-NVR, Gates Barrier, HDD, Interactive Screen, Intercom,
IP Camera, MIXED, Monitors, PTZ, Switches, Turnstile, Video wall),
LEGREND, PLANET, SCHENIDER, SIB, TENDA, Yeastar
src/
├── app/
│ ├── layout.tsx, globals.css, page.tsx
│ ├── login/ → /login (server component + LoginForm client)
│ ├── designer/ → /designer (Groq-driven designer)
│ ├── quotation/ → /quotation[?id=] list + printable view
│ ├── admin/ → /admin users management
│ └── api/
│ ├── auth/{login,logout,me}/route.ts
│ ├── users/route.ts
│ ├── database/{systems,manifest,search}/route.ts
│ ├── groq/{design,web}/route.ts
│ └── quotations/route.ts
├── components/
│ ├── LoginForm.tsx, TopBar.tsx, UserManager.tsx
│ ├── Designer.tsx (main designer UX)
│ └── QuotationPreview.tsx, QuotationViewer.tsx
└── lib/
├── db.ts (Postgres via postgres.js + transaction pooler)
├── auth.ts (JWT + PBKDF2)
├── github.ts (raw JSON loader with Next fetch cache)
├── search.ts (smart scored search over JSON DBs)
├── groq.ts (Groq SDK client + system prompts)
└── manifest.generated.ts (auto-generated from DATABASE/)
postgres 3.4 (porsager/postgres) — type-safe tagged-template driver
talking to Postgres via a transaction poolergroq-sdk 0.12 — Groq inference (free tier)jose 5 — JWT signing / verify (Edge-compatible)Proprietary — Magic Tech / Neogenesis.