v0.3.9 - nself-org/cli GitHub Wiki
Release Date: December 2024
Type: Feature Enhancement Release
Status: π§ In Development
nself v0.3.9 enhances the development experience with a powerful custom services framework, frontend application support, and improved environment management. This release focuses on flexibility and ease of configuration for multi-service applications.
-
Simplified service definition with
CS_N=name,framework[,port][,route]format - Supported frameworks: js, py, go, rb, php, rust, flask (with working templates)
- Framework aliases: nodejsβjs, pythonβpy, golangβgo for convenience
- Complete hello-world templates for each supported framework
- Auto-generated docker-compose.custom.yml for all custom services
-
Advanced configuration options:
- Resource limits (memory, CPU)
- Database table prefixes
- Custom routing and ports
- Health check endpoints
- Environment variables
- FRONTEND_APPS configuration for SPAs and frontend projects
-
Format:
"name:short:prefix:port"for each app - Development routing via subdomains
- Production domain overrides per app
- Database isolation with table prefixes
- Nginx configuration with SSL and CORS headers
- Configuration export for backend services
-
Multi-environment support:
-
.env.local- Personal development settings -
.env.dev- Team development defaults -
.env.staging- Staging configuration -
.env.prod- Production configuration -
.env.secrets- Sensitive data (git-ignored)
-
- Proper loading precedence with environment-aware logic
- File permission validation for .env.secrets
- Environment compilation for different stages
- Smart service detection for CS_N and legacy formats
- Template-based service generation
- Automatic nginx routing configuration
- Frontend app configuration generation
- Better error handling and progress reporting
# Build now handles CS_N services and FRONTEND_APPS
nself build # Generates custom services and frontend configs
# Status recognizes custom services
nself status # Shows CS_N service status
# Init with multi-environment support
nself init # Creates .env.local, .env.dev, .env.staging, .env.prod templatesnself email setup # Configure email providers
nself email validate # Check configuration
nself email test # Test email (development only)Note: Production email sending requires integration with auth service.
The CS_N pattern provides a clean way to define backend services:
# Basic service
CS_1=api,js,3000
# Advanced configuration
CS_1_PORT=3000
CS_1_ROUTE=api.localhost
CS_1_MEMORY=512M
CS_1_TABLE_PREFIX=api_
CS_1_PUBLIC=true
CS_1_HEALTHCHECK=/healthFrontend apps are configured with routing and database isolation:
FRONTEND_APPS="dashboard:dash:dsh_:3000,store:shop:shp_:3001"
DASHBOARD_PROD_ROUTE="dashboard.myapp.com"
STORE_PROD_ROUTE="shop.myapp.com"Working templates are provided for:
- js - Node.js with Express
- py - Python with FastAPI
- go - Go with Gin
- rb - Ruby with Sinatra
- php - PHP with Slim
- rs - Rust with Actix
- flask - Python with Flask
Each template includes:
- Dockerfile
- Main application file
- Dependencies file
- Health check endpoint
Custom Services:
CS_1=api,js # Service definition
CS_1_PORT=3000 # Port mapping
CS_1_ROUTE=api.localhost # Domain routing
CS_1_MEMORY=512M # Memory limit
CS_1_TABLE_PREFIX=api_ # Database prefixFrontend Applications:
FRONTEND_APPS="app:short:prefix:port,..."
APP_PROD_ROUTE="app.domain.com"nself v0.3.9 is fully backward compatible with v0.3.8 projects:
- All existing functionality remains unchanged
- New features are opt-in
- Existing
.env.localfiles continue to work - Legacy CUSTOM_SERVICES format still supported
To upgrade:
nself updateTo use new features:
# Add CS_N services to .env.local
CS_1=myservice,js,8001
# Add frontend apps
FRONTEND_APPS="myapp:app:app_:3000"
# Rebuild
nself build- Better error messages with actionable fixes
- Progress indicators for long operations
- Automatic framework detection for templates
- Framework aliases for common naming
- Service status integration for CS_N services
- File permission checking for .env.secrets
- Environment-based secret management
- Secure defaults for production environments
- Git-ignore patterns for sensitive files
- Modular service builder (service-builder-v2.sh)
- Consistent environment loading across commands
- Better test coverage with corrected paths
- Documentation accuracy improvements
New Projects:
mkdir myproject && cd myproject
nself init # Create environment files
# Edit .env.local to add CS_N services and FRONTEND_APPS
nself build # Generate infrastructure
nself start # Launch all servicesAdding Custom Services:
# Edit .env.local
CS_1=api,nest,3000,api.localhost
CS_2=worker,bullmq
# Rebuild and start
nself build
nself restartAdding Frontend Apps:
# Edit .env.local
FRONTEND_APPS="dashboard:dash:dsh_:3000"
# Rebuild
nself build- Commands Reference - Complete command documentation
- Environment Configuration - Environment setup guide
- Architecture - System architecture overview
- Troubleshooting - Common issues and solutions
- Email sending - Only development (MailPit) implemented, production requires auth service integration
- Init wizard - Basic implementation only, advanced wizard features planned for v0.4.0
- MLflow - Configuration present but requires external MLflow server
Planned features for the next release:
- Complete admin UI implementation
- Enterprise search integration
- VPS deployment automation
- Enhanced init wizard with project detection
- Production email service integration
- Service discovery and mesh networking
nself v0.3.9 delivers a solid foundation for multi-service application development with the CS_N pattern and frontend app support. The focus on actual working features ensures reliability while maintaining backward compatibility.
For questions or issues, visit our GitHub repository.