Skip to content

Project Developed as part of my final year in my BSc in Computing Degree at National College of Ireland. This is a cloud-native application supported by several AWS products. In this app I used Node.js with a few 3rd party libraries (express, bcryptjs, axios...) on the backend. The frontend was built in react-js and it consumes the backend via H…

Notifications You must be signed in to change notification settings

lucasfdsilva/my-hair-done

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

My Hair Done - Style or Get Styled

My Hair Done is a Web application that aims to streamline the process of getting a haircut for both independent professionals and customers.

For Professionals, the application is a platform to manage their bookings and availability and to publish their portfolio and style characteristics so that customers looking for a professional specialised in a given style or location can find a match easily.

For customers, the app helps them on 3 different fronts: 1st The AI Hairstyle builder helps users to try different haircut styles & 2nd, the app helps them find professionals that match their hairstyle choice and finally, schedule appointments with any professional in the platform through the app.

My Hair Done was built as a Cloud Native application with backend & Frontend decoupled to allow for a mobile app expansion in the future. The backend was built in NodeJS using the REST architecture while the Frontend was built using ReactJS and it communicates with the backend as an API using HTTP Calls.

To streamline the development process and publishing of iterative updates, a full CI/CD pipeline was implemented using GitHub and AWS Development Services (CodeDeploy/CodePipeline). The application infrastructure is also hosted in AWS using managed services where possible to streamline the application development and reduce operations cost. Both Backend and Frontend are hosted in an auto-scaling group of EC2 instances with load-balancers. The backend connects to a MySQL database hosted in AWS RDS. The application also leverages AWS SES for mailing tasks and AWS SQS where queueing between services is necessary. Other AWS services such as Route53 (DNS), Certificate manager (HTTPS) are also being used.

Technologies Used:

  • NodeJS - Used to build the application's backend which was built as a REST API to serve multiple front ends.
  • ReactJS - Used to build the web application.
  • Swagger - Used to document the backend API endpoints and models.
  • AWS EC2 - Hosting Backend Auto-Scalation Instances Group.
  • AWS CloudFront - Serving the static frontend files.
  • AWS S3 - Hosting all application supporting files.
  • AWS Lambda - Running the serverless microservices (email verification, booking confirmation, etc).
  • AWS RDS - Hosting the main MySQL database.
  • AWS SES (Simple Email Service) - Mailing service used by the application.
  • AWS SQS (Simple Queue Service) - Queueing system to organize requests made to backend/microservices.
  • AWS Route53 - DNS Service.
  • AWS Certificate Manager - Providing Https certificates to the application.
  • AWS Secrets Manager - Storing secrets to all components needed and only serving these secrets to the backend at runtime.
  • AWS CodeBuild / CodeDeploy / CodePipeline - Implementing a fully automated CI/CD pipeling to streamline the development process.

Web App Available at:

https://myhairdone.co.uk

Backend API Available at:

https://api.myhairdone.co.uk

Running this application locally

Run Backend Locally:

cd backend
npm install
npm run start
Application will listen to Port 3000 if no System Env is configured.

Run Web App Locally:

cd web
npm install
npm run start
Application will listen to Port 3000 if no System Env is configured.

About

Project Developed as part of my final year in my BSc in Computing Degree at National College of Ireland. This is a cloud-native application supported by several AWS products. In this app I used Node.js with a few 3rd party libraries (express, bcryptjs, axios...) on the backend. The frontend was built in react-js and it consumes the backend via H…

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages