Creating New Projects¶
Start a new project from scratch with DevOpsMaestro and get a fully-configured development environment instantly.
Overview¶
When starting a new project with DevOpsMaestro:
- Create your project directory - Standard app setup
- Initialize your codebase - git, language setup, dependencies
- Add to DevOpsMaestro - Track with the hierarchy
- Build & develop - Start coding in a containerized environment
The key advantage: DevOpsMaestro gives you a production-ready development environment from day one, with LSP servers, debuggers, linters, and Neovim configured automatically.
Language-Specific Quickstarts¶
Go API Project¶
Perfect for REST APIs, CLI tools, or microservices:
# 1. Create project directory
mkdir ~/Developer/go-user-api
cd ~/Developer/go-user-api
# 2. Initialize Go module
go mod init github.com/yourorg/go-user-api
# 3. Create your application source files
# (add your own main.go here)
# 4. Add to DevOpsMaestro
dvm admin init # Only needed once per machine
dvm create ecosystem mycompany
dvm create domain backend-services
dvm create app go-user-api --from-cwd --description "User management API"
dvm create workspace dev
# 5. Build and develop
dvm build
dvm attach
# Inside container:
# go run main.go &
# curl http://localhost:8080/users
# nvim main.go # Fully configured with LSP, syntax highlighting, and more!
What you get:
- Go 1.25+ with all standard tools
- gopls LSP server for autocompletion, error detection
- dlv debugger pre-configured
- Pre-configured Neovim with lazyvim structure and "core" plugin package:
- Syntax highlighting (treesitter)
- Fuzzy file finder (telescope)
- LSP support with autocompletion
- Git integration
- Keybinding help system
- Air for hot reloading (if you add it to go.mod)
Python FastAPI Project¶
Perfect for web APIs and data science services:
# 1. Create project directory
mkdir ~/Developer/python-fastapi-app
cd ~/Developer/python-fastapi-app
# 2. Initialize Python project
cat > requirements.txt << 'EOF'
fastapi>=0.100.0
uvicorn[standard]>=0.23.0
pydantic>=2.0.0
EOF
# 3. Create your application source files
# (add your own main.py here)
# 3. Add to DevOpsMaestro
dvm admin init # Only needed once
dvm create ecosystem personal
dvm create domain webapps
dvm create app python-fastapi-app --from-cwd --description "FastAPI web service"
dvm create workspace dev
# 4. Build and develop
dvm build
dvm attach
# Inside container:
# pip install -r requirements.txt
# python main.py &
# curl http://localhost:8000/users
# nvim main.py # Fully configured IDE experience!
What you get:
- Python 3.12+ with pip and venv
- pylsp (Python LSP Server) for autocompletion
- black formatter and flake8 linter
- Pre-configured Neovim with essential IDE features:
- Python syntax highlighting and treesitter
- LSP autocompletion and error detection
- Fuzzy file/content search
- Git integration and status
- FastAPI development server with auto-reload
Node.js/TypeScript Project¶
Perfect for web applications and APIs:
# 1. Create project directory
mkdir ~/Developer/node-typescript-api
cd ~/Developer/node-typescript-api
# 2. Initialize Node.js project
npm init -y
npm install express @types/express typescript ts-node nodemon
npm install --save-dev @types/node
# 3. Setup TypeScript
cat > tsconfig.json << 'EOF'
{
"compilerOptions": {
"target": "ES2022",
"module": "commonjs",
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}
EOF
# 4. Create source structure
mkdir src
# (add your own src/app.ts here)
# 5. Update package.json scripts
npm pkg set scripts.start="node dist/app.js"
npm pkg set scripts.dev="nodemon --exec ts-node src/app.ts"
npm pkg set scripts.build="tsc"
# 6. Add to DevOpsMaestro
dvm admin init
dvm create ecosystem personal
dvm create domain webapps
dvm create app node-typescript-api --from-cwd --description "TypeScript Express API"
dvm create workspace dev
# 7. Build and develop
dvm build
dvm attach
# Inside container:
# npm run dev &
# curl http://localhost:3000/users
# nvim src/app.ts # Complete TypeScript development environment!
What you get:
- Node.js 20+ with npm
- TypeScript compiler and typescript-language-server
- ESLint and Prettier pre-configured
- Complete Neovim IDE with default configuration:
- TypeScript syntax highlighting and intelligence
- LSP autocompletion and error detection
- File navigation and fuzzy finding
- Git integration and blame
- Hot reloading with nodemon
Rust CLI Project¶
Perfect for system tools and high-performance applications:
# 1. Create project with Cargo
cargo new --bin rust-cli-tool
cd rust-cli-tool
# 2. Add dependencies
cat >> Cargo.toml << 'EOF'
[dependencies]
clap = { version = "4.4", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
tokio = { version = "1.0", features = ["full"] }
EOF
# 3. Create your application source files
# (add your own src/main.rs here — cargo new already created a starter)
# 4. Add to DevOpsMaestro
dvm admin init
dvm create ecosystem personal
dvm create domain systems
dvm create app rust-cli-tool --from-cwd --description "High-performance CLI tool"
dvm create workspace dev
# 5. Build and develop
dvm build
dvm attach
# Inside container:
# cargo run -- info
# cargo run -- config --format json
# nvim src/main.rs # Professional Rust development setup!
What you get:
- Rust stable with Cargo
- rust-analyzer LSP server for autocompletion and error detection
- rustfmt formatter and Clippy linter
- Professional Neovim setup with IDE-quality features:
- Rust syntax highlighting with treesitter
- LSP autocompletion and inline diagnostics
- Project-wide fuzzy search and navigation
- Git integration and change tracking
- Debug symbols enabled for gdb/lldb debugging
Project Templates (Future Feature)¶
Coming in v0.13.0
Project templates will allow you to scaffold new projects with pre-configured setups:
# Future syntax
dvm create project my-api --template go-rest-api
dvm create project my-app --template python-fastapi
dvm create project my-tool --template rust-cli
dvm create project my-web --template nextjs-app
Templates will include:
- Language-specific starter code
- Best practice project structure
- CI/CD pipeline configurations
- Testing frameworks pre-configured
- Documentation templates
Advanced Project Setups¶
Microservices Project (Multiple Apps)¶
Set up multiple related services:
# 1. Create ecosystem and domain
dvm create ecosystem ecommerce
dvm create domain backend-services
# 2. Create multiple apps
mkdir ~/Developer/ecommerce && cd ~/Developer/ecommerce
# User service
mkdir user-service && cd user-service
go mod init github.com/ecommerce/user-service
echo 'package main\n\nfunc main() { println("User Service") }' > main.go
dvm create app user-service --from-cwd --description "User management service"
dvm create workspace dev
# Product service
cd .. && mkdir product-service && cd product-service
go mod init github.com/ecommerce/product-service
echo 'package main\n\nfunc main() { println("Product Service") }' > main.go
dvm create app product-service --from-cwd --description "Product catalog service"
dvm create workspace dev
# Order service
cd .. && mkdir order-service && cd order-service
go mod init github.com/ecommerce/order-service
echo 'package main\n\nfunc main() { println("Order Service") }' > main.go
dvm create app order-service --from-cwd --description "Order processing service"
dvm create workspace dev
# 3. View your microservices
dvm get apps
# NAME DOMAIN CREATED
# user-service backend-services 2024-02-19 10:00
# product-service backend-services 2024-02-19 10:01
# order-service backend-services 2024-02-19 10:02
# 4. Work on any service
dvm use app user-service
dvm build && dvm attach
Full-Stack Project (Multiple Domains)¶
Set up frontend and backend together:
# 1. Create ecosystem
dvm create ecosystem myapp
# 2. Create backend domain and app
dvm create domain backend
mkdir ~/Developer/myapp-backend && cd ~/Developer/myapp-backend
go mod init github.com/myorg/myapp-backend
echo 'package main\n\nfunc main() { println("Backend API") }' > main.go
dvm create app myapp-backend --from-cwd --description "REST API backend"
dvm create workspace dev
# 3. Create frontend domain and app
dvm create domain frontend
mkdir ~/Developer/myapp-frontend && cd ~/Developer/myapp-frontend
npm init -y && npm install react typescript @types/react
dvm create app myapp-frontend --from-cwd --description "React frontend"
dvm create workspace dev
# 4. Switch between frontend and backend
dvm use domain backend && dvm use app myapp-backend
dvm build && dvm attach # Go development environment
# In another terminal:
dvm use domain frontend && dvm use app myapp-frontend
dvm build && dvm attach # Node.js/React development environment
Project Organization Best Practices¶
Naming Conventions¶
Workspace Strategies¶
Create workspaces that match your development workflow:
# By purpose
dvm create workspace dev --description "Main development"
dvm create workspace test --description "Running test suites"
dvm create workspace debug --description "Debugging issues"
dvm create workspace demo --description "Demo preparation"
# By feature branch
dvm create workspace feature-auth --description "Authentication feature"
dvm create workspace feature-payments --description "Payment integration"
dvm create workspace hotfix-security --description "Security patch"
# By environment
dvm create workspace local-dev --description "Local development"
dvm create workspace integration --description "Integration testing"
dvm create workspace perf-testing --description "Performance testing"
Adding Descriptions¶
Always add descriptions to make your project discoverable:
# Good descriptions
dvm create app user-management-api --from-cwd \
--description "REST API for user authentication and profile management"
dvm create app data-processor --from-cwd \
--description "ETL pipeline for processing customer analytics data"
# View descriptions
dvm get apps -o yaml # Shows descriptions in YAML output
Development Workflow Examples¶
Typical Day with New Project¶
# Morning: Start new feature
dvm use app my-project
dvm create workspace feature-notifications --description "Push notification system"
dvm use workspace feature-notifications
dvm build
dvm attach
# Inside container: Work on code
git checkout -b feature/push-notifications
nvim src/notifications.py # Full LSP support
python -m pytest tests/ # Run tests
# Exit container when done
exit
# Evening: Switch back to main development
dvm use workspace dev
dvm attach
Code Review Workflow¶
# Reviewer: Pull down PR branch in separate workspace
cd ~/Developer/team-project
git fetch origin pull/123/head:pr-123
git checkout pr-123
dvm create workspace review-pr-123 --description "Code review for PR #123"
dvm use workspace review-pr-123
dvm build && dvm attach
# Review code in isolation with fresh environment
nvim src/new-feature.py
python -m pytest tests/test_new_feature.py
# Clean up when done
exit
dvm delete workspace review-pr-123
Troubleshooting New Projects¶
Language Not Detected¶
# Check what dvm detected
dvm build --verbose
# Force language detection by creating proper files
# For Python: requirements.txt or pyproject.toml
# For Node.js: package.json
# For Go: go.mod
# For Rust: Cargo.toml
Missing Dependencies¶
# Add dependencies before building
# Go example:
go mod tidy
# Python example:
echo "fastapi>=0.100.0" >> requirements.txt
# Node.js example:
npm install express
# Then rebuild
dvm rebuild
Port Conflicts¶
# Check what's running
dvm get workspaces # Shows container status
# Kill conflicting containers
dvm detach # Exit current
docker ps # Check Docker containers
docker stop <id> # Stop conflicting container
Next Steps¶
After creating your project:
- Build & Attach Guide - Learn container lifecycle management
- Workspace Configuration - Customize your development environment
- Theme System - Set up visual themes that match your preferences
- Plugin Management - Add Neovim plugins for your language
- CI/CD Integration - Use DevOpsMaestro in your deployment pipeline
Cheat Sheet for New Projects¶
# Quick Go API
mkdir go-api && cd go-api && go mod init app
dvm create eco personal && dvm create dom apis && dvm create a go-api --from-cwd && dvm create ws dev
dvm build && dvm attach
# Quick Python Web App
mkdir python-web && cd python-web && echo "fastapi>=0.100.0" > requirements.txt
dvm create eco personal && dvm create dom web && dvm create a python-web --from-cwd && dvm create ws dev
dvm build && dvm attach
# Quick Node.js App
mkdir node-app && cd node-app && npm init -y && npm install express
dvm create eco personal && dvm create dom web && dvm create a node-app --from-cwd && dvm create ws dev
dvm build && dvm attach
# Quick Rust Tool
cargo new rust-tool && cd rust-tool
dvm create eco personal && dvm create dom tools && dvm create a rust-tool --from-cwd && dvm create ws dev
dvm build && dvm attach