226 lines
5.7 KiB
Markdown
226 lines
5.7 KiB
Markdown
# Project Scaffolder Examples
|
|
|
|
Real-world examples of scaffolding production-ready projects with Grey Haven stack.
|
|
|
|
---
|
|
|
|
## Quick Navigation
|
|
|
|
### Scaffold Types
|
|
|
|
| Example | Stack | Time | Files | Description |
|
|
|---------|-------|------|-------|-------------|
|
|
| [Cloudflare Worker API](cloudflare-worker-scaffold-example.md) | Hono + TypeScript + D1 | 15 min | 18 | Production API with auth, logging, tests |
|
|
| [React Component](react-component-scaffold-example.md) | React + TypeScript + Vitest | 5 min | 6 | Reusable component with tests, stories |
|
|
| [Python API](python-api-scaffold-example.md) | FastAPI + Pydantic + PostgreSQL | 20 min | 22 | Async API with validation, migrations |
|
|
| [Full-Stack App](full-stack-scaffold-example.md) | React + Worker + D1 | 30 min | 35 | Complete app with frontend/backend |
|
|
|
|
---
|
|
|
|
## What's Included in Each Example
|
|
|
|
### Structure
|
|
- **Complete file tree** - Every file that gets created
|
|
- **Configuration files** - Package management, tooling, deployment
|
|
- **Source code** - Production-ready starting point
|
|
- **Tests** - Pre-written test suites
|
|
- **Documentation** - README with next steps
|
|
|
|
### Tooling
|
|
- **Type Safety** - TypeScript strict mode, Pydantic validation
|
|
- **Testing** - Vitest for TS/JS, pytest for Python
|
|
- **Linting** - ESLint, Prettier, Ruff
|
|
- **CI/CD** - GitHub Actions workflows
|
|
- **Deployment** - Cloudflare Pages/Workers config
|
|
|
|
---
|
|
|
|
## Scaffold Comparison
|
|
|
|
### When to Use Each
|
|
|
|
| Use Case | Scaffold | Why |
|
|
|----------|----------|-----|
|
|
| **REST API** | Cloudflare Worker | Fast, serverless, global edge deployment |
|
|
| **GraphQL API** | Cloudflare Worker | Hono supports GraphQL, D1 for persistence |
|
|
| **Web App** | Full-Stack | Frontend + backend in monorepo |
|
|
| **Static Site** | React Component | Build with Vite, deploy to Pages |
|
|
| **Background Jobs** | Python API | Long-running tasks, async processing |
|
|
| **Data Pipeline** | Python API | ETL, data validation with Pydantic |
|
|
|
|
---
|
|
|
|
## Quick Reference
|
|
|
|
### Cloudflare Worker API
|
|
```bash
|
|
# Generate
|
|
scaffold-worker --name my-api
|
|
|
|
# Structure
|
|
my-api/
|
|
├── src/
|
|
│ ├── index.ts # Hono app
|
|
│ ├── routes/ # API handlers
|
|
│ └── middleware/ # Auth, CORS
|
|
├── tests/
|
|
├── wrangler.toml
|
|
└── package.json
|
|
|
|
# Deploy
|
|
cd my-api && npm install && npm run deploy
|
|
```
|
|
|
|
### React Component
|
|
```bash
|
|
# Generate
|
|
scaffold-component --name Button --path src/components
|
|
|
|
# Structure
|
|
src/components/Button/
|
|
├── Button.tsx # Implementation
|
|
├── Button.test.tsx # Tests
|
|
├── Button.stories.tsx # Storybook
|
|
└── Button.module.css # Styles
|
|
```
|
|
|
|
### Python API
|
|
```bash
|
|
# Generate
|
|
scaffold-python --name my-api
|
|
|
|
# Structure
|
|
my-api/
|
|
├── app/
|
|
│ ├── main.py # FastAPI
|
|
│ ├── schemas/ # Pydantic
|
|
│ └── models/ # SQLAlchemy
|
|
├── tests/
|
|
├── pyproject.toml
|
|
└── alembic/
|
|
|
|
# Run
|
|
cd my-api && uv venv && uv pip install -e .[dev] && uvicorn app.main:app
|
|
```
|
|
|
|
### Full-Stack App
|
|
```bash
|
|
# Generate
|
|
scaffold-fullstack --name my-app
|
|
|
|
# Structure
|
|
my-app/
|
|
├── frontend/ # React + Vite
|
|
├── backend/ # Worker
|
|
└── docs/
|
|
|
|
# Dev
|
|
cd my-app && npm install && npm run dev
|
|
```
|
|
|
|
---
|
|
|
|
## Common Patterns
|
|
|
|
### All Scaffolds Include
|
|
|
|
**Configuration**:
|
|
- ✅ TypeScript/Python type checking
|
|
- ✅ Linting (ESLint/Ruff)
|
|
- ✅ Formatting (Prettier)
|
|
- ✅ Testing framework
|
|
- ✅ Git ignore rules
|
|
|
|
**Development**:
|
|
- ✅ Local development server
|
|
- ✅ Hot reload
|
|
- ✅ Environment variables
|
|
- ✅ Debug configuration
|
|
|
|
**Production**:
|
|
- ✅ Build optimization
|
|
- ✅ Deployment configuration
|
|
- ✅ Error handling
|
|
- ✅ Logging setup
|
|
|
|
---
|
|
|
|
## Grey Haven Conventions Applied
|
|
|
|
### Naming
|
|
- Components: `PascalCase` (Button, UserProfile)
|
|
- Files: `kebab-case` for routes, `PascalCase` for components
|
|
- Variables: `camelCase` (userId, isActive)
|
|
- Constants: `UPPER_SNAKE_CASE` (API_URL, MAX_RETRIES)
|
|
- Database: `snake_case` (user_profiles, api_keys)
|
|
|
|
### Structure
|
|
```
|
|
src/
|
|
├── routes/ # API endpoints or page routes
|
|
├── components/ # Reusable UI components
|
|
├── services/ # Business logic
|
|
├── utils/ # Pure helper functions
|
|
└── types/ # TypeScript type definitions
|
|
|
|
tests/ # Mirror src/ structure
|
|
├── routes/
|
|
├── components/
|
|
└── services/
|
|
```
|
|
|
|
### Dependencies
|
|
- **Package Manager**: npm (Node.js), uv (Python)
|
|
- **Frontend**: Vite + React + TypeScript + TanStack
|
|
- **Backend**: Cloudflare Workers + Hono
|
|
- **Database**: PlanetScale PostgreSQL
|
|
- **Testing**: Vitest (TS), pytest (Python)
|
|
- **Validation**: Zod (TS), Pydantic (Python)
|
|
|
|
---
|
|
|
|
## Metrics
|
|
|
|
### Scaffold Generation Speed
|
|
|
|
| Scaffold | Files Created | LOC | Time |
|
|
|----------|--------------|-----|------|
|
|
| Cloudflare Worker | 18 | ~450 | 15 min |
|
|
| React Component | 6 | ~120 | 5 min |
|
|
| Python API | 22 | ~600 | 20 min |
|
|
| Full-Stack | 35 | ~850 | 30 min |
|
|
|
|
### Developer Productivity Gains
|
|
|
|
**Before Scaffolding**:
|
|
- Setup time: 2-4 hours
|
|
- Configuration errors: Common
|
|
- Inconsistent structure: Yes
|
|
- Missing best practices: Often
|
|
|
|
**After Scaffolding**:
|
|
- Setup time: 5-30 minutes
|
|
- Configuration errors: Rare
|
|
- Consistent structure: Always
|
|
- Best practices: Built-in
|
|
|
|
**Time Savings**: 80-90% reduction in project setup time
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
After scaffolding:
|
|
|
|
1. **Review generated code** - Understand structure and conventions
|
|
2. **Customize for your needs** - Modify templates, add features
|
|
3. **Run tests** - Verify everything works: `npm test` or `pytest`
|
|
4. **Start development** - Add your business logic
|
|
5. **Deploy** - Use provided deployment configuration
|
|
|
|
---
|
|
|
|
**Total Examples**: 4 complete scaffold types
|
|
**Coverage**: Frontend, backend, full-stack, component
|
|
**Tooling**: Modern Grey Haven stack with best practices
|