How kobotoolbox/kpi works
KPI is the KoboToolbox platform for authoring and managing data-collection projects, handling submissions, and administering accounts and service usage. The visible frontend includes account, organization, security, billing, and usage interfaces; the README also documents a versioned API and submission filtering. The sampled backend code shows submission-query construction against Mongo-backed parsed instances and storage abstractions spanning filesystem, S3, and Azure. Several product areas are documented or apparent from the tree but their internal wiring was not sampled, so uncertain links are omitted.
Main entry points: routes.tsx Account routes · database_query.py Submission query builder · kc_access/storage.py Attachment storage · utils/storage.py Storage operations
Components 23
Web interface
- Account routes
jsapp/js/account/routes.tsx - Account settings
jsapp/js/account/accountSettingsRoute.tsx - Organization members
jsapp/js/account/organization/MembersRoute.tsx - Security settings
jsapp/js/account/security/securityRoute.component.tsx - Service usage
jsapp/js/account/usage/usageContainer.tsx - Usage summary
jsapp/js/account/usage/useOrganizationsServiceUsageSummary.ts
API and submissions
- API client
jsapp/js/api.ts - API models
jsapp/js/api/models - Submission actions
jsapp/js/actions/submissions.ts - Submission query builder
kobo/apps/openrosa/apps/logger/utils/database_query.py - Parsed instances
kobo/apps/openrosa/apps/viewer/models/parsed_instance.py
Files and storage
- Attachment storage
kpi/deployment_backends/kc_access/storage.py - Storage operations
kpi/utils/storage.py - Private Azure files
kobo/apps/storage_backends/private_azure_storage.py - Private file access
kpi/utils/private_storage.py
Administration
- Django admin
hub/admin - Account models
hub/models - Attachment storage counters
kobo/apps/openrosa/apps/logger/management/commands/update_attachment_storage_bytes.py
Other components
- KoboToolbox user
- PostgreSQL records
- Filesystem
- S3 storage
- Azure storage
Connections 22
- KoboToolbox user → Account routes: opens
- Account routes → Account settings: routes to
- Account routes → Organization members: routes to
- Account routes → Security settings: routes to
- Account routes → Service usage: routes to
- Service usage → Usage summary: loads summary
- Usage summary → API client: fetches usage
- API client → API models: uses types
- Submission actions → API client: sends requests
- Submission query builder → Parsed instances: queries IDs
- Submission query builder → PostgreSQL records: returns filters
- Submission query builder → Parsed instances: returns filters
- Storage operations → Filesystem: deletes files
- Storage operations → S3 storage: batch deletes
- Storage operations → Azure storage: batch deletes
- Attachment storage → S3 storage: selects backend
- Attachment storage → Azure storage: selects backend
- Attachment storage → Filesystem: selects backend
- Private Azure files → Azure storage: stores files
- Private file access → Account models: checks asset permissions
- Django admin → Account models: manages
- Attachment storage counters → PostgreSQL records: updates counters