Template Code Generator
Generate boilerplate code and complete project skeletons automatically, accelerating development with battle-tested templates.
Quick Start
Generate Complete Projects
React Application:
# Use assets/react-app as template base # Includes: Vite, TypeScript, React Router, standard structure
FastAPI Backend:
# Complete API structure with: # - Route organization # - CRUD patterns # - Database models # - Pydantic schemas
Express/TypeScript API:
# Production-ready structure: # - Controllers/Services pattern # - Middleware setup # - Error handling # - Type safety
See template_patterns.md for complete project structures.
Generate Code Patterns
CRUD Endpoints:
// Generates complete REST endpoints with validation
router.get('/', controller.getAll);
router.post('/', validate(schema), controller.create);
router.put('/:id', validate(schema), controller.update);
router.delete('/:id', controller.delete);
React Components:
// Functional component with TypeScript props
export const ComponentName: React.FC<Props> = ({ prop1, prop2 }) => {
return <div>{/* content */}</div>;
};
See code_patterns.md for all code generation patterns.
Project Templates
Web Applications
React/TypeScript SPA
- •Vite build system
- •React Router setup
- •Custom hooks (useFetch, useAuth)
- •Component structure (common, layout, pages)
- •Type-safe API client
- •Environment configuration
Full-Stack Monorepo
- •Turborepo setup
- •Frontend (React) + Backend (Express/FastAPI)
- •Shared packages (types, utils, UI components)
- •Coordinated build pipeline
Backend Services
FastAPI Application
- •Modular API structure (v1 routing)
- •CRUD base classes
- •Pydantic schemas
- •Database models (SQLAlchemy/Prisma)
- •Dependency injection
- •Authentication/Authorization setup
Express/TypeScript API
- •MVC architecture
- •Service layer pattern
- •Middleware (auth, validation, error handling)
- •TypeORM/Prisma integration
- •Request/response typing
CLI Tools
Python CLI (Click)
- •Command structure
- •Subcommands pattern
- •Configuration management
- •Progress indicators
- •Installation via setuptools
Code Generation Patterns
Classes and Models
TypeScript Interface + Class:
interface User {
id: number;
email: string;
name: string;
}
class UserModel implements User {
constructor(
public id: number,
public email: string,
public name: string
) {}
toJSON(): User {
return { id: this.id, email: this.email, name: this.name };
}
}
Python Dataclass:
@dataclass
class User:
id: int
email: str
name: str
created_at: datetime = field(default_factory=datetime.now)
def to_dict(self) -> dict:
return asdict(self)
API Endpoints
REST CRUD (Express):
class UserController {
async getAll(req: Request, res: Response) {
const users = await userService.findAll();
res.json(users);
}
async create(req: Request, res: Response) {
const user = await userService.create(req.body);
res.status(201).json(user);
}
// ... getById, update, delete
}
FastAPI Endpoints:
@router.get("/", response_model=List[User])
def read_users(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
return crud_user.get_multi(db, skip=skip, limit=limit)
@router.post("/", response_model=User)
def create_user(user_in: UserCreate, db: Session = Depends(get_db)):
return crud_user.create(db, obj_in=user_in)
Components
React Functional Component:
interface ButtonProps {
label: string;
onClick: () => void;
variant?: 'primary' | 'secondary';
}
export const Button: React.FC<ButtonProps> = ({ label, onClick, variant = 'primary' }) => {
return (
<button className={`btn btn-${variant}`} onClick={onClick}>
{label}
</button>
);
};
Custom Hook:
function useLocalStorage<T>(key: string, initialValue: T) {
const [value, setValue] = useState<T>(() => {
const stored = localStorage.getItem(key);
return stored ? JSON.parse(stored) : initialValue;
});
useEffect(() => {
localStorage.setItem(key, JSON.stringify(value));
}, [key, value]);
return [value, setValue] as const;
}
Tests
Jest Test Suite:
describe('UserService', () => {
it('should create user', async () => {
const userData = { email: 'test@example.com', name: 'Test' };
const user = await userService.create(userData);
expect(user.email).toBe(userData.email);
});
it('should throw on duplicate email', async () => {
await expect(userService.create({ email: 'existing@test.com' }))
.rejects.toThrow();
});
});
Pytest Suite:
class TestUserService:
def test_create_user(self, db_session):
user_data = UserCreate(email="test@example.com", name="Test")
user = crud_user.create(db_session, obj_in=user_data)
assert user.email == user_data.email
def test_duplicate_email_raises_error(self, db_session):
with pytest.raises(ValueError):
crud_user.create(db_session, obj_in=duplicate_data)
Generation Workflow
1. Identify Need
Determine what to generate:
- •Complete project: Use project templates
- •Specific pattern: Use code generators
- •Boilerplate: Combine templates + patterns
2. Select Template/Pattern
Choose appropriate template:
- •Frontend: React app template
- •Backend: FastAPI or Express template
- •Full-stack: Monorepo template
- •Code: Specific pattern (CRUD, component, test)
3. Customize
Adapt template to requirements:
- •Replace placeholder names
- •Add/remove features
- •Configure dependencies
- •Update structure
4. Generate
Create the code:
- •Copy template structure
- •Generate code patterns
- •Fill in details
- •Add configurations
5. Verify
Check generated code:
- •Syntax correctness
- •Type safety
- •Dependencies installed
- •Tests passing
Best Practices
1. Follow Project Conventions
Match existing code style:
// Match naming: camelCase, PascalCase, snake_case // Match structure: file organization, folder naming // Match patterns: error handling, validation
2. Include Type Safety
Add type annotations:
// TypeScript
interface Props { ... }
function component(props: Props): JSX.Element { ... }
// Python
def function(param: str) -> dict[str, Any]: ...
3. Generate Tests Alongside Code
Create test boilerplate with implementation:
src/ services/userService.ts tests/ services/userService.test.ts
4. Use Consistent Patterns
Apply same patterns across codebase:
- •Error handling approach
- •Validation strategy
- •Naming conventions
- •File structure
5. Document Generated Code
Add comments explaining:
/**
* UserService handles all user-related operations.
* Uses repository pattern for data access.
*/
export class UserService {
// Implementation
}
Common Scenarios
Scenario 1: New React Component
Request: "Create a UserCard component that displays user info"
Generate:
interface UserCardProps {
user: {
name: string;
email: string;
avatar?: string;
};
onEdit?: () => void;
}
export const UserCard: React.FC<UserCardProps> = ({ user, onEdit }) => {
return (
<div className="user-card">
{user.avatar && <img src={user.avatar} alt={user.name} />}
<h3>{user.name}</h3>
<p>{user.email}</p>
{onEdit && <button onClick={onEdit}>Edit</button>}
</div>
);
};
Scenario 2: CRUD Endpoints
Request: "Generate CRUD endpoints for Product model"
Generate:
- •Routes file with all endpoints
- •Controller with CRUD methods
- •Service layer implementation
- •Validation schemas
- •Test suite
Scenario 3: New Project
Request: "Create a new FastAPI backend with PostgreSQL"
Generate:
- •Complete project structure
- •Database configuration
- •Initial models and schemas
- •CRUD base classes
- •Authentication setup
- •Docker configuration
- •Tests setup
Reference Documentation
Project Templates
See template_patterns.md for:
- •React/TypeScript Application
- •FastAPI Backend
- •Express/TypeScript API
- •Python CLI Tool
- •Full-Stack Monorepo
- •Complete file structures and core files
Code Patterns
See code_patterns.md for:
- •Class generators (TypeScript, Python)
- •API endpoint patterns (REST, GraphQL)
- •Component generators (React, Vue)
- •Test generators (Jest, pytest)
- •Database models (TypeORM, SQLAlchemy)
- •Service classes
- •Middleware patterns
- •Validation schemas (Zod, Pydantic)