GreenHouse to TeamTailor migration
What's this PR do?
This PR addresses comprehensive linting issues across all projects in the repository and adds a complete green-house-migration project. The changes ensure all code follows established quality standards and maintains consistency across all example projects.
@ulises-jeremias @matiasz8
Summary of Changes
Commit 1: fix: comprehensive linting fixes across all projects
Python Projects Fixed:
FastAPI Simple Docker Pip Project:
- Fixed Black formatting issues (7 files reformatted)
- Fixed isort import sorting (2 files corrected)
- Fixed mypy type checking errors (23 errors resolved)
- Created missing schema modules:
-
app/schemas/sorting.py- Sorting schema for multisort functionality -
app/schemas/user.py- User schema for authentication
-
- Fixed repository return types (NoteRepository now returns NoteOut instead of NoteBase)
- Added proper type annotations to test functions
- Fixed configuration issues (added DatabaseSettings and AuthSettings)
LangGraph SLS FastAPI RAG Project:
- Fixed Black formatting issues (22 files reformatted)
- Fixed isort import sorting (6 files corrected)
- All flake8 checks now pass
TypeScript/Node.js Projects Fixed:
Nest NATS Microservices (3 services):
- Fixed ESLint unused variable errors (4 errors resolved)
- Updated ESLint configs to allow underscore-prefixed unused variables
- Removed unused imports
- Fixed TypeScript compilation issues
Stripe Integration Node TypeScript:
- Verified TypeScript compilation passes without errors
Root Level:
- Verified markdown linting passes without issues
- All linters now pass successfully across the entire project
Commit 2: feat: add green-house-migration project
New Project Added:
Green-House-Migration Project:
- Complete migration solution from Greenhouse to TeamTailor
- Comprehensive dashboard with web interface
- Extensive documentation structure with guides and reports
- Security tools and analysis scripts
- Development and production scripts
- Test fixtures and configuration files
- API routes and integration tools
- Monitoring and metrics functionality
- Legacy Greenhouse integration
- TeamTailor migration tools
Key Files Modified
New Project Added:
examples/green-house-migration/
├── dashboard/ (web interface)
├── docs/ (comprehensive documentation)
├── legacy/greenhouse/ (legacy integration)
├── routes/ (API endpoints)
├── scripts/ (migration tools)
├── teamtailor/ (integration modules)
├── tests/ (test fixtures)
├── monitoring/ (health checks)
└── config/ (configuration files)
Summary by CodeRabbit
-
New Features
- Added a full Greenhouse→TeamTailor migration example with FastAPI endpoints (candidates, jobs, offers, metadata, stats), candidate tag management, legacy data processors, monitoring/metrics, database init, Makefile, and Dockerfile.
- Introduced interactive dashboards (prospects analytics and unified view).
- Expanded app settings (database URL, auth toggle) and schemas (User, Sorting); updated notes to return a streamlined output model.
-
Documentation
- Added comprehensive README, guides, API references, dashboards docs, reports, and project status pages.
-
Chores
- Added environment/config and tooling files (Pipfile, pyproject, pytest.ini, .bandit, .snyk, .editorconfig, .gitignore, env example).
-
Tests
- Updated fixtures and type annotations.
Walkthrough
Adds a new “green-house-migration” example app (FastAPI proxy, routes, legacy clients/processors, monitoring, dashboards, docs, configs). Updates FastAPI example auth typing and config. Switches repository note schema to NoteOut. Introduces new schemas (Sorting, User). Adjusts tests’ typing/clients. Adds extensive documentation and build tooling.
Changes
| Cohort / File(s) | Summary |
|---|---|
Auth typing and providersexamples/fastapi-simple-docker-pip/app/auth/auth.py, .../generic_auth_provider.py, .../mock_auth_provider.py |
Normalize typing to typing.Any, minor signature formatting; abstract/provider method definitions reformatted; no logic change. |
Config settingsexamples/fastapi-simple-docker-pip/app/config.py |
Adds DatabaseSettings and AuthSettings; exposes database and auth_provider_enabled in Settings. |
Notes repository schemaexamples/fastapi-simple-docker-pip/app/repositories/note_repository.py |
Return types switched from NoteBase to NoteOut; constructor annotated; mock data adjusted accordingly. |
Schemasexamples/fastapi-simple-docker-pip/app/schemas/__init__.py, .../note.py, .../sorting.py, .../user.py |
Exports Sorting and User; add new models Sorting and User; note.py reindented (no semantic change). |
Testsexamples/fastapi-simple-docker-pip/tests/integration/test_main_routes.py, .../unit/test_build.py |
Client fixture updated to AsyncClient with base_url; add explicit type hints and return annotations. |
GH migration: project configsexamples/green-house-migration/.bandit, .editorconfig, .gitignore, .snyk, pyproject.toml, pytest.ini, env.example |
Introduces security, formatting, ignore rules, typing/import config, test config, and env template. |
GH migration: build & opsexamples/green-house-migration/Dockerfile, Makefile, Pipfile |
Adds Alpine-based Dockerfile, comprehensive Makefile targets, and Pipenv definitions. |
GH migration: app entryexamples/green-house-migration/main.py |
FastAPI app with lifespan, CORS, routers registration, root/health endpoints, and exception handler. |
GH migration: monitoringexamples/green-house-migration/monitoring/* |
Adds health checks (placeholders and TT checker), Prometheus metrics helpers, and a mock config. |
GH migration: legacy client/utilitiesexamples/green-house-migration/legacy/greenhouse/client.py, .../processor.py, .../storage.py, .../pagination.py, .../validators.py, .../config_validator.py, .../logger.py |
Introduces HTTP client with retries/pagination, base processor, storage (JSON/CSV), pagination deps, validators, config loader, and logging setup. |
GH migration: legacy processorsexamples/green-house-migration/legacy/greenhouse/batch/*.py, .../jobs_tasks/run_all.py |
Adds processors for applications, candidates, custom_fields, jobs, metadata, offers, scheduled_interviews, scorecards, users; orchestration script; includes placeholder/typo issues noted in summaries. |
GH migration: API routes (Greenhouse)examples/green-house-migration/routes/api/*.py (applications, candidates, jobs, users, metadata, offers, scheduled_interviews, scorecards, stats, legacy_data, teamtailor_dashboard, teamtailor_simple, users_mapping), .../api/__init__.py |
Adds routers for resources, migrations, analytics, dashboards, and utilities; pagination dependency integration; several endpoints use literal path templates as noted. |
GH migration: TeamTailor clientexamples/green-house-migration/routes/clients/tt_client.py, .../clients/__init__.py |
Introduces minimal TT API client with env-driven headers/methods. |
GH migration: database initexamples/green-house-migration/database/init.sql |
Creates tables migration_logs and api_calls with indexes. |
GH migration: dashboards (UI)examples/green-house-migration/dashboard/index.html, .../unified_dashboard.html, .../static/dashboard.js, .../static/unified_dashboard.js |
Adds HTML dashboards and JS controllers using Chart.js for analytics and unified data views. |
GH migration: docs siteexamples/green-house-migration/docs/**/*, ARCHIVE_README.md, README.md, docs/assets/css/style.css, docs/404.html |
Adds extensive documentation, guides, reports, API references, and site assets; includes an error page. |
Sequence Diagram(s)
sequenceDiagram
autonumber
actor User
participant FE as Dashboard (HTML/JS)
participant API as FastAPI App
participant Router as API Router
participant GH as Greenhouse Client
participant TT as TeamTailor Client
participant Store as Storage (JSON/CSV/DB)
User->>FE: Interact (refresh/search)
FE->>API: HTTP GET /api/... (stats/list)
API->>Router: Route to handler
alt Greenhouse-backed endpoint
Router->>GH: gh_get/paginated_get(path, params)
GH-->>Router: JSON data
else TeamTailor-backed endpoint
Router->>TT: GET/POST/PATCH (TT endpoints)
TT-->>Router: JSON data
end
Router->>Store: Optional read/write (export/load)
Router-->>API: Response payload
API-->>FE: JSON result
FE-->>User: Render charts/tables
sequenceDiagram
autonumber
participant Client as Test/Consumer
participant App as FastAPI
participant Metrics as Metrics Module
Client->>App: HTTP Request
App->>Metrics: record_request(...)
App-->>Client: Response
App->>Metrics: expose /metrics -> get_metrics()
Estimated code review effort
🎯 5 (Critical) | ⏱️ ~120 minutes
Poem
I hopped through routes and logs today,
New gardens bloomed along the way—
Dashboards glow, migrations hum,
Metrics nibble, health checks thrum.
With tidy types and schemas new,
This burrow’s ready—ship it, woo!
(_/)</> 🥕
✨ Finishing Touches
- [ ] 📝 Generate Docstrings
🧪 Generate unit tests
- [ ] Create PR with unit tests
- [ ] Post copyable unit tests in a comment
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
🪧 Tips
Chat
There are 3 ways to chat with CodeRabbit:
- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
-
I pushed a fix in commit <commit_id>, please review it. -
Open a follow-up GitHub issue for this discussion.
-
- Files and specific lines of code (under the "Files changed" tab): Tag
@coderabbitaiin a new review comment at the desired location with your query. - PR comments: Tag
@coderabbitaiin a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:-
@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase. -
@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
-
Support
Need help? Create a ticket on our support page for assistance with any issues or questions.
CodeRabbit Commands (Invoked using PR/Issue comments)
Type @coderabbitai help to get the list of available commands.
Other keywords and placeholders
- Add
@coderabbitai ignoreor@coderabbit ignoreanywhere in the PR description to prevent this PR from being reviewed. - Add
@coderabbitai summaryto generate the high-level summary at a specific location in the PR description. - Add
@coderabbitaianywhere in the PR title to generate the title automatically.
CodeRabbit Configuration File (.coderabbit.yaml)
- You can programmatically configure CodeRabbit by adding a
.coderabbit.yamlfile to the root of your repository. - Please see the configuration documentation for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation:
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
Status, Documentation and Community
- Visit our Status Page to check the current availability of CodeRabbit.
- Visit our Documentation for detailed information on how to use CodeRabbit.
- Join our Discord Community to get help, request features, and share feedback.
- Follow us on X/Twitter for updates and announcements.