Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기oGT live applicant dashboard built for AIESEC in India.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A public, India-wide pool of every applied outgoing Global Talent application (GTa and GTe) from AIESEC in India, built for AIESEC members (EP managers and the oGT team) to find candidates and their CVs quickly.
Data comes from EXPA, AIESEC's global platform. A sync job, started every 15 minutes by Supabase Cron, copies it into a database, and the website reads from that database, so pages load fast and EXPA is never queried by visitors.
Live: https://aiesec-india-ogt.vercel.app/
Status (October 2026): the sync job, database and website are built, deployed and tested end to end (about 930 applications across 24 LCs, refreshed every 15 minutes).
| Rule | Detail |
|---|---|
| Status | "Applied" in EXPA (open in the API) |
| Programmes | GTa (Global Talent) and GTe (Global Teacher) |
| Applicant's home | AIESEC in India |
| Closed LCs | Hidden |
| Ended slots | Hidden from the day after the slot ends (India time) |
EXPA (read-only)
│ GitHub Actions, started every 15 minutes by Supabase Cron
▼
Sync job ── pool rules ── safety brake
│ secret key (write)
▼
Supabase (Postgres, Row Level Security)
│ publishable key (read-only), cached 5 minutes
▼
Next.js website on Vercel ──► visitors' browsers (search, filter, stats, CSV)
scripts/sync.ts): fetches all candidate applications from EXPA, cleans each
record, applies the pool rules, and checks a safety brake before writing anything.applications table (one row per card) and a sync_runs log.
Row Level Security lets the website's key read only; only the sync job's secret key can
write.| Part | Technology |
|---|---|
| Website | Next.js 16 (App Router), React 19, TypeScript |
| Styling | Plain CSS; Lato (text) and Playfair Display (headings) |
| Database | Supabase (Postgres), free plan, Mumbai region |
| Data source | EXPA GraphQL API (gis-api.aiesec.org), read-only |
| Scheduled sync | GitHub Actions, started by Supabase Cron (pg_cron + pg_net) |
| Hosting | Vercel |
| Tests | Vitest |
| Runtime | Node.js 22.12 or newer |
.github/workflows/sync.yml The sync job (hourly backup schedule + manual run button)
docs/
design/ui-mockup.html Approved UI design (sample data; open in a browser)
sops/sync.md Rules and edge cases of the sync job
sops/pool-page.md Rules and edge cases of the website page
scripts/
sync.ts Sync job entry point (npm run sync)
db-check.mjs Checks the database connection and access rules
expa-probe.mjs Read-only EXPA exploration script
src/
app/ Next.js page, layout, error page, styles
components/ Page parts: navbar, statistics, cards
lib/
expa/ Read-only EXPA client, query and record mapper
pool/ Pool rules, search, statistics, CSV export, formatting
sync/ One sync run, safety brake, delete list
db/ Table types, the website's cached reader, the sync job's writer
supabase/schema.sql Tables, Row Level Security and permissions
supabase/scheduler.sql Supabase Cron job that starts the sync every 15 minutes
CLAUDE.md Project constitution: rules, schema, decisions
git clone https://github.com/ElementZ76/aiesec-in-india-ogt-dashboard.git
cd aiesec-in-india-ogt-dashboard
npm install
Copy .env.example to .env.local and fill in the values. .env.local is git-ignored and must
never be committed.
| Variable | Used by | Where to find it |
|---|---|---|
EXPA_ACCESS_TOKEN | Sync job only | Your EXPA access token |
SUPABASE_URL | Sync job and website | Supabase → Project Settings → Data API. Use the bare https://<id>.supabase.co, without /rest/v1/ |
SUPABASE_PUBLISHABLE_KEY | Website (read-only) | Supabase → Project Settings → API Keys (sb_publishable_…) |
SUPABASE_SECRET_KEY | Sync job only (can write) | Supabase → Project Settings → API Keys (sb_secret_…) |
None of these may ever be given a NEXT_PUBLIC_ prefix: that would send them to the browser.
In the Supabase dashboard, open SQL Editor, paste the contents of
supabase/schema.sql and run it. Then verify the setup:
node --env-file=.env.local scripts/db-check.mjs
All 7 checks should pass.
npm run sync:dry # fetch and check, write nothing
npm run sync # first real sync
npm run dev # website at http://localhost:3000
| Command | What it does |
|---|---|
npm run dev | Start the website locally |
npm run build | Production build (what Vercel runs) |
npm test | Run all automated tests |
npm run typecheck | Type-check all TypeScript |
npm run lint | Lint the code |
npm run sync | Real sync run |
npm run sync:dry | Fetch and check everything, write nothing; prints counts only. Use this, not npm run sync -- --dry-run: PowerShell drops the --, which turns that into a real run |
npm run sync -- --force | Real run that skips the "less than half" brake (only after a person has checked that the drop is real) |
Each run (about 1 minute on GitHub):
Fetch every applied GTa/GTe application of AIESEC in India from EXPA, 5 pages at a time, with timeouts and retries. Only read queries are ever sent.
Clean each record:
http(s) linksApply the pool rules (closed LCs and ended slots are dropped).
Safety brake. Nothing is written or deleted if:
The site then keeps showing the last good data.
Write: add or update the kept applications, then delete those no longer in the pool.
Log the run in sync_runs. A blocked or failed run turns the GitHub run red and emails
the repository owner.
Running it manually: GitHub → Actions → Sync EXPA to Supabase → Run workflow,
then pick normal, dry-run or force.
Required repository secrets: EXPA_ACCESS_TOKEN, SUPABASE_URL, SUPABASE_SECRET_KEY
(Settings → Secrets and variables → Actions).
Full rules and edge cases: docs/sops/sync.md.
npm test # unit tests (Vitest)
npm run typecheck
npm run lint
npm run build
The tests cover:
.github/workflows/sync.yml. Both actions are pinned to exact
commits, and runs never overlap. A monthly keep-alive step stops GitHub from pausing the
schedule after 60 days without repository activity.SUPABASE_URL and SUPABASE_PUBLISHABLE_KEY in the
Vercel project's environment variables. The EXPA token and the Supabase secret key are
not needed on Vercel and must not be added there..env.local| File | Contents |
|---|---|
CLAUDE.md | Project constitution: scope, data schema, rules (invariants), UI spec, change log |
task_plan.md | Phase checklist |
findings.md | Research, decisions and verified EXPA facts |
progress.md | Dated work log, including test results and errors |
docs/sops/ | Standard operating procedures |
Built by Praveen for AIESEC in India.