Non-Profit APEX

Data for Good Calgary — Volunteer Platform

Data for Good Calgary

Challenge

Data for Good Calgary runs community data projects entirely on volunteer effort. Every new volunteer meant manual work for a coordinator: create a file-share account, assign the right groups, send an NDA, chase the signature, record the result in a spreadsheet, then repeat for the next project. The admin overhead was capping how many projects the chapter could take on, and compliance evidence lived in whoever's inbox had it last.

Solution

Built a volunteer and project management platform on Oracle 23ai with an APEX 26.1 front end, replacing the manual onboarding chain with automation. NextCloud accounts and group membership are provisioned directly from the database via the OCS v2 API; NDAs are issued and tracked through DocuSeal's REST API; nightly scheduler jobs reconcile both systems so the database and the platforms can never silently drift apart. A separate public application lets volunteers express interest, search resources and sign agreements without a coordinator in the loop.

Results

  • 185 APEX pages across an internal and a public application
  • Volunteer onboarding automated end to end
  • NextCloud and DocuSeal reconciled nightly
  • Public self-service hub at yyc-hub.dataforgood.ca
Oracle 23ai APEX 26.1 NextCloud DocuSeal APEXlang PL/SQL Automation

Data for Good Calgary matches volunteer data scientists, analysts and engineers with non-profits that need help making sense of their data. The chapter’s constraint was never demand — it was the coordination overhead of onboarding volunteers onto each project.

Two applications, one database

The platform runs on Oracle 23ai (23.26) with Oracle APEX 26.1.1 in front of it:

  • Internal application — 153 pages. Project lifecycle, member assignments and roles, meeting scheduling and attendance, the resource library, email campaigns, micro-projects, and administration.
  • Public application — 32 pages. Expression-of-interest submissions, resource search, NDA signing, collaboration requests, and position interest forms — all without a login.

All application source is managed in APEXlang (.apx) rather than binary exports, so pages are reviewable in a diff and deployable through SQLcl like any other code. Every database object lives behind a dfg_pm_ prefix with strict namespace isolation from the chapter’s legacy objects — 86 objects covering 15 tables, 30 views, 3 packages and 4 scheduler jobs.

Automating the onboarding chain

The work that used to be manual is now three integrations driven from PL/SQL:

NextCloud provisioning. pkg_dfg_pm_nextcloud calls the OCS v2 API to create accounts, set quotas, and sync group membership as volunteers join and leave projects. Account passwords are generated with DBMS_CRYPTO.RANDOMBYTES rather than a pseudo-random source — a small detail that matters when the credential grants access to partner data.

Document signing. pkg_dfg_pm_docuseal drives DocuSeal over REST, issuing NDAs and agreements from managed templates and pulling submission status back. The signed-field JSON is unpivoted into queryable views, so compliance reporting is a SQL question rather than a folder audit.

Nightly reconciliation. Four scheduler jobs re-sync groups, user accounts, DocuSeal submitters and templates every night. Integrations that only push on change will eventually drift; these jobs mean a discrepancy surfaces the next morning instead of at the next audit.

Engineering details that mattered

The NextCloud OCS API returns two status codes — an HTTP status and an OCS status buried in the response JSON. An HTTP 200 with an OCS 102 means “user already exists,” not success. Every call checks both, which is the difference between an integration that works and one that quietly does nothing.

When the chapter moved to a branded domain, the base URL was refactored out of a package constant and into an application setting. The cutover itself was a one-row change, and the next domain move will be too.

Live

This platform is one of three connected pieces of work for the chapter — see also the marketing automation migration and the cloud infrastructure underneath it.

Ready to Build Something Similar?

Let's discuss how we can bring the same expertise to your organization.

Start a Conversation