Developer Challenge
DeveloperF25 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
providethisanservice,accurateincluderepresentationtwo URL parameters: size (log count) and offset (number of logs from the beginning) -
Logs should be of the
day-to-dayfollowingchallengestypefaced{byid:developersstr,attimestamp:Blueprint.datetime,Weip:aimstr,todata:assessstryour 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 afrontendand abackend. 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-
YouThewillresponse of this endpoint should beexpected to work within this stack and follow industry best practices for software development.Blueprint AdminAs Blueprint continues to grow, so does our need for efficient resource management. TheBlueprint Adminplatform aims to provideacomprehensive overviewcollection ofthe organization's current state. Through this dashboard, theExecutive Board (E-board) and Tech Leadswill be able to:
logsCreate and manage eventsOversee AWS resourcesTrack attendanceManage the organization's budget
ChallengeData
YouPostgreSQLmustshouldchoosebeoneusedofto store logs. Logs should match theissuesformatlisted below and implement a solution.Frontend Issues (Repository)Backend Issues (Repository)How to ContributeFollow these steps to fork the repository, make changes, and submit a Pull Request (PR).Fork the RepositoryClone the Forked RepositoryConventions
AfterLanguageforking,andclonetoolingtheconventionsrepository 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 EnvironmentFrontendInstall dependencies:Start the development server:
BackendRun the database using Dockerfolloweddocker-composeup --buildCompile the service./gradlew buildRun the service./gradlew bootRunIf you have issues with any of the steps mentioned above, visit the troubleshoot section in the README.mdCreate a New BranchBefore making changes, create a new branch:ReplaceXXwith the issue number.Implement Your SolutionCarefully read the issue description and implement the required feature or fix.Follow the existingcode style and conventions.Write testswhere applicable.
Commit Your ChangesAfter making your changes, commit them:git add .Push your branch to GitHub:git push origin fix-issue-XXSubmit a Pull RequestGo to theforked repository(Blueprint Admin or Backend).Click"Compare & pull request".Provide aclear PR description:Reference the issue number.Describe your changes.Mention any tests you wrote.
Click"Create pull request".
Submission ChecklistForked the repositoryCloned the repositorySet up the development environmentCreated a new branchImplemented the fix/featureCommitted and pushed changesSubmitted a pull request by2/16 11:59 P.M
If you have any questions please reach out tommerlin@stevens.eduorifarfand@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.