# Ethiopian National Exam Result
A student-facing result-checking gateway for Ethiopian national examinations
(Grade 12 / ESSLCE, university exit exams, NGAT, etc.), built with
**React + Vite**, **Supabase**, and **Vercel serverless functions**.
## Important compliance disclosure (read first)
As of **2026-08-23**, the Educational Assessment and Examinations Service
(EAES) — the government body that publishes national exam results — provides:
- **No official public API**
- **No authorized third-party integration**
- **No documented public result endpoint**
Its official portals (`result.eaes.et`, `result.neaea.gov.et`,
`result.ethernet.edu.et`) are protected by Cloudflare, CAPTCHA challenges and
rate limiting. Bypassing any of that would violate their terms of service,
so **this project does not scrape or automate the government website**.
Instead, the app implements the **safe alternative workflow**:
1. The student signs in on *this* website (Supabase auth).
2. On `/exam-result` they press **Check Official Result**.
3. They are redirected to the official EAES portal where they enter their
admission number and first name directly.
This website **never collects, transmits, or stores the government portal
password**. If EAES ever grants an official API in writing, set the backend
environment variables below and `/api/check-result` becomes a secure
server-side proxy for it — no frontend changes required.
## Environment variables
| Variable | Where | Purpose |
| --- | --- | --- |
| `VITE_SUPABASE_URL` | Frontend (.env) | Your Supabase project URL. Safe to expose; data is guarded by RLS. |
| `VITE_SUPABASE_ANON_KEY` | Frontend (.env) | Supabase public anon key. Safe to expose; RLS restricts access. |
| `GOVERNMENT_API_URL` | Vercel only (no `VITE_`) | Endpoint of an officially authorized government API. Leave empty = automatic retrieval stays disabled. |
| `GOVERNMENT_API_KEY` | Vercel only (no `VITE_`) | Secret key for the above. Never exposed to the browser. | …