Backend Complete: Interface Refactoring & Service Container Enhancements
Repository Interface Optimization: - Created IBaseRepository.ts and IPaginatedRepository.ts - Refactored all 7 repository interfaces to extend base interfaces - Eliminated ~200 lines of redundant code (70% reduction) - Improved type safety and maintainability Dependency Injection Improvements: - Added EmailService and GameTokenService to DIContainer - Updated CreateUserCommandHandler constructor for DI - Updated RequestPasswordResetCommandHandler constructor for DI - Enhanced testability and service consistency Environment Configuration: - Created comprehensive .env.example with 40+ variables - Organized into 12 logical sections (Database, Security, Email, etc.) - Added security guidelines and best practices - Documented all backend environment requirements Documentation: - Added comprehensive codebase review - Created refactoring summary report - Added frontend implementation guide Impact: Improved code quality, reduced maintenance overhead, enhanced developer experience
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
#!/bin/bash
|
||||
|
||||
# SerpentRace Development Environment Setup and Management Script
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Functions
|
||||
print_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Check if Docker and Docker Compose are installed
|
||||
check_dependencies() {
|
||||
print_info "Checking dependencies..."
|
||||
|
||||
if ! command -v docker &> /dev/null; then
|
||||
print_error "Docker is not installed. Please install Docker first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v docker-compose &> /dev/null; then
|
||||
print_error "Docker Compose is not installed. Please install Docker Compose first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_info "All dependencies are installed."
|
||||
}
|
||||
|
||||
# Start development environment
|
||||
dev_start() {
|
||||
print_info "Starting SerpentRace development environment..."
|
||||
cd SerpentRace_Docker
|
||||
docker-compose -f docker-compose.dev.yml --env-file .env.dev up --build -d
|
||||
cd ..
|
||||
print_info "Development environment started successfully!"
|
||||
print_info "Services available at:"
|
||||
echo " - Frontend: http://localhost:5173"
|
||||
echo " - Backend API: http://localhost:3000"
|
||||
echo " - PostgreSQL: localhost:5432"
|
||||
echo " - Redis: localhost:6379"
|
||||
echo " - MinIO: http://localhost:9001 (admin: serpentrace / serpentrace123!)"
|
||||
echo " - PgAdmin: http://localhost:8080 (admin@serpentrace.dev / admin)"
|
||||
echo " - Redis Commander: http://localhost:8081"
|
||||
}
|
||||
|
||||
# Start development environment with file watchers
|
||||
dev_watch() {
|
||||
print_info "Starting SerpentRace development environment with file watchers..."
|
||||
print_info "This will automatically sync file changes and rebuild containers as needed"
|
||||
cd SerpentRace_Docker
|
||||
docker-compose -f docker-compose.watch.yml --env-file .env.dev up --build --watch
|
||||
cd ..
|
||||
}
|
||||
|
||||
# Stop development environment
|
||||
dev_stop() {
|
||||
print_info "Stopping SerpentRace development environment..."
|
||||
cd SerpentRace_Docker
|
||||
docker-compose -f docker-compose.dev.yml down
|
||||
cd ..
|
||||
print_info "Development environment stopped."
|
||||
}
|
||||
|
||||
# Start production environment
|
||||
prod_start() {
|
||||
print_warning "Starting SerpentRace production environment..."
|
||||
print_warning "Make sure to update .env.prod with secure values!"
|
||||
cd SerpentRace_Docker
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.prod up --build -d
|
||||
cd ..
|
||||
print_info "Production environment started!"
|
||||
print_info "Services available at:"
|
||||
echo " - Frontend: http://localhost"
|
||||
echo " - Backend API: http://localhost:3000"
|
||||
}
|
||||
|
||||
# Stop production environment
|
||||
prod_stop() {
|
||||
print_info "Stopping SerpentRace production environment..."
|
||||
cd SerpentRace_Docker
|
||||
docker-compose -f docker-compose.prod.yml down
|
||||
cd ..
|
||||
print_info "Production environment stopped."
|
||||
}
|
||||
|
||||
# Show logs
|
||||
show_logs() {
|
||||
local service=$1
|
||||
if [ -z "$service" ]; then
|
||||
print_info "Showing logs for all services..."
|
||||
cd SerpentRace_Docker
|
||||
docker-compose -f docker-compose.dev.yml logs -f
|
||||
cd ..
|
||||
else
|
||||
print_info "Showing logs for $service..."
|
||||
cd SerpentRace_Docker
|
||||
docker-compose -f docker-compose.dev.yml logs -f "$service"
|
||||
cd ..
|
||||
fi
|
||||
}
|
||||
|
||||
# Clean up Docker resources
|
||||
cleanup() {
|
||||
print_warning "Cleaning up Docker resources..."
|
||||
cd SerpentRace_Docker
|
||||
docker-compose -f docker-compose.dev.yml down -v
|
||||
docker-compose -f docker-compose.prod.yml down -v
|
||||
cd ..
|
||||
docker system prune -f
|
||||
print_info "Cleanup completed."
|
||||
}
|
||||
|
||||
# Show help
|
||||
show_help() {
|
||||
echo "SerpentRace Docker Management Script"
|
||||
echo ""
|
||||
echo "Usage: $0 [COMMAND]"
|
||||
echo ""
|
||||
echo "Commands:"
|
||||
echo " dev:start Start development environment with hot reload"
|
||||
echo " dev:watch Start development environment with file watchers (auto-rebuild)"
|
||||
echo " dev:stop Stop development environment"
|
||||
echo " prod:start Start production environment"
|
||||
echo " prod:stop Stop production environment"
|
||||
echo " logs [service] Show logs (optionally for specific service)"
|
||||
echo " cleanup Clean up all Docker resources"
|
||||
echo " help Show this help message"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 dev:start"
|
||||
echo " $0 dev:watch"
|
||||
echo " $0 logs backend"
|
||||
echo " $0 cleanup"
|
||||
}
|
||||
|
||||
# Main script logic
|
||||
case "$1" in
|
||||
"dev:start")
|
||||
check_dependencies
|
||||
dev_start
|
||||
;;
|
||||
"dev:watch")
|
||||
check_dependencies
|
||||
dev_watch
|
||||
;;
|
||||
"dev:stop")
|
||||
dev_stop
|
||||
;;
|
||||
"prod:start")
|
||||
check_dependencies
|
||||
prod_start
|
||||
;;
|
||||
"prod:stop")
|
||||
prod_stop
|
||||
;;
|
||||
"logs")
|
||||
show_logs "$2"
|
||||
;;
|
||||
"cleanup")
|
||||
cleanup
|
||||
;;
|
||||
"help"|*)
|
||||
show_help
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user