Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
양곤 소규모 택배 회사를 위한 택배 접수·배달원 배정·착불 추적·가맹점 정산·배달원 정산 관리
Parcel delivery management for a small Yangon courier: parcel intake, rider assignment, COD tracking, merchant settlements and rider payouts. Try the live demo as an admin, merchant or rider.
비즈니스TypeScript · JavaScriptGitHub @ahp-sooyaa온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Internal delivery management system for parcels after they reach the office — rider assignment, delivery status, COD and fee collection, merchant settlements, and rider payouts.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Parcel delivery management for a small courier in Yangon: log parcels as they reach the office, assign riders, track every kyat of COD and delivery fees, and turn delivered parcels into merchant settlements and rider payouts.
Try the live demo → One click signs you in as an admin, a merchant, or a rider. No sign-up. The demo data resets every night at 00:00 Yangon time.
Parcel Flow was designed for a delivery business my sister was planning to start in Yangon. It is modelled on how small local couriers work: pickup arranged on Telegram, cash on delivery, township-based fees, and weekly settlements with merchants. The business plans changed, so it is now a source-available portfolio project.
Pickup still happens outside the app. Parcel Flow starts when parcels reach the office and covers the rest of the operational and money loop.
| Role | In the demo | What they do |
|---|---|---|
| Office admin | Try as Admin | Create, edit and assign parcels; review failed deliveries and decide retry or return; correct a status or rider with a recorded reason; confirm rider cash handovers; build settlements and rider payout drafts. |
| Merchant | Try as Merchant | Read-only view of their own parcels, settlement status, and paid settlement history. |
| Rider | Try as Rider | Mobile parcel cards: start delivery, mark delivered, report failures, complete merchant returns. |
| Super admin | Not in the demo | Everything above, plus user management, township pricing, paying settlements and payouts. |
| Area | Tool |
|---|---|
| App | Next.js 16 (App Router, Cache Components), TypeScript, Tailwind CSS, shadcn/ui |
| Auth | Better Auth (username + password, admin-created accounts) |
| Database | PostgreSQL on Supabase, Drizzle ORM |
| Realtime | Supabase Realtime, relayed to the browser over server-sent events |
| Storage | Cloudflare R2 |
| Validation | Zod |
| Hosting | Railway |
| Monitoring | Sentry |
| Tests | Bun (unit, component, integration) and Playwright (end to end) |
Setting NEXT_PUBLIC_DEMO_MODE=1 turns a deployment into the public demo:
/demo/[role] signs visitors in to shared demo accounts with one click (POST only, rate limited).POST /api/demo/reset (with Authorization: Bearer $DEMO_RESET_TOKEN) wipes everything except super admins and loads a small demo data set: 20 parcels covering every status, plus settlements and rider payouts spread over the last three weeks. The Demo Reset workflow calls it nightly. The reset refuses to run if it finds accounts the demo data did not create.The demo data is a committed snapshot (src/features/demo/data/snapshot.json). bun run demo:snapshot builds it by running the seed through the app's own data layer against the local test database, then saving the rows. The reset bulk-loads that file in one transaction and shifts every date so the newest records land on today. That takes a few dozen queries instead of thousands, so it stays fast when the database is in another region. Regenerate the snapshot after schema or seed changes.
Run the same reset from a shell with bun run db:reset:demo (add --force the first time on a database that has other accounts).
Requires Bun.
bun install
cp .env.example .env.development
# fill DATABASE_URL, BETTER_AUTH_*, Supabase, and R2 values
bun run db:migrate
bun run db:seed:super-admin
bun run dev
Quality checks:
bun run lint
bun run format:check
bun run typecheck
bun run test # unit + component
bun run test:integration
bun run test:e2e # Playwright against next build + next start
bun run test:all
See docs/testing.md for database safety rules, Playwright setup, and money-loop e2e and R2 requirements.
PolyForm Noncommercial 1.0.0. See LICENSE.
The source is available for noncommercial use under the license terms. Commercial use requires separate permission from the copyright holder.