Prerequisites
Before you begin, make sure you have the following installed:- Node.js (v18 or later)
- pnpm (v10.15.1 or later)
- Git for cloning the repository
Installation
Install dependencies
Install all project dependencies using pnpm:This will install all required packages including:
- React 19 with TypeScript
- TanStack Start for routing
- Valibot for schema validation
- Tailwind CSS for styling
Start the development server
Run the development server:The application will be available at
http://localhost:3000Available Scripts
The project includes several npm scripts for development and maintenance:Project Structure
Understanding the project structure will help you navigate the codebase:Development Workflow
The application automatically discovers all company JSON files in
src/data/companies/ at build time. When you add a new company JSON file, it will automatically be available as a route without needing to manually import it.Making Changes
- Edit company data: Modify JSON files in
src/data/companies/ - Update components: Edit React components in
src/components/ - Add new routes: Create new files in
src/app/ - Validate changes: Run
pnpm validateto check your changes - Test locally: Use
pnpm devto test your changes
Hot Reload
The development server supports hot module replacement (HMR). Changes to most files will be reflected immediately without needing to refresh the browser.Tech Stack
Who To Bother is built with modern web technologies:- Frontend: React 19 with TypeScript
- Routing: TanStack Start
- Styling: Tailwind CSS v4
- Validation: Valibot for runtime validation
- Build Tool: Vite (with Rolldown)
- Deployment: Cloudflare Pages
- Package Manager: pnpm
Troubleshooting
Port 3000 is already in use
Port 3000 is already in use
If port 3000 is already in use, you can specify a different port:
pnpm install fails
pnpm install fails
Make sure you’re using the correct version of pnpm (10.15.1+):
Build fails with TypeScript errors
Build fails with TypeScript errors
Run the TypeScript compiler to see detailed errors:Fix any type errors before building.
Next Steps
Add a Company
Learn how to add new company data to the directory
Schema Validation
Understand how Valibot validates company data
Add Logos
Learn how to add company logos to the UI
Contributing
Read the full contributing guide