docs: add comprehensive development setup guide
This commit is contained in:
281
docs/DEVELOPMENT_SETUP.md
Normal file
281
docs/DEVELOPMENT_SETUP.md
Normal file
@@ -0,0 +1,281 @@
|
||||
# Development Setup Guide
|
||||
|
||||
**Last Updated**: 2025-01-27
|
||||
**Status**: Complete Setup Instructions
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- **Node.js** >= 18.0.0
|
||||
- **pnpm** >= 8.0.0
|
||||
- **Docker** & Docker Compose (for local services)
|
||||
- **Git** with SSH configured
|
||||
|
||||
### Initial Setup
|
||||
|
||||
```bash
|
||||
# Clone repository
|
||||
git clone <repository-url>
|
||||
cd the-order
|
||||
|
||||
# Install dependencies
|
||||
pnpm install
|
||||
|
||||
# Start local services (PostgreSQL, Redis, OpenSearch)
|
||||
docker-compose up -d
|
||||
|
||||
# Build all packages
|
||||
pnpm build
|
||||
|
||||
# Start development servers
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Environment Configuration
|
||||
|
||||
### .env File Setup
|
||||
|
||||
1. Copy `.env.example` to `.env` (if available)
|
||||
2. Configure required variables:
|
||||
|
||||
```bash
|
||||
# Azure Configuration
|
||||
AZURE_SUBSCRIPTION_ID="your-subscription-id"
|
||||
AZURE_TENANT_ID="your-tenant-id"
|
||||
AZURE_LOCATION="westeurope"
|
||||
|
||||
# Database
|
||||
DATABASE_URL="postgresql://user:pass@localhost:5432/theorder_dev"
|
||||
|
||||
# Redis
|
||||
REDIS_URL="redis://localhost:6379"
|
||||
```
|
||||
|
||||
3. Load environment:
|
||||
```bash
|
||||
source infra/scripts/azure-load-env.sh
|
||||
```
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### Running Services
|
||||
|
||||
```bash
|
||||
# Start all services
|
||||
pnpm dev
|
||||
|
||||
# Start specific service
|
||||
pnpm --filter @the-order/identity-service dev
|
||||
|
||||
# Start specific app
|
||||
pnpm --filter portal-public dev
|
||||
```
|
||||
|
||||
### Building
|
||||
|
||||
```bash
|
||||
# Build all packages and services
|
||||
pnpm build
|
||||
|
||||
# Build specific package
|
||||
pnpm --filter @the-order/database build
|
||||
|
||||
# Build specific service
|
||||
pnpm --filter @the-order/identity-service build
|
||||
```
|
||||
|
||||
### Testing
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
pnpm test
|
||||
|
||||
# Test specific package
|
||||
pnpm --filter @the-order/database test
|
||||
|
||||
# Test with coverage
|
||||
pnpm --filter @the-order/database test -- --coverage
|
||||
```
|
||||
|
||||
### Linting
|
||||
|
||||
```bash
|
||||
# Lint all code
|
||||
pnpm lint
|
||||
|
||||
# Lint specific package
|
||||
pnpm --filter @the-order/database lint
|
||||
|
||||
# Fix linting issues
|
||||
pnpm lint --fix
|
||||
|
||||
# Batch linting for large file sets
|
||||
pnpm lint:batch file1.ts file2.ts ...
|
||||
```
|
||||
|
||||
### Type Checking
|
||||
|
||||
```bash
|
||||
# Type check all code
|
||||
pnpm type-check
|
||||
|
||||
# Type check specific package
|
||||
pnpm --filter @the-order/database type-check
|
||||
```
|
||||
|
||||
## Local Development Services
|
||||
|
||||
### Docker Compose
|
||||
|
||||
Start local services:
|
||||
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
Services available:
|
||||
|
||||
- **PostgreSQL**: `localhost:5432`
|
||||
- **Redis**: `localhost:6379`
|
||||
- **OpenSearch**: `localhost:9200`
|
||||
|
||||
Stop services:
|
||||
|
||||
```bash
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
### Manual Service Setup
|
||||
|
||||
See `scripts/dev/setup-dev.sh` for automated setup.
|
||||
|
||||
## Git Workflow
|
||||
|
||||
### Pre-commit Hooks
|
||||
|
||||
Husky runs lint-staged on commit:
|
||||
|
||||
- ESLint with 4GB memory limit
|
||||
- Prettier formatting
|
||||
- Type checking (if configured)
|
||||
|
||||
### Commit Messages
|
||||
|
||||
Use [Conventional Commits](https://www.conventionalcommits.org/):
|
||||
|
||||
- `feat:` - New feature
|
||||
- `fix:` - Bug fix
|
||||
- `docs:` - Documentation
|
||||
- `chore:` - Maintenance
|
||||
- `refactor:` - Code refactoring
|
||||
|
||||
### Branching Strategy
|
||||
|
||||
- `main` - Production-ready code
|
||||
- `develop` - Development branch
|
||||
- `feature/*` - Feature branches
|
||||
- `fix/*` - Bug fix branches
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Memory Issues with ESLint
|
||||
|
||||
If ESLint runs out of memory:
|
||||
|
||||
```bash
|
||||
# Use batch linting script
|
||||
pnpm lint:batch <files>
|
||||
|
||||
# Or increase memory limit manually
|
||||
NODE_OPTIONS='--max-old-space-size=4096' pnpm lint
|
||||
```
|
||||
|
||||
### Database Connection Issues
|
||||
|
||||
```bash
|
||||
# Check PostgreSQL is running
|
||||
docker-compose ps
|
||||
|
||||
# Restart PostgreSQL
|
||||
docker-compose restart postgres
|
||||
|
||||
# Check connection
|
||||
psql $DATABASE_URL
|
||||
```
|
||||
|
||||
### Port Conflicts
|
||||
|
||||
If ports are already in use:
|
||||
|
||||
```bash
|
||||
# Find process using port
|
||||
lsof -i :4002
|
||||
|
||||
# Kill process
|
||||
kill -9 <PID>
|
||||
```
|
||||
|
||||
### Dependency Issues
|
||||
|
||||
```bash
|
||||
# Clean install
|
||||
rm -rf node_modules pnpm-lock.yaml
|
||||
pnpm install
|
||||
|
||||
# Clear Turbo cache
|
||||
pnpm turbo clean
|
||||
```
|
||||
|
||||
## IDE Setup
|
||||
|
||||
### VS Code
|
||||
|
||||
Recommended extensions:
|
||||
|
||||
- ESLint
|
||||
- Prettier
|
||||
- TypeScript
|
||||
- Docker
|
||||
- GitLens
|
||||
|
||||
### Settings
|
||||
|
||||
Create `.vscode/settings.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"editor.formatOnSave": true,
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"eslint.validate": ["javascript", "typescript", "typescriptreact"],
|
||||
"typescript.tsdk": "node_modules/typescript/lib"
|
||||
}
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Read Documentation**:
|
||||
- [Project Structure](../PROJECT_STRUCTURE.md)
|
||||
- [Architecture](../docs/architecture/README.md)
|
||||
- [Navigation Guide](../docs/NAVIGATION.md)
|
||||
|
||||
2. **Explore Codebase**:
|
||||
- Start with `services/identity/` for backend
|
||||
- Check `apps/portal-public/` for frontend
|
||||
- Review `packages/shared/` for utilities
|
||||
|
||||
3. **Run Tests**:
|
||||
- Ensure all tests pass
|
||||
- Check test coverage
|
||||
- Add tests for new features
|
||||
|
||||
## Getting Help
|
||||
|
||||
- **Documentation**: See `docs/` directory
|
||||
- **Architecture**: `docs/architecture/`
|
||||
- **API Docs**: Service-specific READMEs
|
||||
- **Issues**: GitHub Issues
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2025-01-27
|
||||
Reference in New Issue
Block a user