Spaces:
Running
Professional Development Workflow Guide
The Big Picture: Git Branches β Deployment Environments
Common Misconception: Thinking branches = environments Reality: Branches are code versions, environments are where code runs
Git Workflow (Code): Deployment Pipeline (Servers):
feature-branch Local Development
β β
development branch β Development Server
β β
main branch β Staging Server (Optional)
β β
(same main branch) β Production Server
Git Workflow: Managing Code Versions
Step 1: Feature Development
# Create feature branch from development
git checkout development
git pull origin development
git checkout -b feature/new-chatbot-intent
# Work on your feature
# Make commits
git add .
git commit -m "Add product inquiry intent"
Step 2: Integration Testing
# Merge feature into development branch
git checkout development
git merge feature/new-chatbot-intent
git push origin development
# Delete feature branch (cleanup)
git branch -d feature/new-chatbot-intent
Step 3: Production Release
# When development is stable, merge to main
git checkout main
git pull origin main
git merge development
git push origin main
Key Point: main branch should always be production-ready!
Deployment Pipeline: Where Code Runs
Environment 1: Local Development
Who uses it: You, while developing
Git branch: Any branch you're working on
Config file: .env.development
Purpose: Fast iteration and debugging
# Run locally
python main.py
# Uses .env.development automatically
Environment 2: Development Server (Optional)
Who uses it: Team members for integration testing
Git branch: development branch
Config file: .env.development
Purpose: Test how features work together
# Deploy development branch to dev server
git push origin development
# Server uses .env.development
Environment 3: Staging Server (Pre-Production)
Who uses it: QA team, clients, final testing
Git branch: main branch
Config file: .env.staging
Purpose: Final testing before going live
# Deploy main branch to staging server
APP_ENV=staging python main.py
# Uses .env.staging with production-like settings
Environment 4: Production Server (Live)
Who uses it: Real users/customers
Git branch: main branch
Config file: .env.production
Purpose: Serve real users
# Deploy main branch to production server
APP_ENV=production python main.py
# Uses .env.production with live settings
Why Different Environment Configs?
Development (.env.development)
# Loose security for debugging
API_DEBUG=true
CORS_ORIGINS=*
LOG_LEVEL=DEBUG
CONFIDENCE_THRESHOLD=0.3 # Lower threshold for testing
# Local connections
API_HOST=127.0.0.1
BACKEND_API_URL=http://127.0.0.1:8000
Staging (.env.staging)
# Production-like but safer
API_DEBUG=true # Still debug for testing
CORS_ORIGINS=https://staging-app.netlify.app
LOG_LEVEL=INFO
CONFIDENCE_THRESHOLD=0.5 # Production-like threshold
# Staging URLs
API_HOST=0.0.0.0
BACKEND_API_URL=https://staging-chatbot.railway.app
Production (.env.production)
# Tight security and performance
API_DEBUG=false
CORS_ORIGINS=https://smart-chatbot-demo.netlify.app
LOG_LEVEL=ERROR # Only log errors
CONFIDENCE_THRESHOLD=0.5 # Optimized threshold
# Production URLs
API_HOST=0.0.0.0
BACKEND_API_URL=https://smart-chatbot.railway.app
Real-World Workflow Example
Monday: New Feature Request
# 1. Create feature branch
git checkout -b feature/chinese-voice-support
# 2. Develop locally (uses .env.development)
python main.py # Test on localhost
# 3. Commit and push
git commit -m "Add Chinese voice recognition"
git push origin feature/chinese-voice-support
Tuesday: Code Review & Integration
# 4. Merge to development after code review
git checkout development
git merge feature/chinese-voice-support
# 5. Deploy to development server for team testing
# (Development server pulls development branch)
Wednesday: Prepare for Release
# 6. Merge to main when development is stable
git checkout main
git merge development
# 7. Deploy to staging for final testing
# (Staging server runs main branch with .env.staging)
Thursday: Go Live
# 8. Deploy to production (same main branch!)
# (Production server runs main branch with .env.production)
Key Insight: Same code (main branch), different environments (staging vs production)!
Environment Differences: What Changes?
| Aspect | Development | Staging | Production |
|---|---|---|---|
| Data | Fake test data | Production-like test data | Real customer data |
| URLs | localhost:8000 | staging-app.com | myapp.com |
| Debugging | Full debug info | Some debug info | Minimal logging |
| Security | Relaxed CORS | Restricted CORS | Strict CORS |
| Performance | Doesn't matter | Should be fast | Must be fast |
| Integrations | Mock APIs | Test APIs | Live APIs |
Why This Matters for Your Career
Shows Professional Understanding
# Amateur approach
git push origin main # Hope it works in production! π€
# Professional approach
feature β development β main
β β β
local β dev server β staging β production
Demonstrates Key Skills
- Risk Management: Staging catches issues before users see them
- Team Collaboration: Multiple environments support different roles
- System Architecture: Understanding infrastructure beyond just code
- Quality Assurance: Built-in testing at each stage
Portfolio Project Simplification
For your chatbot project, you can use a simplified workflow:
Minimal Setup (2 Environments)
Development: .env.development (localhost)
Production: .env.production (Railway + Netlify)
Professional Setup (4 Environments)
Local: .env.development (localhost)
Development: .env.development (team dev server)
Staging: .env.staging (client testing server)
Production: .env.production (live user server)
Recommendation: Use minimal setup for speed, but mention you understand the full professional workflow in interviews!
Interview Gold: What This Shows
When recruiter asks: "Tell me about your development process"
Your answer:
"I follow professional Git workflow with feature branches merging to development, then main. I use environment-specific configurations - development for local work with debug enabled, staging for pre-production testing with production-like settings, and production with optimized security and performance. This ensures code quality and reduces production risks."
Boom! π― You just demonstrated enterprise-level understanding.
Quick Commands Reference
Git Workflow
# Start new feature
git checkout -b feature/my-feature
# Integrate to development
git checkout development && git merge feature/my-feature
# Deploy to production
git checkout main && git merge development
Environment Management
# Local development
python main.py
# Staging deployment
APP_ENV=staging python main.py
# Production deployment
APP_ENV=production python main.py
Configuration Check
# See which environment is loaded
curl http://localhost:8000/
# Returns: {"environment": "development", ...}
Remember: Professional workflow is about managing risk and enabling collaboration, not just moving code around!