Files
points-of-interest/README.md
T
2025-10-10 15:29:39 +02:00

53 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Points of Interest
This repository hosts a proof-of-concept "points of interest" application composed of a Symfony API and a React client. Users can submit nearby signals and explore aggregated heatmaps that visualise recent activity.
## Project structure
- `server/` Symfony 7 API that stores and broadcasts signal submissions.
- `client/` React (Vite) front-end that renders the map interface and live statistics.
## Prerequisites
- Node.js 20+
- npm 10+
- PHP 8.2+
- Composer 2+
- A running database supported by Doctrine (SQLite is used by default for local development)
## Running the API server
```bash
cd server
composer install
# Create the database schema (SQLite by default)
php bin/console doctrine:database:create --if-not-exists
php bin/console doctrine:migrations:migrate --no-interaction
# Start the Symfony development server
symfony server:start
```
The API listens on `http://127.0.0.1:8000` by default. Adjust the Mercure hub and other environment variables in `.env` as needed.
## Running the client
```bash
cd client
npm install
npm run dev
```
The client starts on `http://localhost:5173`. Set the `VITE_API_BASE`, `VITE_MERCURE_HUB`, and `VITE_MERCURE_TOPIC` environment variables (see `client/.env.example` if available) to point to the API and Mercure hub instances.
## Testing
- API: `cd server && ./vendor/bin/phpunit`
- Client: `cd client && npm run build` (ensures the TypeScript build succeeds)
## Additional notes
- The API uses Mercure for real-time updates. Ensure a Mercure hub is running and reachable by the client when testing streaming features.
- Review the individual `README.md` files inside `client/` and `server/` for more detailed configuration guidance.