zkt26/sk1/README.md

4.5 KiB
Raw Blame History

Cloud Notes App

Description

Cloud Notes App is a containerized cloud-based web application for storing notes online.
The application allows users to add and manage notes using a modern web interface connected to a MongoDB database.
The project was developed as part of a Cloud Technologies deployment assignment.


Technologies Used

  • Node.js
  • Express.js
  • MongoDB
  • Nginx
  • Docker
  • Docker Compose
  • Railway Cloud Platform
  • GitHub

Application Architecture

The application uses a multi-container architecture consisting of:

  1. Node.js Backend Container

    • Handles API requests
    • Connects to MongoDB
    • Serves application logic
  2. MongoDB Database Container

    • Stores user notes persistently
    • Uses persistent storage volumes
  3. Nginx Reverse Proxy Container

    • Handles HTTP traffic
    • Proxies requests to Node.js backend

Features

  • Add cloud notes
  • Persistent database storage
  • Responsive user interface
  • Dockerized deployment
  • Public cloud hosting
  • HTTPS support
  • MongoDB integration
  • Reverse proxy using Nginx
  • Environment variable configuration
  • Automated deployment scripts

Cloud Platform

The application is deployed publicly using the Railway cloud platform.

Railway provides:

  • Public HTTPS access
  • Container hosting
  • Cloud networking
  • Managed MongoDB service

Public Access

The application is accessible publicly through HTTPS using a generated Railway domain.

Example:

https://your-domain.up.railway.app

Persistent Storage

MongoDB data is stored using persistent volumes to ensure that notes remain saved after application restarts.


Deployment Instructions

Run Application

docker compose up -d --build

Stop Application

docker compose down -v

Scripts

prepare-app.sh

Used to:

  • Build containers
  • Start services
  • Deploy the application

remove-app.sh

Used to:

  • Stop containers
  • Remove services
  • Clean deployment resources

Environment Variables

The application uses environment variables for secure configuration.

Example:

MONGO_URL=mongodb://mongodb:27017/notes

Sensitive data is not stored directly in GitHub.


Backup Instructions

MongoDB database can be backed up using:

mongodump

Backup files can later be restored using:

mongorestore

Viewing Logs

Docker logs can be viewed using:

docker logs container_name

Railway deployment logs are available through the Railway dashboard.


Cost Analysis

Estimated cloud deployment cost for:

  • 1,000 users/day
  • 50 GB database/storage

Estimated Resources

Resource Estimated Cost
Railway Web Service $5 $10/month
MongoDB Storage $5 $15/month
Network Traffic $2 $5/month

Estimated Annual Cost

Approximately $150 $300 per year, depending on traffic and storage usage.


Repository Structure

sk1/
│
├── app/
│   ├── public/
│   │   └── index.html
│   ├── Dockerfile
│   ├── package.json
│   └── server.js
│
├── nginx/
│   └── nginx.conf
│
├── docker-compose.yml
├── prepare-app.sh
├── remove-app.sh
└── README.md

Configuration Description

Docker Compose

Defines:

  • Application containers
  • Networking
  • Persistent volumes

Nginx Configuration

Used as reverse proxy forwarding requests to the Node.js application.

Dockerfile

Builds the Node.js application container.


Requirements for Running

The following software is required:

  • Docker Desktop
  • Docker Compose
  • Git
  • Internet connection

Supported operating systems:

  • Windows
  • Linux
  • macOS

External Resources

The following resources were used during development:

Generative AI assistance was used for debugging, deployment guidance, frontend improvements, and README preparation.