Skip to main content

Developer Challenge

Developer

F25 Project Technical Challenge

Description

Overview

Web application that encrypts and decrypts payloads while providing searchable logs to past requests

Requirements

GUI

ThisReact challengewebpage with the ability to do the following:


    Enter an encryption key and a payload, call this service's API, log the request, and display the encrypted data

    Enter a decryption key and a payload, call this service's API, log the request, and display the decrypted data

    Paginated view of past requests

    API

    FastAPI Python API that meets the following details:


      POST /api/v1/encrypt

        Accept a JSON object containing { key: str, data: str }

        Respond with { data: str } where data is designedthe resulting encrypted data from signing the data with the public key

        POST /api/v1/decrypt

          Accept a JSON object containing { key: str, data: str } where key is a private key and data is some encrypted data from private key's keypair

          Respond with { data: str } where data is the resulting data from decrypting the payload with the private key

          GET /api/v1/logs

            Paginate logs of requests made to providethis anservice, accurateinclude representationtwo URL parameters: size (log count) and offset (number of logs from the beginning)

            Logs should be of the day-to-dayfollowing challengestype faced{ byid: developersstr, attimestamp: Blueprint.datetime, Weip: aimstr, todata: assessstr your software engineering skills, problem-solving abilities, and how effectively you can contribute to a high-performance software team. Developing software collaboratively presents unique challenges, such as maintaining a consistent codebase and ensuring seamless integration of changes when multiple developers work on similar features. This challenge will evaluate how well you navigate these challenges while adhering to best practices in software development.}

            Modern software applications are typically divided into a frontend and a backend. In this challenge, you will contribute to a project the Tech Team has been actively developing over the past year. Our tech stack consists of:

            • Frontend: React

              ID should be a UUID

            • Backend: Spring

              Note Bootthat +datetime PostgreSQLshould be a UNIX timestamp

            YouThe willresponse of this endpoint should be expected to work within this stack and follow industry best practices for software development.

            Blueprint Admin

            As Blueprint continues to grow, so does our need for efficient resource management. The Blueprint Admin platform aims to provide a comprehensive overviewcollection of the organization's current state. Through this dashboard, the Executive Board (E-board) and Tech Leads will be able to:
            logs

              Create and manage events
              Oversee AWS resources
              Track attendance
              Manage the organization's budget

              Challenge

              Data

              YouPostgreSQL mustshould choosebe oneused ofto store logs. Logs should match the issuesformat listed below and implement a solution.

              Frontend Issues (Repository)

                Issue #38 Issue #35 Issue #34

                Backend Issues (Repository)

                  Issue #41 Issue #44 Issue #42

                  How to Contribute

                  Follow these steps to fork the repository, make changes, and submit a Pull Request (PR).

                  Fork the Repository

                    Navigate to the repository you want to contribute to:
                      Frontend: blueprint_admin Backend: blueprint_admin_backend Click on the "Fork" buttondefined in the top-rightAPI corner.section.

                      Documentation

                      Meaningful documentation should be provided detailing both set up and architecture

                      Containerization

                      This createsshould be containerized with Docker, the project should include a copyDockerfile of& docker-compose.yaml file

                      CI

                      Include a linter workflow for both the repositoryweb and server in your GitHubrepository

                      account.

                      Clone the Forked Repository

                      Conventions

                      AfterLanguage forking,and clonetooling theconventions repository to your local machine:

                      git clone https://github.com/{your-github-username}/blueprint_admin.git

                      or for backend:

                      git clone https://github.com/{your-github-username}/blueprint_admin_backend.git

                      Remember the Tech Team willshould be working on the repos concurrently. Remember to pull from the origin constantly!

                      Set Up the Development Environment

                      Frontend

                        Install dependencies:
                        npm install
                        Start the development server:

                        npm start

                        Backend

                        Run the database using Dockerfollowed

                        docker-compose up --build

                        Compile the service

                        ./gradlew build

                        Run the service

                        ./gradlew bootRun

                        If you have issues with any of the steps mentioned above, visit the troubleshoot section in the README.md

                        Create a New Branch

                        Before making changes, create a new branch:

                        git checkout -b fix-issue-XX

                        Replace XX with the issue number.

                        Implement Your Solution

                          Carefully read the issue description and implement the required feature or fix. Follow the existing code style and conventions. Write tests where applicable.

                          Commit Your Changes

                          After making your changes, commit them:

                          git add .

                          Push your branch to GitHub:

                          git push origin fix-issue-XX

                          Submit a Pull Request

                            Go to the forked repository (Blueprint Admin or Backend). Click "Compare & pull request". Provide a clear PR description:
                              Reference the issue number. Describe your changes. Mention any tests you wrote. Click "Create pull request".

                              Submission Checklist

                                Forked the repository
                                Cloned the repository
                                Set up the development environment
                                Created a new branch
                                Implemented the fix/feature
                                Committed and pushed changes
                                Submitted a pull request by 2/16 11:59 P.M

                                If you have any questions please reach out to mmerlin@stevens.edu or ifarfand@stevens.edu. We also highly recommend attending this Thursday's (2/6) GBM in Babbio 320 at 9:15 P.M where we will cover a lot about pull requests and working effectively with git.