Skip to content

Commit 910e141

Browse files
authored
Merge pull request #1 from weedu230/copilot/add-stans-repo-to-projects
Add STANS Navigation System deployment project to DevOps intermediate
2 parents 2453789 + 68baf72 commit 910e141

1 file changed

Lines changed: 99 additions & 0 deletions

File tree

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
---
2+
title: 'STANS Navigation System Deployment'
3+
description: 'Deploy and manage the Smart Traffic-Aware Navigation System using Docker and CI/CD.'
4+
isNew: true
5+
sort: 1450
6+
difficulty: 'intermediate'
7+
nature: 'Docker'
8+
skills:
9+
- 'docker'
10+
- 'typescript'
11+
- 'nginx'
12+
- 'devops'
13+
seo:
14+
title: 'STANS Navigation System Deployment'
15+
description: 'Deploy and manage the Smart Traffic-Aware Navigation System using Docker, Nginx, and CI/CD pipelines.'
16+
keywords:
17+
- 'Docker'
18+
- 'TypeScript'
19+
- 'React'
20+
- 'DevOps'
21+
- 'CI/CD'
22+
roadmapIds:
23+
- 'devops'
24+
---
25+
26+
The goal of this project is to deploy and manage the [STANS (Smart Traffic-Aware Navigation System)](https://github.com/weedu230/STANS) - a React/TypeScript application that calculates optimal routes using graph algorithms. You will learn containerization with Docker, CI/CD automation with GitHub Actions, and production deployment strategies including security best practices.
27+
28+
## Requirements
29+
30+
You will containerize and deploy this traffic navigation system with proper DevOps practices.
31+
32+
### Part 1: Fork and Setup
33+
34+
Fork the [STANS repository](https://github.com/weedu230/STANS) to your GitHub account. Clone it locally and ensure you can run it with:
35+
36+
```bash
37+
npm install
38+
npm run dev
39+
```
40+
41+
### Part 2: Containerization
42+
43+
Create a multi-stage Dockerfile for the STANS application:
44+
45+
- **Stage 1**: Build the React application (`npm run build`)
46+
- **Stage 2**: Serve the built static files using Nginx
47+
48+
The final Docker image should:
49+
- Be optimized for size (use Alpine-based images)
50+
- Expose port 80
51+
- Include proper Nginx configuration for React routing (handle client-side routing)
52+
- Not include development dependencies in the final image
53+
54+
Test your Docker image locally:
55+
56+
```bash
57+
docker build -t stans-app .
58+
docker run -p 8080:80 stans-app
59+
```
60+
61+
The containerized application will have Nginx serving the static files inside the container.
62+
63+
### Part 3: CI/CD Pipeline
64+
65+
Create a GitHub Actions workflow (`.github/workflows/deploy.yml`) that:
66+
67+
- Triggers on push to the main branch
68+
- Runs basic validation (verify the build completes successfully)
69+
- Builds the Docker image
70+
- Pushes the image to Docker Hub or GitHub Container Registry
71+
- (Optional) Deploys to a remote server using SSH
72+
73+
Configure GitHub Secrets for:
74+
- Docker registry credentials
75+
- (Optional) SSH keys and server details
76+
77+
### Part 4: Production Deployment
78+
79+
Deploy the containerized application to a cloud server:
80+
81+
- Set up a Linux server on AWS, DigitalOcean, or another provider
82+
- Install Docker on the server
83+
- Pull and run your Docker image on the server
84+
- Set up SSL/TLS with Let's Encrypt using Certbot (configure Nginx on the host for SSL termination)
85+
- Configure the server firewall (allow ports 80, 443, and 22 only)
86+
- Ensure the container restarts automatically (`--restart=always`)
87+
88+
## Stretch Goals
89+
90+
- **Monitoring**: Add Prometheus and Grafana to monitor container metrics
91+
- **Logging**: Implement centralized logging with ELK stack or similar
92+
- **Health Checks**: Add Docker health checks and configure automatic container restarts
93+
- **Load Balancing**: Deploy multiple instances behind a load balancer
94+
- **Infrastructure as Code**: Use Terraform or Ansible to automate the infrastructure setup
95+
- **Kubernetes**: Deploy the application to a Kubernetes cluster instead of a single server
96+
97+
<hr />
98+
99+
After completing this project, you will have hands-on experience with containerization, CI/CD pipelines, and production deployment of a modern web application.

0 commit comments

Comments
 (0)