@re-shell/cli
Version:
Full-stack development platform uniting microservices and microfrontends. Build complete applications with .NET (ASP.NET Core Web API, Minimal API), Java (Spring Boot, Quarkus, Micronaut, Vert.x), Rust (Actix-Web, Warp, Rocket, Axum), Python (FastAPI, Dja
111 lines (110 loc) • 4 kB
TypeScript
/**
* Shared Backend Template Generator System
* Provides unified architecture for all backend framework templates
*/
import { ConfigTemplateEngine } from '../../../utils/template-engine';
export interface BackendTemplateConfig {
language: string;
framework: string;
packageManager: string;
buildTool?: string;
testFramework: string;
orm?: string;
features: string[];
dependencies: Record<string, string>;
devDependencies: Record<string, string>;
scripts: Record<string, string>;
dockerConfig?: DockerConfig;
envVars?: Record<string, string>;
}
export interface DockerConfig {
baseImage: string;
workDir: string;
exposedPorts: number[];
buildSteps: string[];
runCommand: string;
multistage?: boolean;
}
export declare abstract class BackendTemplateGenerator {
protected templateEngine: ConfigTemplateEngine;
protected config: BackendTemplateConfig;
constructor(config: BackendTemplateConfig);
/**
* Generate complete backend project structure
*/
generate(projectPath: string, options: any): Promise<void>;
/**
* Create standard directory structure
*/
protected createDirectoryStructure(projectPath: string): Promise<void>;
/**
* Generate common files across all backends
*/
protected generateCommonFiles(projectPath: string, options: any): Promise<void>;
/**
* Generate .gitignore with language-specific patterns
*/
protected generateGitignore(projectPath: string): Promise<void>;
/**
* Generate comprehensive README
*/
protected generateReadme(projectPath: string, options: any): Promise<void>;
/**
* Generate environment files
*/
protected generateEnvFiles(projectPath: string): Promise<void>;
/**
* Generate CI/CD workflows
*/
protected generateCICD(projectPath: string): Promise<void>;
protected abstract generateLanguageFiles(projectPath: string, options: any): Promise<void>;
protected abstract generateFrameworkFiles(projectPath: string, options: any): Promise<void>;
protected abstract generateTestStructure(projectPath: string, options: any): Promise<void>;
protected abstract generateHealthCheck(projectPath: string): Promise<void>;
protected abstract generateAPIDocs(projectPath: string): Promise<void>;
protected abstract generateDockerFiles(projectPath: string, options: any): Promise<void>;
protected abstract generateDocumentation(projectPath: string, options: any): Promise<void>;
protected abstract getLanguageSpecificIgnorePatterns(): string[];
protected abstract getLanguagePrerequisites(): string;
protected abstract getInstallCommand(): string;
protected abstract getDevCommand(): string;
protected abstract getProdCommand(): string;
protected abstract getTestCommand(): string;
protected abstract getCoverageCommand(): string;
protected abstract getLintCommand(): string;
protected abstract getBuildCommand(): string;
protected abstract getSetupAction(): string;
}
/**
* Common utilities for all backend templates
*/
export declare class BackendTemplateUtils {
/**
* Generate JWT authentication middleware
*/
static generateJWTAuth(language: string): string;
/**
* Generate rate limiting middleware
*/
static generateRateLimit(language: string): string;
/**
* Generate logging configuration
*/
static generateLogging(language: string): string;
/**
* Generate database configuration
*/
static generateDatabaseConfig(language: string, orm: string): string;
/**
* Generate OpenAPI/Swagger documentation
*/
static generateOpenAPISpec(framework: string): string;
/**
* Generate health check endpoint
*/
static generateHealthEndpoint(language: string, framework: string): string;
/**
* Generate Docker configuration
*/
static generateDockerfile(config: DockerConfig): string;
}