Skip to main content

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

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:

  1. Getting Started - Choose your path
  2. Architecture Overview - Understand the system
  3. Set Up Environment - Install dependencies
  4. 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.

  1. Clone the monorepo
  2. Set up environment
  3. Choose a component
  4. Follow contributing guide

β†’ Best for: Passionate developers improving the platform

Path 2: Building Custom Applications

You want to build custom data collection applications on ODE.

  1. Understand architecture
  2. Learn the REST API
  3. Set up development environment
  4. Follow extending guide

β†’ Best for: Building organization-specific solutions

Path 3: System Administration & Deployment

You want to deploy and manage ODE in your infrastructure.

  1. Understand system architecture
  2. Read deployment guide
  3. Learn configuration options
  4. Set up monitoring

β†’ Best for: SysAdmins and DevOps engineers

Path 4: Integration & APIs

You want to integrate ODE with external systems.

  1. Learn REST API
  2. Understand app bundle format
  3. Review sync protocol
  4. Build custom integrations

β†’ 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

Contribution Ideas

Here are some ways to contribute:

ContributionDifficultyImpact
Fix typos in docsEasyHigh
Report bugsEasyHigh
Fix UI bugsMediumHigh
Add testsMediumHigh
Implement featuresMedium-HardHigh
Add new form controlHardHigh
Database optimizationHardMedium
Mobile performanceHardHigh

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!