- Add GET /api/users/:id for profile retrieval with stats - Add PATCH /api/users/:id for profile updates - Add GET /api/users/:id/reports to fetch user's reports - Add GET /api/users/:id/events to fetch user's events (registered & organized) - Add PATCH /api/users/:id/preferences for notification settings - Add POST /api/users/:id/calculate-impact for impact score calculation - Create userService with all business logic - Create userController with request handling - Create userRoutes and register in main server - Update frontend userService with new endpoints - Add comprehensive documentation in USER_PROFILE_ENDPOINTS.md - Add test script for manual endpoint testing Requirements satisfied: 6.3, 6.4, 6.5, 10.4
Beach Litter Mapping API
Backend API server for the Beach Litter Mapping Platform.
Setup
- Install dependencies:
cd server
npm install
- Configure environment variables:
cp .env.example .env
# Edit .env with your configuration
- Set up the database:
npm run prisma:generate
npm run prisma:migrate
- Start the development server:
npm run dev
The API will be available at http://localhost:3000
API Endpoints
Reports
POST /api/reports/upload- Upload a photo (requires auth)POST /api/reports- Create a new report (requires auth)GET /api/reports- Get all reports (with optional filters)GET /api/reports/:id- Get a single reportDELETE /api/reports/:id- Delete a report (requires auth, owner only)
Health Check
GET /health- Server health status
Environment Variables
See .env.example for required environment variables.
Database
The API uses MySQL 8.0+ with Prisma ORM. Connection details are configured in the .env file.
Authentication
Authentication is handled by Clerk. Protected endpoints require a Bearer token in the Authorization header.