INFRASTRUCTURE DIAGRAM

DevOps Pipeline

GitHub → Jenkins CI/CD → Nginx → .NET App → PostgreSQL

Developer
// local machine
LOCAL
Writes .NET code locally and pushes to GitHub main branch
git push origin main
git push · main branch
GitHub
// main branch · repository
SCM
Repository — stores all .NET source code
Webhook fires on every push → triggers Jenkins automatically
webhook trigger
DigitalOcean Droplet  ·  Ubuntu 24.04 LTS
Jenkins
// CI/CD pipeline server
CI/CD
1git pull origin main
2dotnet restore
3dotnet build --configuration Release
4dotnet test
5dotnet publish -o /var/www/app
6systemctl restart myapp.service
deploy · restart service
Nginx
// reverse proxy
LIVE
Listens on Port 80 / 443 → forwards to :5000
SSL termination · Serves static files · Rate limiting
proxy_pass :5000
.NET Application
// kestrel · port 5000
APP
ASP.NET Core running via systemd service
Handles API requests · Connects to PostgreSQL on localhost
SQL · localhost:5432
PostgreSQL
// database · localhost only
DB
Port 5432 — bound to localhost, never exposed to internet
Internal access only · Data persistence layer
HTTP response
End User · Browser
// internet · yourapp.com
INTERNET
Request hits yourapp.com → Nginx → .NET → Response
User never directly talks to app server or database
Dev push
Webhook
Deploy / HTTP
Proxy
Database

// no kubernetes · no argocd · simple & production-ready