This repository contains tools and configurations for easily setting up a development environment for Quark services.
This project uses VS Code's Dev Containers for development. All required tools and dependencies are automatically installed in the container.
- Install VS Code
- Install the Dev Containers extension
- Clone this repository
- Open in VS Code and click "Reopen in Container" when prompted
The development container includes all necessary tools:
- Deno runtime
- Kubernetes tools (kubectl, k3d)
- Git and development utilities
- All required VS Code extensions
# Show help
quark
# Setup development environment (interactive)
quark setup
# Add local services (interactive)
quark add
# Remove local services (interactive)
quark remove
# Start configured local services
quark start
# Show service environment variables
quark env [service-name]
# Clean up development environment
quark cleanup
# Non-interactive mode
quark add service-nameInstead of running the full setup command, you can run individual modules separately. This is useful when you want to:
- Only update repositories without reconfiguring the cluster
- Apply new service configurations without re-cloning repos
- Update the workspace configuration after adding new services
- Selectively run parts of the setup process
# Fetch/clone repositories for selected services
quark repos
# Setup Kubernetes cluster configuration
quark cluster
# Update service configurations and manifests
quark configs
# Create/update VS Code workspace configuration
quark workspace
# Update all submodules to their latest versions
quark submodules# Validate current environment configuration
quark check
# Show git aliases and help
quark git
# Clear GPG key to free it for use in VS Code commits
quark signquark add service-name
quark remove service-name
quark env service-nameThe quark command is automatically available in the dev container. All dependencies and tools are pre-installed and configured for you.
The environment provides several developer-focused features:
- 
Automatic Git Setup: - Git user configuration
- SSH key authentication
- GPG signing configuration
- Useful git aliases (git st,git co,git pushf, etc.)
- GitHub CLI integration
 
- 
VS Code Integration: - Automatic workspace configuration
- Recommended extensions
- Debug configurations
- File exclusion patterns
 
- 
Development Tooling: - Hot reload for local development
- Automatic service dependency resolution
- Submodule management
- Service health monitoring
 
- 
Flexible Configuration: - Multiple development profiles
- Custom service selection
- Local or remote cluster support
- Environment variable management
 
- 
Debug Support: - Port forwarding for remote debugging
- Log aggregation across services
- Kubernetes integration
- Local development shortcuts
 
The setup will guide you through:
- Choosing between local (k3d) or remote cluster
- Selecting services to run
- Cloning required repositories
- Configuring services for local development
When setting up the environment (quark setup), you'll be guided through:
- Selecting a development profile or custom service selection
- Choosing between local (k3d) or remote cluster
- Updating submodules (predefined configs) if updates are available
- Setting up the kubernetes cluster
- Cloning required service repositories
- Creating a VS Code workspace configuration
The setup process will:
- Configure the kubernetes cluster (local or remote)
- Set up all required infrastructure services
- Clone and configure service repositories
- Mount local code into the cluster for development
- Set up all necessary development dependencies
The environment comes with several pre-configured development profiles:
- Webhook Development: Services for webhook development
- Bot Development: Services for bot development
- Website Development: Website services for frontend development
- Gateway Development: Gateway services for API development
- Helper Development: Helper bot development environment
- Full Stack Development: Complete development environment with all core services
You can also create custom configurations by selecting individual services during setup.
The environment provides several commands for managing your local development:
# Add services to local development (interactive)
quark add
# Remove services from local development (interactive)
quark remove
# Start all configured local services
quark start
# Update submodules to latest versions
quark submodules
# Clean up the development environment
quark cleanupYou can also use non-interactive mode for service management:
quark add service-name
quark remove service-nameThe tool uses k3d/k3s to create and manage a local Kubernetes cluster. It:
- Automatically sets up required k3d cluster resources
- Configures node labels and taints for proper scheduling
- Sets up volume mounts for persistent storage
- Configures networking for service access
The tool automatically handles all service dependencies:
- Core infrastructure services (Redis, MySQL, NATS, etc.)
- Required supporting services and configurations
- Network and storage configuration
- Service interconnections and environment variables
The environment is organized into four main service groups:
Infrastructure services that support all other components:
- Redis
- MySQL
- NATS
- Elastic Search
- Aerospike
Main application components:
- Bot (Discord bot)
- Gateway (API Gateway)
- Gluon Cache
- Helper / Helper v2
- Quark Subscriptions
- Asset Storage
- Temp Storage
Frontend and web-related services:
- Website
- Website Realtime
- Commands Webserver
- Status Page
- Blog
- Documentation
Development and administrative tools:
- Database Tools
- Webhook Services
- Register Emojis
- Workers
- K8s Health Check
The development container automatically configures Git with useful aliases and settings.
The container includes helpful git aliases:
git st        # git status
git co        # git checkout
git br        # git branch
git ci        # git commit
git unstage   # remove from staging (keeps changes)
git pushf     # safe force push
git graph     # visual commit historyUse quark git to see the complete help with examples.