Files
project-bootstrap/USAGE.md
Bill 8dd4f0ca63 Initial commit: Complete project-bootstrap tool
- Bootstrap script for creating monorepo projects
- FastAPI backend templates with uv, ruff, mypy, pytest
- React frontend templates with TypeScript, ESLint, Prettier
- Docker Compose setup with backend, frontend, and database
- 9 development and CI scripts
- Gitea Actions CI/CD workflows
- Comprehensive documentation (8 files)
- 45 template files for complete project structure
- Automated verification script (all tests pass)
- Based on coding-agent-rules standards
2025-10-15 21:34:08 -04:00

352 lines
6.9 KiB
Markdown

# Bootstrap Usage Guide
## Creating a New Project
### Basic Usage
```bash
./bootstrap.sh my-awesome-project
```
This will:
1. Create the complete directory structure
2. Copy all template files
3. Create Python `__init__.py` files
4. Initialize a git repository
5. Make an initial commit
### Without Git Initialization
```bash
./bootstrap.sh my-awesome-project --no-git
```
## What Gets Created
### Directory Structure
```
my-awesome-project/
├── backend/ # FastAPI backend
├── frontend/ # React frontend
├── deploy/ # Docker & deployment
├── scripts/ # Development & CI scripts
├── docs/ # Documentation
└── .gitea/ # CI workflows
```
### Configuration Files
- **Backend**: `pyproject.toml`, `.env.example`
- **Frontend**: `package.json`, `tsconfig.json`, `.eslintrc.json`, `.prettierrc.json`
- **Docker**: `compose.yml`, Dockerfiles
- **Git**: `.gitignore`
### Scripts
All scripts are executable and ready to use:
- `scripts/dev/start-backend.sh` - Start backend server
- `scripts/dev/start-frontend.sh` - Start frontend server
- `scripts/dev/start-database.sh` - Start database
- `scripts/dev/reset-database.sh` - Reset database
- `scripts/utils/lint-backend.sh` - Lint backend
- `scripts/utils/lint-frontend.sh` - Lint frontend
- `scripts/utils/format-all.sh` - Format all code
- `scripts/ci/backend-test.sh` - Run backend CI tests
- `scripts/ci/frontend-test.sh` - Run frontend CI tests
## After Bootstrap
### Step 1: Navigate to Your Project
```bash
cd my-awesome-project
```
### Step 2: Choose Your Development Method
#### Option A: Docker Compose (Recommended for Full Stack)
```bash
# Start all services
docker compose -f deploy/compose.yml up
# Or in detached mode
docker compose -f deploy/compose.yml up -d
# View logs
docker compose -f deploy/compose.yml logs -f
# Stop services
docker compose -f deploy/compose.yml down
```
#### Option B: Local Development
**Backend:**
```bash
cd backend
cp .env.example .env
# Edit .env as needed
uv sync
uv run uvicorn app.main:app --reload
```
**Frontend:**
```bash
cd frontend
cp .env.example .env
# Edit .env as needed
npm install
npm start
```
**Database (if needed):**
```bash
bash scripts/dev/start-database.sh
```
### Step 3: Verify Installation
**Backend:**
- API: http://localhost:8000
- Docs: http://localhost:8000/docs
- Health: http://localhost:8000/health
**Frontend:**
- App: http://localhost:3000
### Step 4: Run Tests
**Backend:**
```bash
cd backend
uv run pytest --cov=app --cov-report=term-missing
```
**Frontend:**
```bash
cd frontend
npm test
```
### Step 5: Code Quality Checks
**Lint:**
```bash
bash scripts/utils/lint-backend.sh
bash scripts/utils/lint-frontend.sh
```
**Format:**
```bash
bash scripts/utils/format-all.sh
```
## Customization Checklist
After creating your project, customize these files:
### Essential
- [ ] `README.md` - Update with your project details
- [ ] `LICENSE` - Add your name and year
- [ ] `backend/pyproject.toml` - Update name and description
- [ ] `frontend/package.json` - Update name and description
- [ ] `backend/.env` - Configure environment variables
- [ ] `frontend/.env` - Configure environment variables
- [ ] `deploy/.env` - Configure deployment variables
### Optional
- [ ] `docs/api/README.md` - Document your API endpoints
- [ ] `docs/architecture/README.md` - Add architecture diagrams
- [ ] `docs/user-guide/README.md` - Write user documentation
- [ ] `.gitea/workflows/` - Customize CI/CD workflows
## Development Workflow
### Adding a New Backend Endpoint
1. Create route in `backend/app/api/`
2. Add business logic in `backend/app/services/`
3. Define schemas in `backend/app/schemas/`
4. Write tests in `backend/tests/`
5. Run tests: `uv run pytest`
6. Check coverage: Must be 100%
### Adding a New Frontend Component
1. Create component in `frontend/src/components/`
2. Add styles in `frontend/src/styles/`
3. Write tests in `frontend/tests/components/`
4. Run tests: `npm test`
5. Check coverage: Should be ≥90%
### Adding a Database Model
1. Create model in `backend/app/db/models/`
2. Update database session in `backend/app/db/session.py`
3. Add migration script (if using Alembic)
4. Write tests in `backend/tests/unit/test_db/test_models/`
## Common Tasks
### Reset Everything
```bash
# Stop all containers
docker compose -f deploy/compose.yml down
# Remove volumes
docker compose -f deploy/compose.yml down -v
# Clean up
rm -rf backend/.venv frontend/node_modules
# Start fresh
docker compose -f deploy/compose.yml up --build
```
### Update Dependencies
**Backend:**
```bash
cd backend
uv sync --upgrade
```
**Frontend:**
```bash
cd frontend
npm update
```
### View API Documentation
Start the backend and visit:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
## Troubleshooting
### Port Conflicts
If ports 8000, 3000, or 5432 are in use:
```bash
# Find process
lsof -i :8000
# Kill process
kill -9 <PID>
```
Or modify ports in `deploy/compose.yml`.
### Permission Issues
```bash
# Make scripts executable
chmod +x scripts/**/*.sh
```
### Docker Issues
```bash
# Clean Docker system
docker system prune -a
# Rebuild containers
docker compose -f deploy/compose.yml up --build --force-recreate
```
### Python/Node Issues
**Backend:**
```bash
cd backend
rm -rf .venv
uv sync
```
**Frontend:**
```bash
cd frontend
rm -rf node_modules package-lock.json
npm install
```
## CI/CD
The project includes Gitea Actions workflows:
- `.gitea/workflows/backend-ci.yml` - Backend tests
- `.gitea/workflows/frontend-ci.yml` - Frontend tests
These run automatically on:
- Push to main/master/develop branches
- Pull requests to main/master/develop branches
### Running CI Scripts Locally
```bash
# Backend CI
bash scripts/ci/backend-test.sh
# Frontend CI
bash scripts/ci/frontend-test.sh
```
## Best Practices
1. **Always run tests before committing**
```bash
bash scripts/ci/backend-test.sh
bash scripts/ci/frontend-test.sh
```
2. **Format code before committing**
```bash
bash scripts/utils/format-all.sh
```
3. **Keep 100% backend test coverage**
- All new code must have tests
- Coverage check is enforced in CI
4. **Maintain ≥90% frontend test coverage**
- Test all components and services
- Use Jest and React Testing Library
5. **Follow the project structure**
- Keep files in their designated directories
- Follow naming conventions
6. **Document your changes**
- Update API documentation
- Add comments for complex logic
- Update CHANGELOG.md
## Next Steps
1. Start building your features
2. Add database models and migrations
3. Implement authentication/authorization
4. Add more API endpoints
5. Build frontend components
6. Write comprehensive tests
7. Deploy to production
## Support
For issues with the bootstrap:
- Check this guide
- Review the main README.md
- Check the coding-agent-rules repository
For project-specific issues:
- Review documentation in `/docs`
- Check API docs at http://localhost:8000/docs