# Development Guide ## Project Structure ``` ├── apps/ # Frontend applications ├── services/ # Backend microservices ├── packages/ # Shared libraries ├── infra/ # Infrastructure configs ├── deployments/ # Deployment configs ├── scripts/ # Automation scripts └── docs/ # Documentation ``` ## Development Workflow ### 1. Create a Feature Branch ```bash git checkout -b feature/my-feature ``` ### 2. Make Changes - Write code following TypeScript strict mode - Add tests for new functionality - Update documentation if needed ### 3. Run Tests Locally ```bash # All tests pnpm test # Specific service pnpm --filter @goodgo/iam-service test ``` ### 4. Lint and Format ```bash pnpm lint pnpm format ``` ### 5. Create Pull Request - Push your branch - Create PR targeting `develop` - CI/CD will run automatically ## Adding a New Service 1. Use the template: ```bash ./scripts/utils/create-service.sh my-new-service ``` 2. Update service configuration 3. Implement business logic 4. Add tests 5. Update documentation ## Adding a New Package 1. Create package in `packages/new-package` 2. Add to workspace in `pnpm-workspace.yaml` 3. Export from `index.ts` 4. Add tests 5. Document usage ## Database Migrations ## Database Migrations ```bash # Create migration (dev) ./scripts/db/migrate.sh iam-service dev # Apply migrations (production) ./scripts/db/migrate.sh iam-service deploy ``` ## Debugging - Use logger from `@goodgo/logger` - Check Traefik logs: `docker logs traefik-local` - Check service logs: `./scripts/dev/logs.sh iam-service`