Backend Challenge Spring 2024
Blueprint Spring 2024 Backend Challenge
This challenge is an opportunity for you to showcase your skills, creativity, and understanding of backend technologies. This challenge was designed to simulate real-world problems that we had to solve in our previous NPO projects.
Context and Challenge Overview
Backend systems are the backbone of any web application. As a backend developer, your task is to ensure that the server, application, and database communicate with each other safely and efficiently. The core of a successful backend is its ability to perform CRUD (Create, Read, Update, Delete) operations effectively, as these operations are fundamental to interacting with data stored in databases.
Challenge Details
Your task is to develop a CRUD application that adheres to the following specifications and requirements:
Application Overview
CRUD Operations
Volunteers Table
123e4567-e89b-12d3-a456-426614174000
first_name
VARCHAR
Volunteer's first name.
John
last_name
VARCHAR
Volunteer's last name.
Doe
email
VARCHAR
Volunteer's email address.
john.doe@example.com
phone_number
VARCHAR
Volunteer's phone number.
+1234567890
date_of_birth
DATE
Volunteer's date of birth.
1990-01-01
address
VARCHAR
Volunteer's address.
123 Main St, Anytown, AS
skills
VARCHAR / ARRAY
List of volunteer's skills.
["First Aid", "Counseling"]
availability
JSON / VARCHAR
Volunteer's availability (could be structured as JSON).
{"Monday": ["AM"], "Saturday": ["PM"]}
date_joined
DATE
Date when the volunteer joined.
2024-03-21
background_check
BOOLEAN
Indicates if a background check has been completed.
true / false
Volunteers
List Volunteers
/api/volunteers
Create a New Volunteer
/api/volunteers
Get Volunteer Details
/api/volunteers/{volunteerId}
Update Volunteer Information
/api/volunteers/{volunteerId}
Delete a Volunteer
/api/volunteers/{volunteerId}
Volunteer Skills (Optional)
List Skills for a Volunteer
/api/volunteers/{volunteerId}/skills
Add Skills to a Volunteer
/api/volunteers/{volunteerId}/skills
Remove a Skill from a Volunteer
/api/volunteers/{volunteerId}/skills/{skillId}
Event Participation (Optional)
List Events a Volunteer Participated In
/api/volunteers/{volunteerId}/events
Add Volunteer Participation to an Event
/api/events/{eventId}/volunteers/{volunteerId}
Remove Volunteer Participation from an Event
/api/events/{eventId}/volunteers/{volunteerId}