Hydrogen
당신과 코딩 에이전트를 위한 상거래 기본 요소. 기존 프레임워크에 장바구니·상품·결제·계정을 추가합니다
수요 우선 오프테이크·내장 금융, 나이지리아 북부 소규모 작물 재배자를 위한 데모
Demo: demand-first offtake + embedded finance for Northern-Nigeria perishable-crop smallholders. Farmer (USSD), Agent (PWA), Buyer (web) — live.
커머스TypeScript · CSSGitHub @ismailquadri온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A functional demo of a demand-first offtake + embedded-finance platform for
Northern-Nigeria perishable-crop smallholders. One live run shows the full loop
across three actors, updating live across screens:
• /phone — Farmer (Musa / Hauwa): feature-phone USSD in Hausa + SMS inbox
• /agent — Agent (Ibrahim): installable PWA — register, enrol + advance, grade, aggregate
• /buyer — Buyer (Mrs. Okafor): post demand, watch supply fill live, fund escrow
• /admin — Presenter: impact metrics (income uplift, loss avoided, GMV, revenue split) + Reset demo
• / — launcherREADME 전문 보기 ↗A functional demo of a demand-first offtake + embedded-finance platform for Northern-Nigeria perishable-crop smallholders. One live run shows the full loop across three actors, updating live across screens:
/phone — Farmer (Musa / Hauwa): feature-phone USSD in Hausa + SMS inbox/agent — Agent (Ibrahim): installable PWA — register, enrol + advance, grade, aggregate/buyer — Buyer (Mrs. Okafor): post demand, watch supply fill live, fund escrow/admin — Presenter: impact metrics (income uplift, loss avoided, GMV, revenue split) + Reset demo/ — launcherSimulated & labeled: USSD/telco, payment settlement, and NDFR verification are mocked for the demo. Production runs over Africa's Talking + a licensed PSP.
Single Next.js (App Router, TypeScript) app. Thin /api/* route handlers validate
with zod, call isolated src/domain/* services (pricing, finance, escrow, USSD, metrics —
all unit-tested, money in integer kobo), and persist via Prisma + Postgres. Every
mutation publishes a Server-Sent Event; all open surfaces refetch within ~1–2s
(polling fallback if SSE drops).
src/domain/* pure business logic (TDD) src/app/api/* thin adapters + publish()
src/realtime/hub SSE publish/subscribe src/lib/useAppState live client state
prisma/schema data model src/domain/seed deterministic demo cast
docker compose up -d # Postgres on host port 5433
cp .env.example .env # DATABASE_URL points at localhost:5433
npx prisma migrate deploy # apply migrations (non-destructive)
npm install
npm run seed # load the demo cast
npm run dev # http://localhost:3000
Open /buyer, /agent, and /phone in three windows side by side to see live sync.
Fully self-contained; works with venue wifi down.
docker compose up -d
npx prisma migrate deploy && npm run seed
npm run build
npm start # production server on :3000
During the pitch, use the Reset demo button on /admin to return to a clean cast
between runs (this uses the app's own reset — always available).
*347*55# → 1 (sell) → tomato → 12 baskets → hears the fair
price (₦5,000) vs the middleman glut price (₦3,000) → 1 (accept).Expected ledger for the run above: Musa ₦57,000 (advance + net payout ₦17,000), agent ₦1,200 (2% commission), platform ₦1,800 (3% fee, advance recouped).
npm test # domain unit tests (no DB)
npm run test:e2e # hero-path integration test — drives the real handlers against Postgres
The e2e test resets via the app's own seed module and asserts the full ledger settles.
DATABASE_URL to the Neon string.DATABASE_URL="<neon-url>" npx prisma migrate deploy
DATABASE_URL="<neon-url>" npm run seed
postinstall runs prisma generate
automatically during the build. Deploy and verify the hero flow on the live URL.npm run db:resetdb:reset runs prisma migrate reset, which drops and recreates the database.
Prisma's CLI refuses this when invoked by an AI coding agent, so run it yourself from a
normal shell when you want a full wipe. For day-to-day resets (including during the demo),
use the Reset demo button on /admin — it re-seeds without touching migrations.