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
# Update submodules to latest versions
quark update-submodules
# Show git aliases and help
quark git
# Clean up development environment
quark cleanup
# Non-interactive mode
quark add service-name
quark remove service-name
The 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 update-submodules
# Clean up the development environment
quark cleanup
You can also use non-interactive mode for service management:
quark add service-name
quark remove service-name
The 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 history
Use quark git
to see the complete help with examples.