Upload files to "sk1"

This commit is contained in:
Sabareesan Murugesan 2026-05-13 07:46:45 +00:00
parent 1f319a20c8
commit 4125a9bb9c
4 changed files with 269 additions and 0 deletions

238
sk1/README.md Normal file
View File

@ -0,0 +1,238 @@
# 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
```bash
docker compose up -d --build
```
### Stop Application
```bash
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:**
```env
MONGO_URL=mongodb://mongodb:27017/notes
```
> Sensitive data is not stored directly in GitHub.
---
## Backup Instructions
MongoDB database can be backed up using:
```bash
mongodump
```
Backup files can later be restored using:
```bash
mongorestore
```
---
## Viewing Logs
Docker logs can be viewed using:
```bash
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](https://docs.docker.com)
- [MongoDB Documentation](https://www.mongodb.com/docs)
- [Node.js Documentation](https://nodejs.org/en/docs)
- [Railway Documentation](https://docs.railway.app)
- [GitHub Documentation](https://docs.github.com)
> Generative AI assistance was used for debugging, deployment guidance, frontend improvements, and README preparation.

30
sk1/docker-compose.yml Normal file
View File

@ -0,0 +1,30 @@
version: '3'
services:
app:
build: ./app
restart: always
environment:
- MONGO_URL=mongodb://mongo:27017/notes
depends_on:
- mongo
mongo:
image: mongo
restart: always
volumes:
- mongo-data:/data/db
nginx:
image: nginx
restart: always
ports:
- "80:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
depends_on:
- app
volumes:
mongo-data:

1
sk1/prepare-app.sh Normal file
View File

@ -0,0 +1 @@

BIN
sk1/remove-app.sh Normal file

Binary file not shown.