Environment Setup Guide
Overview
Help developers set up complete development environments from scratch. This skill provides step-by-step guidance for installing tools, configuring dependencies, setting up environment variables, and verifying the setup works correctly.
When to Use This Skill
- •Use when starting a new project and need to set up the development environment
- •Use when onboarding new team members to a project
- •Use when switching to a new machine or operating system
- •Use when troubleshooting environment-related issues
- •Use when documenting setup instructions for a project
- •Use when creating development environment documentation
How It Works
Step 1: Identify Requirements
I'll help you determine what needs to be installed:
- •Programming language and version (Node.js, Python, Go, etc.)
- •Package managers (npm, pip, cargo, etc.)
- •Database systems (PostgreSQL, MongoDB, Redis, etc.)
- •Development tools (Git, Docker, IDE extensions, etc.)
- •Environment variables and configuration files
Step 2: Check Current Setup
Before installing anything, I'll help you check what's already installed:
# Check versions of installed tools node --version python --version git --version docker --version
Step 3: Provide Installation Instructions
I'll give platform-specific installation commands:
- •macOS: Using Homebrew
- •Linux: Using apt, yum, or package manager
- •Windows: Using Chocolatey, Scoop, or direct installers
Step 4: Configure the Environment
Help set up:
- •Environment variables (.env files)
- •Configuration files (.gitconfig, .npmrc, etc.)
- •IDE settings (VS Code, IntelliJ, etc.)
- •Shell configuration (.bashrc, .zshrc, etc.)
Step 5: Verify Installation
Provide verification steps to ensure everything works:
- •Run version checks
- •Test basic commands
- •Verify database connections
- •Check environment variables are loaded
Examples
Example 1: Node.js Project Setup
## Setting Up Node.js Development Environment
### Prerequisites
- macOS, Linux, or Windows
- Terminal/Command Prompt access
- Internet connection
### Step 1: Install Node.js
**macOS (using Homebrew):**
\`\`\`bash
# Install Homebrew if not installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Node.js
brew install node
\`\`\`
**Linux (Ubuntu/Debian):**
\`\`\`bash
# Update package list
sudo apt update
# Install Node.js and npm
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
\`\`\`
**Windows (using Chocolatey):**
\`\`\`powershell
# Install Chocolatey if not installed
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# Install Node.js
choco install nodejs
\`\`\`
### Step 2: Verify Installation
\`\`\`bash
node --version # Should show v20.x.x or higher
npm --version # Should show 10.x.x or higher
\`\`\`
### Step 3: Install Project Dependencies
\`\`\`bash
# Clone the repository
git clone https://github.com/your-repo/project.git
cd project
# Install dependencies
npm install
\`\`\`
### Step 4: Set Up Environment Variables
Create a \`.env\` file:
\`\`\`bash
# Copy example environment file
cp .env.example .env
# Edit with your values
nano .env
\`\`\`
Example \`.env\` content:
\`\`\`
NODE_ENV=development
PORT=3000
DATABASE_URL=postgresql://localhost:5432/mydb
API_KEY=your-api-key-here
\`\`\`
### Step 5: Run the Project
\`\`\`bash
# Start development server
npm run dev
# Should see: Server running on http://localhost:3000
\`\`\`
### Troubleshooting
**Problem:** "node: command not found"
**Solution:** Restart your terminal or run \`source ~/.bashrc\` (Linux) or \`source ~/.zshrc\` (macOS)
**Problem:** "Permission denied" errors
**Solution:** Don't use sudo with npm. Fix permissions:
\`\`\`bash
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
\`\`\`
Example 2: Python Project Setup
## Setting Up Python Development Environment ### Step 1: Install Python **macOS:** \`\`\`bash brew install python@3.11 \`\`\` **Linux:** \`\`\`bash sudo apt update sudo apt install python3.11 python3.11-venv python3-pip \`\`\` **Windows:** \`\`\`powershell choco install python --version=3.11 \`\`\` ### Step 2: Verify Installation \`\`\`bash python3 --version # Should show Python 3.11.x pip3 --version # Should show pip 23.x.x \`\`\` ### Step 3: Create Virtual Environment \`\`\`bash # Navigate to project directory cd my-project # Create virtual environment python3 -m venv venv # Activate virtual environment # macOS/Linux: source venv/bin/activate # Windows: venv\Scripts\activate \`\`\` ### Step 4: Install Dependencies \`\`\`bash # Install from requirements.txt pip install -r requirements.txt # Or install packages individually pip install flask sqlalchemy python-dotenv \`\`\` ### Step 5: Set Up Environment Variables Create \`.env\` file: \`\`\` FLASK_APP=app.py FLASK_ENV=development DATABASE_URL=sqlite:///app.db SECRET_KEY=your-secret-key-here \`\`\` ### Step 6: Run the Application \`\`\`bash # Run Flask app flask run # Should see: Running on http://127.0.0.1:5000 \`\`\`
Example 3: Docker Development Environment
## Setting Up Docker Development Environment
### Step 1: Install Docker
**macOS:**
\`\`\`bash
brew install --cask docker
# Or download Docker Desktop from docker.com
\`\`\`
**Linux:**
\`\`\`bash
# Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Add user to docker group
sudo usermod -aG docker $USER
newgrp docker
\`\`\`
**Windows:**
Download Docker Desktop from docker.com
### Step 2: Verify Installation
\`\`\`bash
docker --version # Should show Docker version 24.x.x
docker-compose --version # Should show Docker Compose version 2.x.x
\`\`\`
### Step 3: Create docker-compose.yml
\`\`\`yaml
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=development
- DATABASE_URL=postgresql://postgres:password@db:5432/mydb
volumes:
- .:/app
- /app/node_modules
depends_on:
- db
db:
image: postgres:15
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
- POSTGRES_DB=mydb
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
\`\`\`
### Step 4: Start Services
\`\`\`bash
# Build and start containers
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
\`\`\`
### Step 5: Verify Services
\`\`\`bash
# Check running containers
docker ps
# Test database connection
docker-compose exec db psql -U postgres -d mydb
\`\`\`
Best Practices
✅ Do This
- •Document Everything - Write clear setup instructions
- •Use Version Managers - nvm for Node, pyenv for Python
- •Create .env.example - Show required environment variables
- •Test on Clean System - Verify instructions work from scratch
- •Include Troubleshooting - Document common issues and solutions
- •Use Docker - For consistent environments across machines
- •Pin Versions - Specify exact versions in package files
- •Automate Setup - Create setup scripts when possible
- •Check Prerequisites - List required tools before starting
- •Provide Verification Steps - Help users confirm setup works
❌ Don't Do This
- •Don't Assume Tools Installed - Always check and provide install instructions
- •Don't Skip Environment Variables - Document all required variables
- •Don't Use Sudo with npm - Fix permissions instead
- •Don't Forget Platform Differences - Provide OS-specific instructions
- •Don't Leave Out Verification - Always include test steps
- •Don't Use Global Installs - Prefer local/virtual environments
- •Don't Ignore Errors - Document how to handle common errors
- •Don't Skip Database Setup - Include database initialization steps
Common Pitfalls
Problem: "Command not found" after installation
Symptoms: Installed tool but terminal doesn't recognize it Solution:
- •Restart terminal or source shell config
- •Check PATH environment variable
- •Verify installation location
# Check PATH echo $PATH # Add to PATH (example) export PATH="/usr/local/bin:$PATH"
Problem: Permission errors with npm/pip
Symptoms: "EACCES" or "Permission denied" errors Solution:
- •Don't use sudo
- •Fix npm permissions or use nvm
- •Use virtual environments for Python
# Fix npm permissions mkdir ~/.npm-global npm config set prefix '~/.npm-global' echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
Problem: Port already in use
Symptoms: "Port 3000 is already in use" Solution:
- •Find and kill process using the port
- •Use a different port
# Find process on port 3000 lsof -i :3000 # Kill process kill -9 <PID> # Or use different port PORT=3001 npm start
Problem: Database connection fails
Symptoms: "Connection refused" or "Authentication failed" Solution:
- •Verify database is running
- •Check connection string
- •Verify credentials
# Check if PostgreSQL is running sudo systemctl status postgresql # Test connection psql -h localhost -U postgres -d mydb
Setup Script Template
Create a setup.sh script to automate setup:
#!/bin/bash
echo "🚀 Setting up development environment..."
# Check prerequisites
command -v node >/dev/null 2>&1 || { echo "❌ Node.js not installed"; exit 1; }
command -v git >/dev/null 2>&1 || { echo "❌ Git not installed"; exit 1; }
echo "✅ Prerequisites check passed"
# Install dependencies
echo "📦 Installing dependencies..."
npm install
# Copy environment file
if [ ! -f .env ]; then
echo "📝 Creating .env file..."
cp .env.example .env
echo "⚠️ Please edit .env with your configuration"
fi
# Run database migrations
echo "🗄️ Running database migrations..."
npm run migrate
# Verify setup
echo "🔍 Verifying setup..."
npm run test:setup
echo "✅ Setup complete! Run 'npm run dev' to start"
Related Skills
- •
@brainstorming- Plan environment requirements before setup - •
@systematic-debugging- Debug environment issues - •
@doc-coauthoring- Create setup documentation - •
@git-pushing- Set up Git configuration
Additional Resources
- •Node.js Installation Guide
- •Python Virtual Environments
- •Docker Documentation
- •Homebrew (macOS)
- •Chocolatey (Windows)
- •nvm (Node Version Manager)
- •pyenv (Python Version Manager)
Pro Tip: Create a setup.sh or setup.ps1 script to automate the entire setup process. Test it on a clean system to ensure it works!
🏰 Rei Skills — Curated by Rootcastle Engineering & Innovation | Batuhan Ayrıbaş
Engineering Beyond Boundaries | admin@rootcastle.com