How opf/openproject works
OpenProject is a self-hosted project-management and team-collaboration platform. A representative workflow is a user configuring work-package query parameters, which the backend parses and applies to a query; the query layer then supplies results for API representation. The tree and README also identify project/portfolio, agile, scheduling, time/cost, collaboration, and integration capabilities. The sampled sources establish query transformations, Gantt query generation, and selected frontend interactions, but do not show the full request-to-result orchestration or most feature implementations.
Main entry points: main.controller.ts Query configuration UI · gantt_query_generator_service.rb Gantt query generation · parse_query_params_service.rb Query parameter parsing · update_query_from_params_service.rb Query updates
Components 18
Work management
- Projects and portfolios
app/components/projects - Work packages
app/components/open_project/common/work_package_card_component.rb - Agile workflows
app/components/projects/settings/work_packages/types - Time and costs
Query and scheduling
- Query configuration UI
frontend/src/stimulus/controllers/dynamic/admin/type-form-configuration/main.controller.ts - Query parameter parsing
app/services/api/v3/parse_query_params_service.rb - Query updates
app/services/update_query_from_params_service.rb - Default work queries
app/services/work_packages/default_query_generator_service.rb - Gantt query generation
app/services/projects/gantt_query_generator_service.rb - Work-package API results
- Saved Gantt settings
app/services/projects/gantt_query_generator_service.rb
Team collaboration
- Team collaboration
app/components/activities - Meetings and minutes
app/components/homescreen/blocks/meetings.rb - External integrations
modules/storages/app/controllers/storages/admin/storages_controller.rb
Application interface
- Main navigation
frontend/src/stimulus/controllers/dynamic/menus/main.controller.ts - Drag and drop
frontend/src/stimulus/controllers/dynamic/generic-drag-and-drop.controller.ts - Turbo request service
Other components
- Team member
Connections 20
- Team member → Query configuration UI: configures query
- Query configuration UI → Turbo request service: sends updates
- Query configuration UI → Query parameter parsing: submits query parameters
- Query parameter parsing → Query updates: normalizes parameters
- Query updates → Work-package API results: updates query
- Work-package API results → Team member: returns results
- Default work queries → Query configuration UI: provides query presets
- Team member → Gantt query generation: requests project schedule
- Gantt query generation → Saved Gantt settings: reads settings
- Gantt query generation → Work-package API results: generates query properties
- Team member → Projects and portfolios: manages projects
- Team member → Work packages: manages work
- Team member → Agile workflows: uses agile workflows
- Team member → Time and costs: tracks effort and cost
- Team member → Team collaboration: collaborates
- Team member → Meetings and minutes: coordinates meetings
- Team member → External integrations: configures integrations
- Team member → Main navigation: navigates
- Team member → Drag and drop: reorders items
- Drag and drop → Turbo request service: sends position update