Skip to content

Liam-So/nimbus-cloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 

Repository files navigation

Nimbus Songs

Fullstack application that leverages AWS services, and the Spotify API to send a text message with a "Song of the day" based on the seed genres the user selected upon registration.

Note- Due to the provision service charges on AWS, the application is non-functional when running it locally. Instructions to run it locally will be provided nonetheless.

Table of Contents

  1. Steps for Local Deployment
  2. Architecture
  3. Built With
  4. Screenshots
  • git clone https://github.com/Liam-So/nimbus-cloud.git
  • In terminal 1
    • cd backend
    • npm install
    • npm start
  • In terminal 2
    • cd frontend
    • npm install
    • npm start
  • The application is now accessible at http://localhost:3000

image

Nimbus Cloud was built using Docker, React, Express, Node.js, S3, DynamoDB, Amazon Cognito, AWS Lambda, Elastic Beanstalk, Amazon SNS, Cloudfront, and API Gateway.

The architecture uses Cloudfront to route user requests to our frontend and provides an extra layer of security in doing so. Our frontend is a React application hosted on S3 which uses Amazon Cognito for user authentication and serves requests to our backend. These requests go through API Gateway for security, which acts as a proxy for our Elastic Beanstalk application.

The Nodejs and Expressjs backend is deployed on Elastic Beanstalk where it interacts with our DynamoDB database. Our Lambda function is executed everyday at 12pm AT time using a cron expression that calls an endpoint in our EBS application. This generates the daily song recommendations from Spotify, and uses SNS to send the generated song to the user’s mobile device.

Our data is stored through the use of two AWS cloud services. Passwords are not directly stored, but our application uses Amazon Cognito to provide user pools of scalable storage used for user authentication during registration and login. The rest of our data is stored in a DynamoDB database.

Our frontend user interface required programming to create our various pages: register, genres, confirmation, login, and home. Our backend also required programming to create and connect our endpoints to spotify and our AWS services: SNS and DynamoDB. It also allowed our users to see their previous songs of the day for their convenience.

Our deployment uses Docker to containerize and push our application’s backend as an image to DockerHub. Our “aws run” file is then uploaded to Elastic Beanstalk providing instructions to pull the image from DockerHub and deploy it. Our frontend is hosted as static files on S3 where it is able to make requests to our backend.

Sample messages generated from our lambda function. They provide the song, artist, and link to the spotify url. image Login Form image Register Form image Confirmation Code Form image Genre select form image Sample Song of the day with album cover, song title, and url. image Sample homepage that keeps track of user's previous songs of the day. image

About

Nimbus Songs

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors