This guide explains how to use the DevPod Desktop application to browse your multi-stack development projects and start applications with ease.
- DevPod Desktop Overview
- Installation & Setup
- Opening Projects
- Project Structure Navigation
- Starting Applications
- Database Management
- GitHub Copilot Integration
- Development Workflows
- Troubleshooting
DevPod Desktop is a user-friendly GUI application that simplifies container-based development. It provides:
- Visual Project Management: Browse and manage multiple development environments
- One-Click Startup: Start development containers with a single click
- Integrated Terminal: Access containerized environments directly
- Port Management: Automatic port forwarding and conflict resolution
- VS Code Integration: Seamless integration with Visual Studio Code
- AI-Powered Development: GitHub Copilot integration for enhanced coding assistance
- Consistent UI: Automatic menu bar visibility and optimized workspace settings
Download from Official Website:
# Visit https://devpod.sh/
# Download the appropriate version for your OS:
# - Windows: DevPod-Setup.exe
# - macOS: DevPod.dmg
# - Linux: DevPod.AppImage or .deb/.rpm packagesLinux Installation:
# For Ubuntu/Debian:
sudo dpkg -i devpod_*.deb
# For AppImage:
chmod +x DevPod.AppImage
./DevPod.AppImagemacOS Installation:
# Open the downloaded .dmg file
# Drag DevPod to Applications folderWindows Installation:
# Run the DevPod-Setup.exe installer
# Follow the installation wizard- Launch DevPod Desktop
- Configure Provider (if not already done):
- Select "Docker" as your provider
- Ensure Docker is running on your system
- Set Workspace Directory:
- Point to your
/dev-pod-cli-wsdirectory - This allows DevPod to discover your projects
- Point to your
- Launch DevPod Desktop
- Click "Add Workspace" or the "+" button
- Choose Source:
- Local Folder: Browse to your project directory
- Git Repository: Use
https://github.com/cloudshare360/devpod-multi-stack-environments.git
- Select Project:
- Navigate to
/dev-pod-cli-ws/projects/ - Choose your desired project (e.g.,
java17-project,nodejs-project, etc.)
- Navigate to
- File Menu → Import Workspace
- Browse to Project:
/your-path/dev-pod-cli-ws/projects/java17-project /your-path/dev-pod-cli-ws/projects/nodejs-project /your-path/dev-pod-cli-ws/projects/python3-project etc. - Click "Import"
# From your project directory
cd /path/to/dev-pod-cli-ws/projects/java17-project
devpod up .
# Or specify the workspace name
devpod up java17-workspaceEach project has a consistent structure:
project-name/
├── .devcontainer/ # DevPod configuration
│ ├── devcontainer.json # Container settings, ports, extensions
│ └── setup.sh # Post-creation setup script
├── database/ # Database environment
│ ├── docker-compose.yml # PostgreSQL + pgAdmin
│ ├── start-db.sh # Database startup script
│ ├── schema/ # Database schema files
│ └── seed-data/ # Sample data
├── src/ # Application source code
├── README.md # Project-specific documentation
└── package.json # Dependencies (Node.js/Python projects)
- Workspace Panel: Shows all available workspaces/projects
- File Explorer: Browse project files within the container
- Terminal Panel: Access containerized shell
- Port Panel: View and manage forwarded ports
- Extensions Panel: Manage VS Code extensions
Via DevPod Desktop:
- Select Project from workspace list
- Click "Start" or
▶️ Play button - Wait for Container Build (first time only)
- Access VS Code when ready
What Happens:
- Container is built and started
- Dependencies are installed
- Ports are forwarded
- VS Code opens in container context
- Database can be started separately
Method A: Using VS Code Terminal
# Open VS Code terminal (Ctrl+`)
cd database
./start-db.shMethod B: Using DevPod Terminal
# In DevPod Desktop terminal
cd /workspaces/project-name/database
./start-db.shMethod C: Direct Docker Commands
# From database directory
docker-compose up -d# In VS Code terminal or DevPod terminal
cd /workspaces/java17-project
# Start database first
cd database && ./start-db.sh && cd ..
# Run Spring Boot application
mvn spring-boot:run
# OR
./mvnw spring-boot:run
# Access at: http://localhost:8090# In VS Code terminal
cd /workspaces/nodejs-project
# Start database
cd database && ./start-db.sh && cd ..
# Install dependencies (if not done)
npm install
# Start application
npm run dev
# OR
npm start
# Access at: http://localhost:9000# In VS Code terminal
cd /workspaces/python3-project
# Start database
cd database && ./start-db.sh && cd ..
# Activate virtual environment (if used)
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Start FastAPI application
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
# Access at: http://localhost:8000# In VS Code terminal
cd /workspaces/react-project
# Start database (for API integration)
cd database && ./start-db.sh && cd ..
# Install dependencies
npm install
# Start development server
npm start
# Access at: http://localhost:3010# In VS Code terminal
cd /workspaces/angular-project
# Start database
cd database && ./start-db.sh && cd ..
# Install dependencies
npm install
# Start development server
ng serve --host 0.0.0.0 --port 4200
# Access at: http://localhost:4200Start Database:
cd database
./start-db.shCheck Database Status:
./status-db.shStop Database:
./stop-db.shReset Database (Delete All Data):
./reset-db.sh- URL: Project-specific (see table below)
- Email:
admin@dev.local - Password:
admin123
- Host:
localhost - Port: Project-specific (see table below)
- Database:
devdb - Username:
devuser - Password:
devpass123
| Project | PostgreSQL Port | pgAdmin URL |
|---|---|---|
| postgresql-devpod-project | 5432 | http://localhost:8088 |
| java17-project | 5433 | http://localhost:8081 |
| nodejs-project | 5434 | http://localhost:8082 |
| python3-project | 5435 | http://localhost:8083 |
| react-project | 5436 | http://localhost:8084 |
| angular-project | 5437 | http://localhost:8085 |
| mern-fullstack | 5438 | http://localhost:8086 |
| angular-java-fullstack | 5439 | http://localhost:8087 |
The nodejs-project (and soon other projects) includes GitHub Copilot and GitHub Copilot Chat for AI-powered development assistance. This provides:
- Intelligent Code Completion: AI-powered suggestions as you type
- Chat-Based Assistance: Ask questions and get code explanations
- Code Generation: Generate functions, classes, and entire files
- Bug Fixes: Get suggestions for fixing code issues
- Documentation: Generate comments and documentation
- Test Generation: Create unit tests automatically
Individual Plan: $10/month or $100/year Business Plan: $19/user/month (for organizations) Student/Teacher: Free with GitHub Education benefits
Sign up at: https://github.com/features/copilot
Method A: Through VS Code
- Open VS Code in your DevPod workspace
- Look for GitHub Copilot in the status bar
- Click to Sign in to GitHub
- Follow the authentication process
Method B: Through GitHub CLI
# In VS Code terminal
gh auth login
# Follow the prompts to authenticateThe nodejs-project automatically includes:
"extensions": [
"github.copilot", // Core Copilot extension
"github.copilot-chat", // Chat interface
// ... other extensions
]- Type naturally: Copilot suggests completions as you type
- Accept suggestion: Press
Tabto accept - Next suggestion: Press
Alt+](orOption+]on Mac) - Previous suggestion: Press
Alt+[(orOption+[on Mac)
- Open Chat:
Ctrl+Shift+P→ "GitHub Copilot: Open Chat" - Inline Chat:
Ctrl+Ifor inline assistance - Explain Code: Select code → Right-click → "Copilot: Explain This"
- Generate Tests: Select function → "Copilot: Generate Tests"
// Ask general questions
"How do I connect to PostgreSQL in Node.js?"
// Request code generation
"Create a REST API endpoint for user authentication"
// Get explanations
"Explain this function and how it works"
// Request optimizations
"How can I improve the performance of this code?"
// Generate tests
"Create unit tests for this user service class"
# Start nodejs-project
cd nodejs-project && devpod up .
# In VS Code, use Copilot Chat:
"Help me set up a REST API with Express and PostgreSQL"# Ask Copilot Chat:
"Show me how to connect to PostgreSQL using the credentials:
Host: localhost:5434
Database: devdb
User: devuser
Password: devpass123"// Type a comment and let Copilot generate code:
// Create an Express route to get all users from PostgreSQL
// Copilot will suggest something like:
app.get('/api/users', async (req, res) => {
try {
const result = await pool.query('SELECT * FROM employees');
res.json(result.rows);
} catch (err) {
res.status(500).json({ error: err.message });
}
});# Ask Copilot Chat:
"Generate Jest unit tests for my user API endpoints"// Good: Copilot understands intent
// Create a middleware function to validate JWT tokens and check user permissions
// Less effective:
// JWT function- Open related files in VS Code tabs for better context
- Provide examples in comments for specific patterns
- Use meaningful variable names for better suggestions
- Review all generated code before committing
- Don't include sensitive data in prompts
- Validate security practices in generated code
- Test thoroughly before deploying
# Check authentication status
gh auth status
# Re-authenticate if needed
gh auth login
# Check VS Code extension status
# Command Palette → "GitHub Copilot: Check Status"- Check subscription status at github.com/settings/copilot
- Verify extensions are enabled in VS Code
- Restart VS Code and rebuild container if needed
- Check internet connection for AI service access
- Verify Copilot Chat extension is installed
- Check GitHub authentication status
- Try refreshing the chat panel
- Restart VS Code if issues persist
- Start DevPod Desktop
- Select Project from workspace list
- Click Start to launch container
- Wait for VS Code to open
- Open Terminal in VS Code (Ctrl+`)
- Start Database:
cd database && ./start-db.sh
- Start Application (see application-specific commands above)
- Open Browser to access application
- Access pgAdmin for database management
- Begin Development!
Running Multiple Projects Simultaneously:
-
Start First Project (e.g., backend API)
# Java17 project for API cd java17-project && devpod up .
-
Start Second Project (e.g., frontend)
# React project for frontend cd react-project && devpod up .
-
Configure Cross-Project Communication:
- Frontend connects to backend API
- Use project-specific ports for APIs
- Database can be shared or separate per project
View Active Ports:
- DevPod Desktop → Port Panel
- Shows all forwarded ports
- Click to open in browser
Manual Port Forwarding:
# If additional ports needed
devpod port-forward <workspace> <local-port>:<remote-port>Symptoms: Error during container build or startup
Solutions:
# Check Docker status
docker ps
# Rebuild container
devpod rebuild <workspace-name>
# Check logs
devpod logs <workspace-name>
# Reset workspace
devpod delete <workspace-name>
devpod up <project-directory>Symptoms: "Port already in use" errors
Solutions:
# Check what's using the port
lsof -i :PORT_NUMBER
# Stop conflicting service
sudo systemctl stop service-name
# Use alternative port in configurationSymptoms: Application can't connect to database
Solutions:
# Verify database is running
cd database && ./status-db.sh
# Check database logs
docker-compose logs postgres
# Restart database
./stop-db.sh && ./start-db.sh
# Verify port forwarding
netstat -tulpn | grep PORT_NUMBERSymptoms: Missing language support or tools
Solutions:
- Check devcontainer.json extensions list
- Rebuild container to install extensions
- Manual installation in VS Code
- Verify internet connection for extension downloads
Symptoms: Container startup or operation is slow
Solutions:
# Increase Docker resources
# Docker Desktop → Settings → Resources
# Increase CPU, Memory allocation
# Clean up unused containers
docker system prune
# Use volume mounts instead of bind mounts
# (Already configured in projects)Symptoms: VS Code menu bar (File, Edit, View, etc.) is hidden
Solutions:
- Automatic Fix: The nodejs-project includes
"window.menuBarVisibility": "classic"setting - Manual Fix: Press
Altkey to temporarily show menu, then View → Appearance → Menu Bar - Permanent Fix: Add to devcontainer.json settings:
"settings": {
"window.menuBarVisibility": "classic",
"window.enableMenuBarMnemonics": true
}Symptoms: Copilot not providing suggestions or chat not working
Solutions:
# Verify subscription and authentication
gh auth status
# Check Copilot status in VS Code
# Command Palette → "GitHub Copilot: Check Status"
# Re-authenticate if needed
gh auth logout
gh auth login
# Restart VS Code and rebuild container
devpod rebuild nodejs-project-
Check DevPod Installation:
devpod version
-
Verify Docker Provider:
- DevPod Desktop → Settings → Providers
- Ensure Docker is selected and working
-
Reset DevPod Configuration:
devpod reset
- Refresh Workspace List: Click refresh button
- Check .devcontainer Directory: Ensure devcontainer.json exists
- Re-import Workspace: Delete and re-add workspace
# Create workspace with custom name
devpod up --id my-custom-name /path/to/project# Set environment variables for workspace
devpod up --env KEY=VALUE /path/to/project# Mount additional volumes
devpod up --mount source=/host/path,target=/container/path,type=bind# SSH into running workspace
devpod ssh <workspace-name># Export workspace configuration
devpod config export > workspace-config.yaml
# Import workspace configuration
devpod config import workspace-config.yaml- DevPod Official Docs: https://devpod.sh/docs/
- Project README Files: Each project has specific documentation
- PORT_ASSIGNMENTS.md: Port allocation reference
- DATABASE.md: Database setup and usage guide
- GitHub Issues: https://github.com/loft-sh/devpod/issues
- Discord: DevPod Community Discord
- Stack Overflow: Tag questions with
devpod
# List all workspaces
devpod list
# Get workspace info
devpod describe <workspace-name>
# Start workspace
devpod up <workspace-name>
# Stop workspace
devpod stop <workspace-name>
# Delete workspace
devpod delete <workspace-name>
# View logs
devpod logs <workspace-name>
# SSH into workspace
devpod ssh <workspace-name>This guide covers the essential workflows for using DevPod Desktop with the multi-stack development environment. For project-specific details, refer to individual project README files and the comprehensive DATABASE.md guide.
Happy Coding! 🎉