A comprehensive system for quickly bootstrapping new software development projects with the right structure, documentation, and best practices.
This Project Setup Wizard provides a simple, interactive way to create new software projects with proper structure and documentation. It's designed to:
- โฑ๏ธ Save time setting up new projects
- ๐๏ธ Enforce consistent project structure
- ๐ Generate helpful documentation templates
- ๐ค Provide AI-friendly guidance documents
- ๐งฉ Support different project types (React, Node.js, etc.)
- Clone or download this repository
- Double-click on
start_project_wizard.batto launch the wizard - Follow the interactive prompts to set up your project
- Open the generated project in your favorite IDE
๐ธ Screenshot of the Wizard in Action
The Project Setup Wizard provides an interactive command-line interface to guide you through project creation.
- React TypeScript - Modern frontend applications
- Node.js TypeScript - Backend services and APIs
- Vanilla JavaScript - Simple web projects
- README.md - Project overview and getting started guide
- Project plan - Goals, timeline, and resources
- Requirements document - Functional and non-functional requirements
- Architecture document - System design and components
- AI guidance document - AI-friendly project context (advanced version)
- Organized file structure based on best practices
- Starter components and files
- Proper TypeScript configuration
- Package.json with dependencies and scripts
- Testing setup
- Linting configuration
- CI/CD setup (GitHub Actions)
- Custom project questions
A simpler project generator that creates:
- Basic project structure
- Simple README.md
- Documentation templates
- Standard package.json
A more comprehensive generator that includes:
- Everything from the basic generator
- AI guidance document with detailed project information
- More extensive file structure
- Sample code files
- Proper TypeScript/framework configuration
- Optional CI/CD setup
- Custom project questions
| File | Description |
|---|---|
start_project_wizard.bat |
Main launcher script |
project_setup.bat |
Basic project generator |
project_generator.bat |
Advanced project generator |
template_config.json |
Configuration for project templates |
- Run
start_project_wizard.bat - Choose generator type (Basic or Advanced)
- Enter project name (e.g., "my-react-app")
- Provide project description
- Enter author name
- Select project type (React TypeScript, Node.js, etc.)
- Choose optional features (testing, linting, etc.)
- For advanced generator, answer any custom questions
After completion, you'll have a fully structured project ready for development.
For a React TypeScript project, the following structure is created:
my-react-app/
โโโ README.md
โโโ package.json
โโโ tsconfig.json
โโโ src/
โ โโโ components/ # UI components organized by domain
โ โ โโโ Button.tsx
โ โโโ hooks/ # Custom React hooks
โ โโโ pages/ # Route components
โ โโโ types/ # TypeScript definitions
โ โโโ utils/ # Helper functions
โ โโโ lib/ # Third-party integrations
โ โโโ assets/ # Images, fonts, and other static files
โ โโโ styles/ # Global styles and themes
โโโ docs/
โโโ project_plan.md
โโโ requirements.md
โโโ architecture.md
โโโ ai_guidance.md (advanced version only)
-
Component-Based Architecture
- Build small, focused components (< 300 lines)
- Use composition over inheritance
- One main component per file
-
Type Safety
- Define explicit interfaces for all props
- Use TypeScript features to ensure type safety
- Avoid using
anytype
-
Performance First
- Memoize expensive calculations and callbacks
- Implement virtualization for long lists
- Use React.memo for pure components
| Item | Convention | Example |
|---|---|---|
| Component files | PascalCase | Button.tsx |
| Utility files | camelCase | formatDate.ts |
| CSS modules | kebab-case | button-styles.module.css |
| Component names | PascalCase | UserProfile |
| Functions | camelCase | calculateTotal |
| Constants | UPPER_SNAKE_CASE | MAX_ITEMS |
// Imports
import React from 'react';
import type { ButtonProps } from './types';
// Component interface
interface Props {
label: string;
onClick: () => void;
variant?: 'primary' | 'secondary';
}
// Component definition
export const Button: React.FC<Props> = ({
label,
onClick,
variant = 'primary'
}) => {
// 1. Hooks
const [isHovered, setIsHovered] = useState(false);
// 2. Event handlers
const handleMouseEnter = () => setIsHovered(true);
const handleMouseLeave = () => setIsHovered(false);
// 3. Return JSX
return (
<button
className={`btn btn-${variant}`}
onClick={onClick}
onMouseEnter={handleMouseEnter}
onMouseLeave={handleMouseLeave}
>
{label}
</button>
);
};-
State Management
- Keep state as local as possible
- Use React Query for server state
- Use Context API sparingly
-
Accessibility
- Use semantic HTML elements
- Add proper ARIA attributes
- Ensure keyboard navigation works
- Maintain sufficient color contrast
-
Testing
- Write tests for critical user interactions
- Test component props and state changes
- Place tests next to components (
Component.test.tsx)
- Navigate to your project folder:
cd your-project-name - Open in your IDE:
code . - Install dependencies:
npm install - Start development:
npm start - Review the generated documentation and customize as needed
- Use the AI guidance document when working with AI assistants
The following features could be added to make this system even more powerful:
Version Control Integration
- Git repository initialization
- Initial commit setup
- .gitignore templates for different project types
- GitHub/GitLab repository creation via API (with credentials)
Environment Configuration
- .env file templates with documentation
- Development/production environment setup
- Configuration examples for different environments
Expanded AI Guidance
- AI prompt examples for specific development tasks
- Documentation on how to effectively use AI with the specific project structure
- Sample problem-solution pairs for AI assistance
Component & Design System Integration
- Templates for popular UI libraries (Material UI, Chakra UI, Tailwind CSS)
- Theme configuration
- Sample styled components
API Development Templates
- API documentation templates (Swagger/OpenAPI)
- Example endpoint implementations
- API testing setup
Advanced Testing Setup
- Test examples for each project type (unit, integration, e2e)
- Testing utility functions
- Mock data generation
DevOps and Deployment
- Docker setup (Dockerfile, docker-compose.yml)
- Deployment scripts for various platforms (Vercel, Netlify, AWS)
- Infrastructure-as-code templates
Database Integration
- Database connection templates
- ORM setup (Prisma, TypeORM, Sequelize)
- Migration examples
- Data seeding scripts
Authentication Boilerplate
- Basic authentication flows
- JWT implementation
- Social login setup
State Management Templates
- Redux/Context API setup
- State management patterns
- Store configuration
- After generating your project, open the folder in an AI-enabled editor (such as Cursor)
- Ask the AI to review the AI guidance document in docs/ai_guidance.md
- When developing new features, reference this document to ensure AI guidance aligns with project structure
- Use prompts like:
- "Create a new component following the project's React TypeScript guidelines"
- "Help me implement a feature based on the project requirements document"
- "Review this code against the project's architecture guidelines"
You can modify the templates and configuration in template_config.json to:
- Add new project types
- Change default dependencies
- Update file structure
- Modify documentation templates
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request