Marketing website for Precifarm - distributed solar energy in Kenya
# precifarm-web
Marketing website for Precifarm — distributed solar energy in Kenya.
Three honestly-engineered packages, one Neura Pod platform: Starter (single-room essentials), Family (off-grid 2- to 3-bedroom homes), and Commercial (scalable borehole irrigation, cold storage, clinics, and SME loads). Pricing aligned to Master Brief v0.9.
## Stack
- Next.js 16 (App Router) + React 19, static export (`output: 'export'`)
- TypeScript strict + `noUncheckedIndexedAccess` + `noImplicitOverride`
- Tailwind CSS 4 (CSS-first config in `app/globals.css`, no `tailwind.config.ts`)
- Custom MD/MDX content loader: `gray-matter` + Zod (no Contentlayer)
- Lucide icons (`lucide-react`)
- Hosted on Hostinger (static export served via shared hosting); DNS managed at registrar
- Plausible analytics, Formspree forms, Cloudflare Turnstile
- pnpm, Node 20 LTS
## Setup
```bash
pnpm install
cp .env.example .env.local # fill in values
pnpm dev #
localhost
```
## Scripts
| Command | Description |
| ------------------- | ------------------------------ |
| `pnpm dev` | Dev server with HMR |
| `pnpm build` | Static export to `./out` |
| `pnpm export:serve` | Serve `./out` locally on :4173 |
| `pnpm typecheck` | `tsc --noEmit` |
| `pnpm lint` | ESLint + Prettier check |
| `pnpm lint:fix` | Auto-fix |
| `pnpm test` | Vitest unit tests |
| `pnpm test:e2e` | Playwright e2e + axe |
| `pnpm lhci` | Lighthouse CI against `./out` |
| `pnpm ship` | `pnpm build` then FTPS-mirror `./out` to Hostinger via `scripts/ftp-deploy.py`. Reads credentials from gitignored `.env.ftp.local`. |
## Repository layout
```
content/
products/{starter,family,business}.md # product specs, pricing, FAQ
site/{home,about,careers}.md # page-level content
blog/ .mdx # blog po …