Skip to main content

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 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

          GET /api/volunteers
            Retrieves a list of all volunteers, with options for pagination, filtering, and sorting.

            Create a New Volunteer

              POST /api/volunteers
                Creates a new volunteer record.

                Get Volunteer Details

                  GET /api/volunteers/{volunteerId}
                    Retrieves detailed information about a specific volunteer.

                    Update Volunteer Information

                      PUT /api/volunteers/{volunteerId}
                        Updates an existing volunteer's information.

                        Delete a Volunteer

                          DELETE /api/volunteers/{volunteerId}
                            Deletes a specific volunteer's record.

                            Volunteer Skills (Optional)

                              List Skills for a Volunteer

                                GET /api/volunteers/{volunteerId}/skills
                                  Lists the skills associated with a specific volunteer.

                                  Add Skills to a Volunteer

                                    POST /api/volunteers/{volunteerId}/skills
                                      Adds new skills to a volunteer.

                                      Remove a Skill from a Volunteer

                                        DELETE /api/volunteers/{volunteerId}/skills/{skillId}
                                          Removes a specific skill from a volunteer.

                                          Event Participation (Optional)

                                            List Events a Volunteer Participated In

                                              GET /api/volunteers/{volunteerId}/events
                                                Lists events that a specific volunteer has participated in.

                                                Add Volunteer Participation to an Event

                                                  POST /api/events/{eventId}/volunteers/{volunteerId}
                                                    Records a volunteer's participation in a specific event.

                                                    Remove Volunteer Participation from an Event

                                                      DELETE /api/events/{eventId}/volunteers/{volunteerId}
                                                        Removes a record of a volunteer's participation in a specific event.