Our users are science teachers who are as comfortable using the command line as they are using a browser. In their “Unit Conversion” science unit, they want to assign students unit-conversion problems on paper worksheets. After students turn in their completed worksheets, the teachers want to be able to enter the questions and student responses into a computer to be graded.
Students will convert:
- temperatures between Kelvin, Celsius, Fahrenheit, and Rankine
- volumes between liters, tablespoons, cubic-inches, cups, cubic-feet, and gallons
This repository contains the code for a unit conversion frontend application containing a UI to assist teachers with conversion validation.
Public API Endpoint: http://unitconversionui.us-east-1.elasticbeanstalk.com/
- Node.js
- npm
- Clone the repository
git clone [email protected]:Kevin1289/unit-conversion-frontend.git
- Install dependencies
cd unit-conversion-frontend
npm install
- Start the application
npm start
- Open a browser and navigate to http://localhost:3000
- Run the unit tests
npm test
- Run the Dependency Vulnerability Check
npm run test:security
- Lint the code
npm run lint
- Format the code
npm run prettier
This application provides a UI to assist teachers with conversion validation.
- The application only supports the conversion of temperatures between Kelvin, Celsius, Fahrenheit, and Rankine.
- The application only supports the conversion of volumes between liters, tablespoons, cubic-inches, cups, cubic-feet, and gallons.
- The CI/CD pipeline is set up using GitHub Actions.
- The pipeline runs the tests and lints the code on every push to the repository.
- The pipeline deploys the application to AWS Elastic Beanstalk on every push to the
main
branch.
- The application is deployed on AWS Elastic Beanstalk for several reasons:
- It is a Platform as a Service (PaaS) that abstracts the underlying infrastructure.
- It is easy to deploy and manage applications.
- It provides auto-scaling and load balancing capabilities.
- It supports multiple programming languages and frameworks.
- It provides a free tier for new users.
- The application leverages a network load balancer to distribute incoming traffic across multiple targets.
- The application is deployed in the
us-east-1
region. - The application pushes docker image to Docker Hub for accessability and versioning.
- Allow CICD pipeline to deploy to multiple environments (dev, staging, prod)
- Implement proper versioning of the application and docker image
- Implement logs and monitoring for the application (AWS CloudWatch, DataDog)
- Improve CD pipeline to leverage Terraform for infrastructure as code
- Implement a caching layer to improve performance and repetative operations (CDN, React Memoization)
- Leverage professional documentation tools like Confluence for better documentation and knowledge sharing among developers
- Improve UI design to be more oriented towards teachers (styling, images)
- Implement a login feature so students are not able to access the application (avoid cheating)