Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
MyFundAction을 통해 가자 어린이를 후원하고 검증된 업데이트와 투명한 지원 전달을 현지 파트너와 함께 제공합니다
Sponsor a child in Gaza through MyFundAction. Verified updates, transparent support delivery, delivered in partnership with our field partner.
비즈니스TypeScript · CSSGitHub @ameera-gif온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A child sponsorship platform for MyFundAction's Gaza programme: a public sponsorship website plus a secure
three-role portal (Sponsor, Ufuk field team, MyFundAction Project Coordinator) and an Admin area, built around the
core workflow:
See ARCHITECTURE.md for the full architecture proposal (sitemaps, role-permission matrix,
database design, privacy/safeguarding controls, and the scoping decisions made for this build).
All data in this project is fictional demo data — no real child, sponsor, or field-partner information is used
anywhere.README 전문 보기 ↗A child sponsorship platform for MyFundAction's Gaza programme: a public sponsorship website plus a secure three-role portal (Sponsor, Ufuk field team, MyFundAction Project Coordinator) and an Admin area, built around the core workflow:
Ufuk updates → Ufuk submits → MyFundAction reviews → MyFundAction approves/publishes → Sponsor receives update
See ARCHITECTURE.md for the full architecture proposal (sitemaps, role-permission matrix, database design, privacy/safeguarding controls, and the scoping decisions made for this build).
All data in this project is fictional demo data — no real child, sponsor, or field-partner information is used anywhere.
src/lib/i18n.env.example to .env and fill in DATABASE_URL (and generate a real AUTH_SECRET — see the comment
in the file).npm install # also runs `prisma generate` via postinstall
npx prisma migrate deploy # creates all tables from prisma/migrations
npm run db:seed # seeds fictional demo data
npm run dev
Open http://localhost:3000.
To reset the database and reseed from scratch:
npm run db:reset
DATABASE_URL (a Postgres connection string — Neon
or Vercel Postgres both work), AUTH_SECRET (a real generated secret, not the dev placeholder), and
NEXTAUTH_URL (your deployed URL, e.g. https://your-project.vercel.app).prisma migrate deploy && next build) applies all migrations to your database
automatically on every deploy — no manual migration step needed once the env vars above are set.DATABASE_URL="<your production connection string>" npm run db:seed
(PowerShell: $env:DATABASE_URL="<connection string>"; npm run db:seed)"Redeploy" redeploys that exact commit, not necessarily the latest one. If you click ⋯ → Redeploy from an
older deployment in the list, Vercel rebuilds that deployment's commit — pushing new code afterward does not
retroactively change what it built. If a fix doesn't seem to take effect after redeploying, check the build log's
Cloning ... (Commit: ...) line against git log locally to confirm you're actually redeploying the latest
commit, not an old one. The reliable way to deploy the latest code is a fresh git push to main, which
triggers a new deployment from the current branch tip automatically.
Middleware and the Edge Function size limit. middleware.ts runs on Vercel's Edge Runtime (1MB bundle
limit). Anything it imports — even transitively — counts against that limit. In particular, never let
middleware.ts (directly or via another module it imports) pull in src/auth.ts, since that wires up the
Credentials provider and drags in Prisma Client + bcrypt, which alone exceed 1MB. Middleware should only ever
import from src/auth.config.ts (the provider-free session/JWT config) and src/lib/role-routes.ts — see the
comments in those files.
Uploaded files (Ufuk's report photos, distribution evidence, media) currently save to local disk
(src/lib/storage.ts), which — like SQLite — does not persist on Vercel's serverless functions. Uploads will
appear to succeed but won't be retrievable afterward. This wasn't addressed in this pass since it wasn't blocking
the reported error; swapping in real object storage (Vercel Blob, S3, etc.) is a contained change to that one
file whenever you're ready for it.
All demo accounts share the password Passw0rd!.
| Role | |
|---|---|
| Sponsor | [email protected] |
| Sponsor | [email protected] |
| Ufuk field team | [email protected] |
| MyFundAction PC | [email protected] |
| MyFundAction PC | [email protected] |
| Admin | [email protected] |
Sign in at /login — each role lands on its own portal home automatically.
src/app/(public)/ Public marketing + sponsorship site (home, directory, child profile, how-it-works, etc.)
src/app/portal/ Sponsor portal
src/app/implementer/ Ufuk field portal
src/app/management/ MyFundAction Project Coordinator portal (incl. the Review Centre)
src/app/admin/ Admin (users/roles, programme settings)
src/app/api/ NextAuth route, authenticated file serving, upload endpoint
src/lib/services/ Domain logic — sponsorship lifecycle, report workflow, distribution workflow,
media approval, meetings, messages, notifications, audit log
src/lib/mappers/child.ts Privacy boundary — the only sanctioned way to turn a Child row into public/sponsor-facing data
src/lib/rbac.ts Server-side role guards (requireRole/requireSession) used by every action & route handler
src/middleware.ts Route-group gate (redirects unauthenticated/wrong-role users)
src/components/ui/ Shared design-system primitives
prisma/schema.prisma Full data model
prisma/seed.ts Fictional demo data generator
PUBLISHED reports.src/lib/services/audit.ts).See ARCHITECTURE.md §17 for the full reasoning. In short: SQLite instead of Postgres (no local DB service available), a stub payment confirmation instead of a real gateway, a manual meeting-link field instead of live Google Meet/Zoom API integration, and partial (not full-page) Malay/Arabic translation coverage. All of these are called out as Phase 2 items in the original brief.