Formulus
org.opendataensemble.formulus
Zapstore _@zapstore.dev Offline-first bespoke data collection apps from Open Data Ensemble
Republished from GitHub / F-Droid by the Zapstore main account.
Formulus is the mobile data collection client of the Open Data Ensemble (ODE) platform. It allows organizations, research teams, and public sector institutions to build their own bespoke data collection applications based on structured forms defined using the JSONForms specification. Forms and application logic are defined externally, meaning the same Formulus app can host many different data collection projects without requiring app updates. Key features include: • Flexible form-based data collection using JSONForms • Offline-first operation for use in the field • Secure bi-directional synchronization with an ODE Synkronus server • Support for complex data structures and validation • Designed for long-term maintainability and open standards Formulus is particularly suited for environments where reliable data collection is needed under challenging conditions, such as: • field research • public health surveillance • environmental monitoring • humanitarian and development projects • decentralized data collection initiatives The app requires access to an ODE Synkronus server for synchronization and project management. Organizations typically run their own Synkronus server to host forms, manage users, and collect submitted data. If you do not yet have access to a Synkronus server but would like to explore the application, a public demonstration environment may be available. See the project website for details. Formulus is part of the Open Data Ensemble ecosystem, an open-source initiative focused on building interoperable tools for decentralized, standards-based data collection. Source code and documentation: https://opendataensemble.org
First release: Aug 21, 2026, 4 total releases.
Most recent release: Oct 1, 2026.
Appears in 0 app stacks.
0 sats / 0 zaps received in the past year.
Sats Received
Underlying data available via MCP: app_zaps, app_releases.
Zap Count
Underlying data available via MCP: app_zaps, app_releases.
Releases
- Oct 1, 2026 1.4.0## ODE v1.4.0 This release brings two major additions to ODE, alongside a broad set of improvements across Formulus, FormPlayer, ODE Desktop, documentation, security, and developer tooling. ### Multiple profiles in Formulus Formulus can now manage **multiple profiles on the same device**, each with its own custom app and Synkronus connection. This makes it much easier to use one device across different projects, studies, deployments, or environments without repeatedly reconfiguring Formulus. Profiles can be created and switched directly from within the app.
More…
### First-class support for AI agents in ODE Desktop ODE Desktop now exposes ODE directly to **AI agents** through two complementary interfaces: - a rich command-line interface for working with ODE data and functionality - a local **MCP server**, allowing MCP-compatible agents and development environments to interact with ODE natively This is an important first step toward making ODE not just a tool people use directly, but also a platform that AI-assisted workflows can safely build upon. You can control what your local AI agents have access to from within the profile settings in ODE Desktop: <img width="1101" height="292" alt="image" src="https://github.com/user-attachments/assets/f9202661-497f-4af0-adb9-ae2d174aaf02" /> ### And, most importantly: the community This release also includes contributions from a growing number of new contributors across Formulus, FormPlayer, ODE Desktop, documentation, testing, CI and release tooling. A huge thank you to everyone who contributed code, testing, documentation, reviews, ideas, and time. **The people contributing to ODE are what make the community worth our combined effort.** Welcome to all our new contributors, and thank you for helping make ODE better ❤️ ## What's Changed * chore(release): prepare v1.3.3 alpha by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/844 * fix(formulus): Optimized camera handling by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/901 * ci(release): prepare next Formulus build code by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/902 * chore(release): reserve next Formulus build code by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/903 * chore(release): reserve next Formulus build code by @github-actions[bot] in https://github.com/OpenDataEnsemble/ode/pull/904 * ci: limit renovate PR count and enable versionCode bump on release by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/905 * feat: improved security hardening by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/906 * fix(formulus): clear repository generation on server switch by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/914 * fix(formulus): make app-bundle install atomic and surface low-storage… by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/919 * fix(formulus): restore iOS permissions, iPad and iPhone layout by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/922 * docs: add root CONTRIBUTING.md for new contributors by @IamLRBA in https://github.com/OpenDataEnsemble/ode/pull/923 * fix(pr-template): trim PR template to essential sections by @IamLRBA in https://github.com/OpenDataEnsemble/ode/pull/924 * fix(formulus): Play compliance with SAF media picker and 16 KB page-size enforcement by @najuna-brian in https://github.com/OpenDataEnsemble/ode/pull/925 * fix(docs): strip emojis and AI-isms from documentation by @IamLRBA in https://github.com/OpenDataEnsemble/ode/pull/928 * fix: grant permissions to Formulus build code workflow by @allennakalema06-web in https://github.com/OpenDataEnsemble/ode/pull/929 * feat(formulus): add profiles with in-app switching by @Ndacyayisenga-droid in https://github.com/OpenDataEnsemble/ode/pull/931 * fix(formplayer): localize progress bar navigation labels by @Lemeri123 in https://github.com/OpenDataEnsemble/ode/pull/932 * test: guard Formulus interface version drift by @kingmakeruix in https://github.com/OpenDataEnsemble/ode/pull/935 * fix(desktop): map view marker colours by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/934 * fix(formulus): make tables responsive on small screens by @allennakalema06-web in https://github.com/OpenDataEnsemble/ode/pull/930 * fix(formulus): improve UX for creating and switching profiles by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/937 * chore(release): reserve next Formulus build code by @github-actions[bot] in https://github.com/OpenDataEnsemble/ode/pull/936 * docs: migrate the documentation site into the monorepo by @najuna-brian in https://github.com/OpenDataEnsemble/ode/pull/939 * chore(release): reserve next Formulus build code by @github-actions[bot] in https://github.com/OpenDataEnsemble/ode/pull/938 * chore(release): v1.3.3 dev->main merge by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/940 * fix(formulus): defer QR camera binding until provider is ready by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/941 * fix(desktop): export not copying attachments from nested observation data by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/949 * chore(release): reserve next Formulus build code by @github-actions[bot] in https://github.com/OpenDataEnsemble/ode/pull/942 * feat(desktop): add local AI agent support by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/952 * chore(release): reserve next Formulus build code by @github-actions[bot] in https://github.com/OpenDataEnsemble/ode/pull/951 * docs(development): add a code map for one observation's journey by @kingmakeruix in https://github.com/OpenDataEnsemble/ode/pull/947 * fix(desktop): honor includeDeleted in observation queries by @sarahmirembe592 in https://github.com/OpenDataEnsemble/ode/pull/944 * perf(desktop): index deleted observations by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/954 * chore: Prepare v1.4.0 release by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/955 * chore: v1.4.0 dev -> main by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/956 ## New Contributors * @github-actions[bot] made their first contribution in https://github.com/OpenDataEnsemble/ode/pull/904 * @allennakalema06-web made their first contribution in https://github.com/OpenDataEnsemble/ode/pull/929 * @Lemeri123 made their first contribution in https://github.com/OpenDataEnsemble/ode/pull/932 * @kingmakeruix made their first contribution in https://github.com/OpenDataEnsemble/ode/pull/935 * @sarahmirembe592 made their first contribution in https://github.com/OpenDataEnsemble/ode/pull/944 **Full Changelog**: https://github.com/OpenDataEnsemble/ode/compare/v1.3.2...v1.4.0 - Sep 1, 2026 1.3.2## What's Changed * fix(ios): Applied explicit UTF-8 encoding to placerholder by @cstaerk in https://github.com/OpenDataEnsemble/ode/pull/744 * fix(formulus): patch RNFS reject to stop attachment-download crashes by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/747 * fix(ios): Adjusted app icon by @cstaerk in https://github.com/OpenDataEnsemble/ode/pull/745 * fix(desktop): Fixing generational issue in Desktop by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/748 * fix(formulus): ship universal APK on GitHub releases by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/749 * feat(formulus): adaptive sync paging by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/750 * chore: docs update by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/751 * fix(formulus): align Android release packaging and version codes by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/783 * feat: Release prep 1.3.2 by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/818
More…
* chore: v1.3.2 by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/819 **Full Changelog**: https://github.com/OpenDataEnsemble/ode/compare/v1.3.1...v1.3.2 - Aug 26, 2026 1.3.1# v1.3.1 - Formulus on Apple App Store ## Main updates: - Formulus is now available for iOS on the Apple app store! - Better performance and memory handling in Formulus - Packages and build tooling updated ## What's Changed * feat(ios): Added dark icon by @cstaerk in https://github.com/OpenDataEnsemble/ode/pull/731 * fix(ios): update app icon by @IamLRBA in https://github.com/OpenDataEnsemble/ode/pull/732
More…
* feat(formulus): Updated Grant Permission button title for App Store compliance by @cstaerk in https://github.com/OpenDataEnsemble/ode/pull/730 * feat(formplayer): updated performance and memory handling by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/733 * fix(formulus): build pipeline fixes after pnpm upgrade by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/739 * fix(formulus): hoist buffer for release Metro and speed up Android CI by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/740 * fix(formulus): hoist hermes-compiler for release Hermes bundling by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/741 * v1.3.1 prep by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/742 **Full Changelog**: https://github.com/OpenDataEnsemble/ode/compare/v1.3.0...v1.3.1 - Aug 21, 2026 1.3.0# ODE v1.3.0 This release brings Formulus to iOS beta, adds import/export improvements to ODE Desktop, and makes syncing, diagnostics, and everyday data handling smoother across ODE. ### Highlights - **Formulus for iOS** is now in beta testing. iPhone users can try it by installing **TestFlight** from Apple and then joining the [Formulus beta](https://testflight.apple.com/join/2Sn4ANxe). - **Import & export in ODE Desktop** — new export functionality and improved data imports. - **Faster, more robust sync** across ODE Desktop and Formulus on Android and iOS. - **Better forensics support in Formulus**, including a new **Export logfile** option.
More…
- **Improved Formulus UI** with more compact and consistent Observation and Form tables. - **Richer analytics in ODE Desktop**, with maps added to basic analytical charts. - **Smarter sub-observation sorting**, automatically sorting numerically or alphabetically based on the column type. - **Bug fixes**, including decimal values incorrectly exporting as `NA` and index rebuilding being skipped after a sync rollback. **Full Changelog**: https://github.com/OpenDataEnsemble/ode/compare/v1.2.0...v1.3.0 ## What's Changed * chore: backmerge main into dev by @najuna-brian in https://github.com/OpenDataEnsemble/ode/pull/705 * fix: numeric fields exporting as null in parquet export by @najuna-brian in https://github.com/OpenDataEnsemble/ode/pull/708 * fix(desktop): app bundle structure by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/706 * feat(portal): Home page with charts.. by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/709 * fix(formplayer): Updated sub-observation table sort to use numerical … by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/710 * fix(formplayer): Clear fields on hide (cascading) by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/711 * feat(formplayer): Better display of validation errors on finalize screen by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/712 * feat(formulus): Fix IOS startup by @cstaerk in https://github.com/OpenDataEnsemble/ode/pull/714 * fix(desktop): Fix issue with injected dev scripts by @cstaerk in https://github.com/OpenDataEnsemble/ode/pull/715 * chore(deps): update dependency typescript-eslint to v8.66.0 by @renovate[bot] in https://github.com/OpenDataEnsemble/ode/pull/686 * fix(formplayer): Fix various UI snags by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/717 * feat(formulus): Added IOS metadata necessary for Apple AppStore submission by @cstaerk in https://github.com/OpenDataEnsemble/ode/pull/718 * chore(deps): update actions/checkout digest to 11d5960 by @renovate[bot] in https://github.com/OpenDataEnsemble/ode/pull/716 * chore(deps): update actions/setup-java digest to cf277c6 by @renovate[bot] in https://github.com/OpenDataEnsemble/ode/pull/719 * chore(deps): enable Renovate automerge for patch and digest updates by @Ndacyayisenga-droid in https://github.com/OpenDataEnsemble/ode/pull/721 * chore: release prep for v1.2.1 by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/713 * feat(desktop): Add export functionality by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/722 * fix: More robust index building after sync by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/723 * feat(formulus): add log viewer to Help&Support by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/724 * fix(formulus): Include bundled sqlite package (jsi) by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/725 * chore: prep for v1.3.0 by @r0ssing in https://github.com/OpenDataEnsemble/ode/pull/726 ## New Contributors * @cstaerk made their first contribution in https://github.com/OpenDataEnsemble/ode/pull/714 **Full Changelog**: https://github.com/OpenDataEnsemble/ode/compare/v1.2.0...v1.3.0