| .. | ||
| docker-compose.yml | ||
| Dockerfile | ||
| nginx.conf | ||
| package.json | ||
| prepare-app.sh | ||
| README.md | ||
| remove-app.sh | ||
| server.js | ||
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:
-
Node.js Backend Container
- Handles API requests
- Connects to MongoDB
- Serves application logic
-
MongoDB Database Container
- Stores user notes persistently
- Uses persistent storage volumes
-
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:
- Docker Documentation
- MongoDB Documentation
- Node.js Documentation
- Railway Documentation
- GitHub Documentation
Generative AI assistance was used for debugging, deployment guidance, frontend improvements, and README preparation.