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
- Purpose: Create a backend service that Creates, Reads, Updates, and Deletes volunteers from a database.
- Technology Stack: You are free to choose the technology stack (programming languages, database systems, frameworks) that you are most comfortable with.
CRUD Operations
- Create: Implement functionality to add new records to your database. For example, adding a new volunteer.
- Read: Develop methods to retrieve and display records from the database. This could include listing all volunteers or searching for a specific user.
- Update: Allow for modifications to existing records, such as updating a volunteer's contact information.
- Delete: Provide a way to remove records from the database safely.
Volunteers Table
Field Name | Data Type | Description | Example |
---|---|---|---|
volunteer_id | UUID / INT (PK) | Unique identifier for each volunteer. | 123e4567-e89b-12d3-a456-426614174000 |
first_name | VARCHAR | Volunteer's first name. | John |
last_name | VARCHAR | Volunteer's last name. | Doe |
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
- GET
/api/volunteers
- Retrieves a list of all volunteers, with options for pagination, filtering, and sorting.
- GET
-
Create a New Volunteer
- POST
/api/volunteers
- Creates a new volunteer record.
- POST
-
Get Volunteer Details
- GET
/api/volunteers/{volunteerId}
- Retrieves detailed information about a specific volunteer.
- GET
-
Update Volunteer Information
- PUT
/api/volunteers/{volunteerId}
- Updates an existing volunteer's information.
- PUT
-
Delete a Volunteer
- DELETE
/api/volunteers/{volunteerId}
- Deletes a specific volunteer's record.
- DELETE
Volunteer Skills (Optional)
-
List Skills for a Volunteer
- GET
/api/volunteers/{volunteerId}/skills
- Lists the skills associated with a specific volunteer.
- GET
-
Add Skills to a Volunteer
- POST
/api/volunteers/{volunteerId}/skills
- Adds new skills to a volunteer.
- POST
-
Remove a Skill from a Volunteer
- DELETE
/api/volunteers/{volunteerId}/skills/{skillId}
- Removes a specific skill from a volunteer.
- DELETE
Event Participation (Optional)
-
List Events a Volunteer Participated In
- GET
/api/volunteers/{volunteerId}/events
- Lists events that a specific volunteer has participated in.
- GET
-
Add Volunteer Participation to an Event
- POST
/api/events/{eventId}/volunteers/{volunteerId}
- Records a volunteer's participation in a specific event.
- POST
-
Remove Volunteer Participation from an Event
- DELETE
/api/events/{eventId}/volunteers/{volunteerId}
- Removes a record of a volunteer's participation in a specific event.
- DELETE