Automates getting coffee and snacks for tired devs
![feed-a-dev logo](https://camo.githubusercontent.com/913bf30a36e4141021b1053ba97b1ab7565aedc99abb016939ba592a997c330c/68747470733a2f2f696d6775722e636f6d2f7473496f5237772e706e67)
Method |
Endpoint |
Description |
Auth Required |
Request Body |
POST |
/register |
Register new user (developer) |
No |
{ "username": string, "password": string, "role": "developer" } |
POST |
/register |
Register new user (project manager) |
No |
{ "username": string, "password": string, "role": "project_manager" } |
POST |
/login |
Authenticate user and get JWT |
No |
{ "username": string, "password": string } |
Method |
Endpoint |
Description |
Auth Required |
Request Body |
POST |
/snack |
Create new snack |
Yes |
{ "name": string, "category": string, "price": decimal, "image_url": string } |
PATCH |
/snack/{id} |
Update snack (owner/admin) |
Yes |
{ "name"?: string, "category"?: string, "price"?: decimal, "image_url"?: string } |
DELETE |
/snack/{id} |
Delete snack (owner/admin) |
Yes |
None |
GET |
/snacks |
List snacks (filtered by role) |
Yes |
None |
Method |
Endpoint |
Description |
Auth Required |
Request Body |
POST |
/invite-pm |
Developer invites PM |
Yes |
{ "project_manager_id": integer } |
PATCH |
/respond-to-invite/{id} |
PM accepts/rejects invite |
Yes |
{ "status": "accepted" | "rejected" } |
GET |
/my-developers |
PM lists accepted developers |
Yes |
None |
Use Bearer token in Authorization header:
Authorization: Bearer <jwt_token>
{
id: number
username: string
role: "developer" | "project_manager" | "admin"
created_at: string
updated_at: string
}
{
id: number
name: string
category: string
price: decimal
image_url: string
created_at: string
updated_at: string
user_id: number
}
{
id: number
developer_id: number
project_manager_id: number
status: "pending" | "accepted" | "rejected"
created_at: string
updated_at: string
}