Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
Duevy는 나이지리아 대학의 강좌 대표와 학과가 은행 이체로 회비를 징수하고, 납부자를 추적해 학생에게 영수증을 제공합니다
Duevy helps course reps and departments in Nigerian universities collect dues and levies by bank transfer, track who has paid, and give every student a receipt.
금융TypeScript · CSSGitHub @OlaiwonAbdullahi온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Web app for Duevy — a dues collection platform for Nigerian university departments/classes. Lets department reps create dues, collect payments, manage payouts, run polls, and handle disputes; lets students/members join their department space and pay dues. Includes an admin dashboard and an AI chat assistant ("Duey").
Built with Next.js (App Router) and talks to the duevy-backend API.
nigerian-universities (institution data)cd duevy
npm install
Create .env.local in the project root:
NEXT_PUBLIC_API_BASE_URL=http://localhost:3000/v1
NEXT_PUBLIC_LOGO_DEV_TOKEN=your_logo_dev_token
| Variable | Required | Notes |
|---|---|---|
NEXT_PUBLIC_API_BASE_URL | Yes | Base URL of the backend API, including the /v1 prefix. Point this at your local backend (http://localhost:3000/v1) or a deployed one. |
NEXT_PUBLIC_LOGO_DEV_TOKEN | No | Public token from logo.dev — a fallback for bank logos we don't host in public/banks/ (mostly smaller MFBs). Without it, or when it has no logo either, a generated DiceBear pattern seeded with the bank name is shown. See app/(dashboards)/dashboard/payout/_components/BankLogo.tsx. |
Bank logos in public/banks/ are generated from nigerianbanks.xyz and Blockroll open-assets (docs/banks.json), both MIT. Refresh them with npm run banks:logos (add -- --verbose to see what was skipped).
Both are NEXT_PUBLIC_* and get inlined at build time, per Next.js convention.
The backend defaults to port 3000 and its FRONTEND_URL/CORS_ORIGINS config expects this app on port 3001 — since both projects default to 3000, run this one on 3001 explicitly to avoid a clash and keep CORS/cookies working:
npm run dev -- -p 3001
The app will be at http://localhost:3001. (If you use a different port, update FRONTEND_URL and CORS_ORIGINS in the backend's .env to match.)
| Command | Description |
|---|---|
npm run dev | Start the Next.js dev server |
npm run build | Production build |
npm start | Serve the production build (run build first) |
npm run lint | Lint with ESLint |
app/
├── (auth)/ # login, signup, verify-email, forgot/reset password
├── (dashboards)/
│ ├── dashboard/ # member/rep dashboard — dues, wallet, payouts, polls, assistant, disputes
│ └── admin/ # admin dashboard
├── api/ # Next.js route handlers (e.g. wallet callback)
├── vote/ # public poll voting pages
├── privacy/, terms/ # static pages
└── layout.tsx, page.tsx # root layout + landing page
components/ # shared UI components (shadcn-based)
lib/
├── api/ # typed API client — one file per backend resource
├── auth/ # auth context/provider
└── hooks/ # shared React hooks
docs/
├── API_SPECIFICATION.md # full backend API reference
├── FRONTEND_API_GUIDE.md # how this app talks to the backend
└── ASSISTANT_API_GUIDE.md # Duey (AI assistant) integration
lib/api/client.ts is the shared HTTP client; every resource in lib/api/ (auth, dues, spaces, payouts, polls, wallet, assistant, etc.) wraps it with typed request/response shapes matching the backend.
This project uses shadcn/ui with the radix-maia style and Hugeicons as the icon set (see components.json). Add new components with:
npx shadcn@latest add <component>
/v1-prefixed routes and relies on cookies for auth (the backend sets JWT cookies) — make sure NEXT_PUBLIC_API_BASE_URL and the backend's CORS_ORIGINS/FRONTEND_URL are consistent so cookies survive cross-origin requests in dev.docs/API_SPECIFICATION.md for the full backend API contract this app is built against.