Deployment & Release Strategies
This technical guide defines the deployment architecture and continuous delivery pipelines utilized to transition the portfolio's applications from local development into highly available production environments.
⚡ Global Edge Deployment (Frontend)
For JavaScript-heavy architectures, specifically Single Page Applications (SPAs) built with React and Vite, Edge deployment networks like Vercel or Netlify are strictly utilized.
Vercel Deployment Protocol
- VCS Integration: Authenticate and bind your Vercel account directly to the target GitHub repository.
- Continuous Deployment Configuration:
- Framework Preset: Select
ViteorNext.js(Vercel typically auto-detects this based onpackage.json). - Build Command:
npm run build - Output Directory: Ensure this maps to
dist(Vite) or.next(Next.js).
- Framework Preset: Select
- Secret Management: Inject all necessary variables from your local
.env.productiondirectly into the Vercel Environment Variables dashboard prior to initiating the primary build.
☁️ Platform-as-a-Service (Backend)
For stateful API servers constructed in Python (Django, FastAPI) or Node.js, managed container environments like Render or Railway ensure high uptime without the operational overhead of managing bare-metal servers.
Render Web Service Protocol
- Service Instantiation: Create a new "Web Service" tied to the backend repository branch (e.g.,
main). - Runtime Specifications: Define the native environment (e.g.,
Python 3orNode). - Build Phase Definition:
- Python:
pip install -r requirements.txt && python manage.py migrate - Node:
npm install
- Python:
- Execution Commands (Start):
- FastAPI (Production ASGI):
uvicorn main:app --host 0.0.0.0 --port $PORT - Django (Production WSGI):
gunicorn core.wsgi:application
- FastAPI (Production ASGI):
🐳 Docker Orchestration
For environments demanding absolute parity, or applications involving complex microservice interactions (e.g., the fullstack-blog-jwt-docker), we deploy using Docker Native tooling.
Standard Container Build Pipeline
# Compile the immutable Docker image, tagging it appropriately
docker build -t ashif-ek/my-app:latest .
# Instantiate the container, mapping the internal application port to the host
docker run -d -p 8000:8000 --name my-app-instance ashif-ek/my-app:latest
Note on Container Registries: In a full CI/CD pipeline, these images are typically pushed to Docker Hub or AWS ECR before being pulled down to the production host.