Development & Engineering
Welcome to the Developer section! Whether you're contributing to ODE, building custom extensions, or deploying the platform, this guide covers development, architecture, and contribution workflows.
Who This Guide Is For
This section is designed for:
- Software engineers contributing to ODE
- Developers building custom applications with ODE
- System administrators deploying ODE
- Architects evaluating ODE architecture
- Contributors wanting to improve the codebase
Building custom applications (HTML, JS, CSS bundles and JSON forms) without cloning the ODE monorepo? Use the custom_app repository on GitHub (AGENTS.md and CONTEXT_*.md for assistants and authors), together with the main documentation site.
If you're collecting data, see the Data Collector Guide.
If you're designing forms, see the Implementer Guide.
Quick Start
Set up your development environment in 20 minutes:
- Getting Started - Choose your path
- Architecture Overview - Understand the system
- Set Up Environment - Install dependencies
- Run Tests - Verify your setup
What You'll Learn
π Getting Started
Choose your development path and get started.
Start βποΈ Architecture
Deep dive into ODE system design and components.
Learn More βπ§ Setup Environment
Configure your dev machine and install dependencies.
Setup βποΈ Build & Test
Build projects and run test suites.
Learn More βπ€ Contributing
How to contribute to ODE development.
Contribute ββ‘ Extending ODE
Build custom extensions and integrations.
Learn More βDocumentation Roadmap
π Get Started
ποΈ Understand Architecture
π§ Set Up Environment
π Component Development
ποΈ Building & Testing
π€ Contributing
β‘ Extending ODE
π API Reference
Development Paths
Path 1: Contributing to ODE Core
You want to help improve Formulus, Synkronus, or Formplayer.
β Best for: Passionate developers improving the platform
Path 2: Building Custom Applications
You want to build custom data collection applications on ODE.
β Best for: Building organization-specific solutions
Path 3: System Administration & Deployment
You want to deploy and manage ODE in your infrastructure.
β Best for: SysAdmins and DevOps engineers
Path 4: Integration & APIs
You want to integrate ODE with external systems.
β Best for: Backend developers and integrations engineers
Tech Stack Overview
Formulus (Mobile App)
- Language: TypeScript/JavaScript
- Framework: React Native
- Database: WatermelonDB
- Platforms: Android, iOS
Synkronus (Server)
- Language: Go 1.22+
- Database: PostgreSQL
- API: REST + OpenAPI
- Deployment: Docker, Kubernetes
Formplayer (Form Renderer)
- Language: TypeScript/JavaScript
- Framework: React
- Rendering: JSON Forms
- Execution: WebView (Formulus) or Browser
Synkronus CLI
- Language: Go
- Distribution: Prebuilt binaries
- Package Manager: Homebrew, curl
Key Architecture Concepts
Offline-First Design
Device Server
ββ Local DB ββ PostgreSQL
β (WatermelonDB) β
ββ Forms Cache ββ REST API
ββ Sync Queue ββ Sync Engine
(offline buffer) ββ Authentication
Client-Server Sync
1. Pull: Client requests new forms from server
2. Push: Client sends completed submissions
3. Merge: Server resolves conflicts
4. Acknowledge: Client marks submissions as synced
Authentication & Security
- JWT-based authentication
- Role-based access control (RBAC)
- End-to-end encryption options
- Secure offline token storage
Getting Help
- Architecture questions? β Read Architecture Guide
- Setup issues? β Setup Environment
- Contributing questions? β Contributing Guide
- API documentation? β REST API
- Need community help? β Community Support
Contribution Ideas
Here are some ways to contribute:
| Contribution | Difficulty | Impact |
|---|---|---|
| Fix typos in docs | Easy | High |
| Report bugs | Easy | High |
| Fix UI bugs | Medium | High |
| Add tests | Medium | High |
| Implement features | Medium-Hard | High |
| Add new form control | Hard | High |
| Database optimization | Hard | Medium |
| Mobile performance | Hard | High |
Code Quality Standards
ODE maintains high code quality:
- β ESLint + Prettier for JavaScript/TypeScript
- β Go fmt for Go code
- β Comprehensive test coverage
- β Pre-commit hooks
- β CI/CD validation on all PRs
Next Steps
Ready to contribute or develop?
β Getting Started
Or dive into a specific area:
β Architecture Deep Dive
β Set Up Environment
β Contributing Guide
We're excited to have you contribute to ODE. Whether it's code, documentation, bug reports, or ideasβall contributions are valued!