Official website for PatternMinds, a South African education and technology initiative focused on mathematics, coding, AI and practical digital skills.
# PatternMinds website
Production-ready static website for PatternMinds, a South African education and technology initiative focused on mathematics, coding, artificial intelligence, Python, data, financial literacy and practical problem solving.
## Screenshots
## Features
- Responsive multi-page App Router website
- Central content and configuration in `src/content/site.ts`
- Accessible mobile navigation, skip link, keyboard interactions and focus styles
- Programme, tutoring, bootcamp, impact, partnership and tutor recruitment content
- Configurable applications and external contact form
- Safe email fallback when forms are not connected
- Page metadata, sitemap, robots file and organisation structured data
- Static export configured for project or root GitHub Pages repositories
- Vitest and React Testing Library coverage for important interactions
- GitHub Actions deployment workflow
## Technology
Next.js 16, React 19, TypeScript, Tailwind CSS 4, Lucide React, ESLint, Prettier, Vitest and React Testing Library.
## Directory structure
```text
.github/workflows/ GitHub Pages deployment
public/brand/ Temporary replaceable brand assets
public/images/ Original site and social graphics
src/app/ App Router pages and metadata files
src/components/ Reusable layout, content and form components
src/content/site.ts Central editable organisation content
src/tests/ Component, interaction and fallback tests
```
## Install and run
```bash
npm install
npm run dev
```
Open `
localhost`.
## Quality checks
```bash
npm run lint
npm run test
npm run format:check
npm run build
```
The static production site is exported to `out/`.
## Environment configuration
Copy `.env.example` to `.env.local` for local use. Do not commit `.env.local`.
The site builds without environment variables. Unconfigured forms use an email fallback. Replace the placeholder contact email and WhatsApp number before launch.
## Editing …