Concept site about paying for solar energy with stablecoins and minting voluntary carbon credits in northern Nigeria.
# SolarVillage Web
SolarVillage web apps live in this pnpm workspace.
## Apps
| App | Path | Purpose |
| --- | --- | --- |
| `@solar-village/landing-page` | `apps/landing-page` | Public landing page for . |
Add future Vite apps as siblings under `apps/`.
## Local Setup
Use pnpm for local work.
```sh
pnpm install
pnpm dev
```
The root `pnpm dev` script currently starts the landing page app. The Vite dev server is configured for HTTP on port `8080`.
## Scripts
Root scripts delegate to `@solar-village/landing-page`:
```sh
pnpm dev # start the landing page dev server
pnpm test # run landing page Vitest tests
pnpm lint # run landing page ESLint
pnpm build # build landing page production assets
pnpm preview # preview the landing page production build
```
App-specific aliases are also available, such as `pnpm dev:landing-page`.
## Environment
Landing page env files live with the app in `apps/landing-page/`. Create `apps/landing-page/.env.local` from `apps/landing-page/.env.example` for local development.
| Variable | Required | Runtime | Purpose |
| --- | --- | --- | --- |
| `VITE_SUPABASE_URL` | Yes | Browser | Supabase project URL used by public signup forms. |
| `VITE_SUPABASE_ANON_KEY` | Yes | Browser | Supabase anon key used by public signup forms. |
| `VITE_SENTRY_DSN` | No | Browser | Enables Sentry monitoring when present. |
| `OG_IMAGE_PATH` | No | API handler | Overrides the image served by the landing page OG image endpoint; defaults to `apps/landing-page/src/assets/solar-village-preview.png`. |
Do not place service-role keys or privileged Supabase credentials in browser-visible `VITE_*` variables.
## Supabase Contract
Browser-side Supabase writes are intentional for this landing page. The public forms use the anon key and should be protected by database constraints, RLS/write policies, and operational spam controls rather than by privileged browser credentials.
Current browser-written tables:
| Feature | Source | …