- Update getUserProfile to accept both database ID and Clerk ID - Update getUserReports to handle Clerk IDs - Update getUserEvents to handle Clerk IDs - Add getUserActivity endpoint to return timeline of user actions - Add activity route GET /api/users/:id/activity - Fix TypeScript errors with const assertions This fixes 404 errors when frontend uses Clerk IDs to fetch user data
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.