Skip to content

Latest commit

 

History

History
124 lines (83 loc) · 4.28 KB

README.md

File metadata and controls

124 lines (83 loc) · 4.28 KB

EazyDeploy - Deployment Platform for Web Apps

Live Demo

Build, deploy, and scale your Express and React apps with unmatched ease from your very first user to your billionth.

Tech Stack Used

  • Node.js: Backend framework for handling API requests and business logic.
  • React.js: Frontend framework for building responsive user interfaces.
  • Docker: Containerization for running isolated and scalable application environments.
  • Redis: In-memory database used for caching and message queue management.
  • MongoDB: NoSQL database for managing user and application data.
  • AWS Lambda & ECS: For running backend services and deploying Docker containers.
  • AWS S3 & Route 53: Hosting static assets and managing custom subdomains.
  • BullMQ: Message queue system for handling background tasks and scaling job processing.

Features

  1. Automated Deployment: Simplify the deployment of both React frontends and Express backends. With just a few steps, users can build, deploy, and manage applications across AWS services.

  2. Scalability & Performance: EazyDeploy utilizes Docker and AWS ECS to ensure horizontal scaling for growing user traffic. Backend APIs run seamlessly on AWS Lambda, offering a serverless, cost-effective solution.

  3. Efficient Task Processing: Powered by BullMQ and Redis, EazyDeploy processes background jobs and queues with high performance and reliability. This ensures that tasks like email notifications, data processing, or scheduled jobs are handled efficiently.

  4. Custom Subdomains: Offer personalized subdomains using AWS Route 53, allowing users to deploy applications with their own unique URLs. This feature provides flexibility and professionalism for projects.

Setup Instructions

1. Redis Docker Setup (Prerequisite)

Before setting up the application, ensure that Redis is up and running. You can run Redis using Docker by following these steps:

  1. Pull the Redis Docker image:

    docker pull redis
  2. Run the Redis container:

    docker run --name redis-container -p 6379:6379 -d redis
  3. Verify that Redis is running:

    docker ps

The Redis server will now be running on port 6379.

2. Frontend Docker Configuration

  1. Inside frontend-docker-config folder, complete credential details in Dockerfile with the given environment variables.

  2. Build the Docker image inside frontend-docker-config:

    docker build -t frontend-image .
  3. Deploy the image to AWS ECR (Elastic Container Registry):

3. Backend Docker Configuration

  1. Inside backend-docker-config folder, complete credential details in Dockerfile with the given environment variables.

  2. Build the Docker image inside backend-docker-config:

    docker build -t backend-image .
  3. Deploy the image to AWS ECR (Elastic Container Registry):

4. EazyDeploy App Setup

To set up the application using the configurations in EazyDeploy:

  1. Navigate to the EazyDeploy/backend folder and create a .env file with the following environment variables:

    MONGODB_URL=
    JWT_SECRET=
    EMAIL_USER=
    EMAIL_PASS=
    AWS_ACCESS_KEY_ID=
    AWS_SECRET_ACCESS_KEY=
    HOSTED_ZONE_ID=
    CERTIFICATE_ARN=
  2. Navigate to the EazyDeploy/backend/Queues folder and start the worker:

    node worker.js
  3. Start the backend application:

    cd EazyDeploy/backend
    npm install
    npm start
  4. Start the frontend application:

    cd EazyDeploy/frontend
    npm install
    npm start

The backend Express server will run on port 5000, and the frontend React application will run on port 3000.

Notes

  • Ensure that you replace placeholder values in the .env files with your actual credentials and configuration settings.
  • For deploying Docker images to AWS ECR, you need AWS CLI configured on your local machine or CI/CD environment.
  • The AWS_ACCOUNT_ID and AWS_REGION variables should be replaced with your AWS account ID and region, respectively.
  • Make sure Docker and AWS CLI are installed on your local machine before proceeding with the build and deploy commands.

Feel free to reach out if you have any questions or need further assistance.