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:ReactID should be a UUID
Backend:SpringNote
Bootthat+datetimePostgreSQLshould 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
Challenge
Data
YouPostgreSQL mustshould choosebe oneused ofto store logs. Logs should match the issuesformat listed below and implement a solution.
Frontend Issues (Repository)
Backend Issues (Repository)
How to Contribute
Follow these steps to fork the repository, make changes, and submit a Pull Request (PR).
Fork the Repository
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
Clone the Forked Repository
Conventions
AfterLanguage forking,and clonetooling theconventions repository to your local machine:
or for backend:
Remember the Tech Team willshould beworking on the repos concurrently. Remember to pull from the origin constantly!
Set Up the Development Environment
Frontend
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:
Replace XX with the issue number.
Implement Your Solution
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
Submission Checklist
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.