This is the public-facing platform for the Street Support Network. It helps people find local services, share information, and collaborate across the homelessness sector.
- Next.js 15
- React 18
- TypeScript
- Tailwind CSS 4
- Jest + React Testing Library
- Playwright for end-to-end tests
- PowerShell scripts (for Windows development)
- JSON-based mock data (local only; to be replaced by full CMS/API integration)
Unit and integration tests use Jest and React Testing Library.
Run all unit tests:
npm run testRun end-to-end tests with Playwright:
npm run test:e2eTesting Highlights:
- Babel is configured via
babel.config.json - Module aliases (
@/components/...) usemoduleNameMapperinjest.config.cjs - Geolocation and other browser APIs are stubbed or guarded
- Mocks live under
tests/__mocks__/
✅ All tests must pass before merging into staging or main.
The admin CMS is a separate repo:
➡️ streetsupport-platform-admin
It manages all partner organisation data and connects to this public platform via API.
Run the project locally with mock JSON data:
npm install
npm run devKey local data sources:
src/data/service-providers.json— mock service provider datasrc/data/locations.json— fetched location metadatasrc/data/service-categories.json— fetched category and subcategory metadatasrc/data/client-groups.json— fetched client group metadata
src/app/— Next.js App Router structure (pages, dynamic routes, API endpoints)src/components/— Reusable UI components and layout partialssrc/contexts/— React context providers (e.g.LocationContext,FilterContext)src/content/— Location-specific or static page content (e.g. prebuilt templates)src/data/— JSON data for mock services, locations, and categoriessrc/types/— Shared TypeScript typessrc/utils/— Utility functions (e.g. DB helpers, formatters)tests/__tests__/— Unit tests for components, utils, and contextstests/e2e/— End-to-end tests (Playwright specs)tests/__mocks__/— Mocks for third-party modules and stubsconfig/— Config files (Jest, ESLint, Playwright)public/— Static assets (images, icons)scripts/— Custom build or data fetch scripts
- Each location page (e.g.
/manchester) is powered by a single dynamic App Router route using[slug]/page.tsx. - The pages share a common template and pull their data from
locations.jsonor future API calls. - Local banners, news and map pins will come from the CMS or the public API.
- We use
generateStaticParamsfor static builds where possible, with aforce-dynamicfallback for maximum reliability.
For deeper context see:
✅ See the Deployment Workflow for full details.
In short:
- Create a new feature branch from
staging - Work and commit in that branch
- PR into
streetsupport/streetsupport-platform-webstaging - Merge once tests pass
- Open a PR from
staging→main - Sync your fork’s
stagingwith upstream
This repo currently uses a few Next.js App Router workarounds for dynamic param type inference and runtime behaviour:
- Dynamic Param Workarounds — Wiki Home
- Runtime Await Workaround
- Param Inference Issue & Workaround
- Dynamic API Params Explained
See Trello card: Linting Suppression and Deferred Resolution Strategy — Link
- 📖 Complete Documentation Hub — Start here for all documentation
- 📋 Documentation Index — Complete file directory and navigation
- 🛠️ Development Guide — Local setup and development workflows
- 🧪 Testing Strategy — Comprehensive testing approach and E2E implementation
- 🚀 Deployment Guide — CI/CD pipeline and deployment procedures
- 🛡️ Security Documentation — Comprehensive security measures and procedures
- 🎨 Design System — UI components and design patterns
- 🎯 Project Planning — Strategic planning and API architecture
- 📖 GitHub Wiki — Workarounds and debugging guides
- 🗂️ Project Drive — Additional project resources
We acknowledge the npm audit warnings for esbuild, path-to-regexp, and undici.
These affect dev only, not production security.
✅ Questions? Open an issue or ask for context before making assumptions.