mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-23 00:00:33 +00:00
6a37af09bb
* better claude * refactor: remove seed parameter from AI chat completions Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2.0 KiB
2.0 KiB
Backend Development (Rust)
Project Structure
Windmill uses a workspace-based architecture with multiple crates:
- windmill-api: API server functionality
- windmill-worker: Job execution
- windmill-common: Shared code used by all crates
- windmill-queue: Job & flow queuing
- windmill-audit: Audit logging
- Other specialized crates (git-sync, autoscaling, etc.)
Key References (MUST FOLLOW THESE)
- You MUST follow best-practices by using the
rust-backendskill, everytime you write RUST code. - When working with the database: read
summarized_schema.txtbefore starting - When working with the API routes: you can read
windmill-api/src/lib.rsto get started
Adding New Code
Module Organization
- Place new code in the appropriate crate based on functionality
- For API endpoints, create or modify files in
windmill-api/src/organized by domain - For shared functionality, use
windmill-common/src/ - Follow existing patterns for file structure and organization
API Endpoints
- Follow existing patterns in the
windmill-apicrate - Use axum's routing system and extractors
- Update
backend/windmill-api/openapi.yamlafter modifying API endpoints
Database Changes
- Update database schema with migration if necessary
- Use
sqlxfor database operations with prepared statements - Use transactions for multi-step operations
Enterprise Features
- Enterprise files use the
*_ee.rssuffix - Enterprise source is in
windmill-ee-privatefolder (sibling directory), symlinked into each crate'ssrc/ - Use feature flags:
#[cfg(feature = "enterprise")] - Isolate enterprise code in separate modules
Testing
- Write unit tests for core functionality
- Use the
#[cfg(test)]module for test code - For database tests, use the existing test utilities
Common Crates
- tokio: Async runtime
- axum: Web server and routing
- sqlx: Database operations
- serde: Serialization/deserialization
- tracing: Logging and diagnostics
- reqwest: HTTP client