A free, community-built directory of special, integrated, and inclusive schools for neurodivergent learners across Kenya.
# Elimu Finder π
> A free, community-built directory of special, integrated, and inclusive schools for neurodivergent learners across Kenya.
---
## Stack
| Layer | Tech | Why |
|---|---|---|
| Frontend | Next.js 14 (App Router) | SSR/SSG for SEO, free on Vercel |
| Database | Supabase (PostgreSQL) | Auth + DB + Storage, generous free tier |
| Maps | Leaflet + OpenStreetMap | Fully free, no API key needed |
| Search | Supabase full-text search | Built-in `tsvector`, no Algolia needed |
| Email | Resend | 3,000 emails/month free |
| Hosting | Vercel | Free tier, auto-deploys from GitHub |
**Monthly cost at MVP: KES 0**
---
## Getting started
### 1. Clone & install
```bash
git clone
github.com
cd elimu-finder
npm install
```
### 2. Set up Supabase
1. Create a free project at supabase.com
2. Go to **SQL Editor** and run the full contents of `supabase/migrations/001_initial_schema.sql`
3. Go to **Settings β API** and copy your project URL and anon key
### 3. Configure environment
```bash
cp .env.local.example .env.local
# Edit .env.local with your Supabase credentials
```
### 4. Run locally
```bash
npm run dev
# Open
localhost
```
### 5. Create your admin user
1. Go to Supabase β Authentication β Users β Invite user (your email)
2. Accept the invite, set a password
3. In Supabase SQL Editor, run:
```sql
update public.profiles
set role = 'admin'
where email = 'your@email.com';
```
4. Log in at `
localhost`
---
## Project structure
```
src/
βββ app/
β βββ (public)/ # User-facing pages
β β βββ page.tsx # Homepage
β β βββ search/ # Search + filter
β β βββ schools/[slug] # School profile
β β βββ submit/ # Add a school (4-step form)
β βββ (admin)/ # Moderation panel (auth-protected)
β β βββ dashboard/ # Stats + pending queue
β β βββ login/ # Admin login
β βββ api/
β βββ submit/ # POST new school β¦