Getting Started → Introduction

Introduction to OneTALA

Last updated: May 2025 · v1.0 · Built by Seriba Technology

OneTALA is an open-core, offline-first digital platform built and maintained by Seriba Technology, a Nigerian software company specialising in cloud-native infrastructure for health, humanitarian, and logistics operations. OneTALA covers public health campaigns starting with Seasonal Malaria Chemoprevention (SMC) and extending to Vitamin A, bednet distribution, and routine immunisation.

Open Core Licence: The platform is released under Apache 2.0. You can deploy, modify, and redistribute it freely. Managed hosting and enterprise features are available as paid services.

What OneTALA covers

  • Geo hierarchy management (7 configurable levels)
  • User, role, and permission management
  • Campaign setup and microplanning
  • Training attendance tracking
  • Workforce deployment and team assignment
  • Beneficiary registration and service delivery (mobile, offline-first)
  • Household and child-level tracking with unique IDs
  • Cycle-based treatment and longitudinal cohort tracking
  • Stock and commodity management (waybill system)
  • Supervision and field monitoring
  • Real-time dashboards and report exports
  • Audit trails and compliance logs

Architecture overview

OneTALA is a two-component system:

🌐

Web Platform

Laravel + Vue.js. Used by admins, programme managers, warehouse officers, and data teams. Handles configuration, planning, oversight, and reporting.

📱

Mobile App

Flutter (Android). Used by CDDs, trainers, supervisors in the field. Offline-first with background sync via SQS queue.

Technology stack

LayerTechnologyNotes
Backend APILaravel 11 (PHP)REST API, JWT auth, Laravel Horizon queues
DatabasePostgreSQL 15+PostGIS extension for geo features
Cache / QueueRedisSession cache + Laravel Horizon queue driver
MobileFlutter 3 (Dart)Android-first, SQLite offline storage
Web FrontendVue.js 3Inertia.js or API-driven SPA
File storageAWS S3Photos, exports, APK hosting
EmailAWS SESNotifications and alerts
Getting Started → Installation

Installation

Requires: PHP 8.2+, PostgreSQL 15+, Redis, Node.js 18+
Prerequisites: You need PHP 8.2+, Composer, PostgreSQL, Redis, and Node.js 18+ installed on your server or local machine.

1. Clone the repository

bash
git clone https://github.com/campaignos/platform.git
cd platform

2. Install PHP dependencies

bash
composer install --no-dev --optimize-autoloader

3. Configure environment

bash
cp .env.example .env
php artisan key:generate

Edit .env with your database, Redis, and AWS credentials. See the Configuration page for all variables.

4. Run database migrations

bash
php artisan migrate --seed

5. Install frontend assets

bash
npm install && npm run build

6. Start the application

bash
# Development
php artisan serve

# Production (use Nginx + PHP-FPM or Docker)
php artisan horizon  # Start queue worker in separate terminal

The platform will be available at http://localhost:8000. Default admin credentials are in your database/seeders/AdminSeeder.php.

Production deployments: Always use HTTPS, set APP_ENV=production and APP_DEBUG=false, and store secrets in environment variables or AWS SSM — never commit credentials to Git.
Core Concepts → Offline Sync

Offline Sync Architecture

Critical for field deployments in low-connectivity environments

OneTALA is designed around the assumption that field workers will operate in areas with no internet connectivity for extended periods. The sync engine handles this transparently.

How it works

1
Download — Before field work, the mobile app downloads the CDD's assigned area: households, children, stock balance, and forms.
2
Offline operation — All registrations, doses, stock movements, and supervision forms are saved to encrypted local SQLite with a sync_status: pending flag.
3
Queue push — When connectivity is detected, the app pushes pending records to SQS as JSON payloads.
4
Server processing — Laravel Horizon workers consume the SQS queue, validate, deduplicate, and write records to PostgreSQL.
5
Acknowledgement — The server returns confirmation; the app marks records as sync_status: synced and shows a success indicator.

Conflict resolution rules

Record typeStrategy
Dose administrationAppend-only — each dose record is immutable; duplicates detected by child_id + cycle + date
Stock movementsAppend-only with server-side balance recalculation
Household registrationLast-write-wins with supervisor review flag for conflicts
Supervision formsAppend-only — each submission creates a new record
User profile editsServer timestamp wins; conflict logged for audit
Core Concepts → Licence Keys

Licence Key System

Standard and Enterprise tier deployments require a licence key issued by Seriba Technology (OneTALA). The key is validated on startup and periodically during operation. Community (self-hosted, open source) deployments do not require a key.

How it works

  1. You purchase a licence and receive a key by email (e.g. CAMP-STD-2025-XXXX-XXXX)
  2. Add it to your .env: CAMPAIGNOS_LICENCE_KEY=CAMP-STD-2025-XXXX-XXXX
  3. On startup, the platform calls https://licence.campaignos.com/v1/validate
  4. The API returns your tier, limits (beneficiary cap, user cap), and expiry date
  5. The platform enforces limits in real-time. At 80% and 95% usage, admins receive alerts
  6. At 100% or on expiry, the platform enters read-only mode — no data loss
Community licence: Set CAMPAIGNOS_LICENCE_KEY=COMMUNITY to disable licence enforcement entirely. No limits are applied.

Licence API reference

http
POST https://licence.campaignos.com/v1/validate
Content-Type: application/json

{
  "key": "CAMP-STD-2025-XXXX-XXXX",
  "domain": "kano.campaignos.com",
  "version": "1.0.4"
}

// Response
{
  "valid": true,
  "tier": "standard",
  "limits": {
    "beneficiaries": 5000000,
    "users": 7000
  },
  "usage": {
    "beneficiaries": 2341089,
    "users": 312
  },
  "expires_at": "2026-06-01",
  "renewal_url": "https://campaignos.com/pages/pricing.html"
}
API Reference → Authentication

API Authentication

OneTALA uses JWT (JSON Web Token) bearer token authentication. All API endpoints require a valid token except the login endpoint.

Obtain a token

http
POST /api/v1/auth/login
Content-Type: application/json

{
  "username": "admin@kano.gov.ng",
  "password": "your-password"
}

// Response
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expires_in": 86400,
  "user": {
    "id": 1,
    "name": "Aminu Bello",
    "role": "state_coordinator",
    "geo_unit_id": 42
  }
}

Use the token

http
GET /api/v1/beneficiaries
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Accept: application/json

Token refresh

http
POST /api/v1/auth/refresh
Authorization: Bearer {current_token}
API Reference → Beneficiary endpoints

Beneficiary API

GET /api/v1/households List households (scoped to user's geo)
geo_unit_id Filter by geo unit ID
page Pagination (default 1)
per_page Per page (default 50, max 200)
POST /api/v1/households Register a new household
GET /api/v1/children List children (scoped to user's geo)
POST /api/v1/children Register a new child
POST /api/v1/doses Record a dose administration
GET /api/v1/children/{id}/cycle-history Get full cycle history for a child
Deployment → AWS (recommended)

Deploying to AWS

Recommended region: af-south-1 (Cape Town) — lowest latency for Nigeria and West Africa, and keeps your data on the African continent.

The recommended production stack uses ECS Fargate (no servers to manage), RDS PostgreSQL Multi-AZ, ElastiCache Redis, and S3 + CloudFront. See the full deployment guide in the repository at DEPLOYMENT.md.

Quick reference — estimated costs (af-south-1)

ServiceSpecEst. $/month
RDS PostgreSQLdb.t3.large Multi-AZ~$185
RDS Read Replicadb.t3.medium~$92
ECS FargateAPI + workers~$108
ElastiCache Rediscache.t3.medium~$52
S3 + CloudFrontStorage + CDN~$35
ALB + WAF + DNSNetworking~$32
SQS + SNS + SESMessaging~$18
Total~$522/month

With Reserved Instances (1yr), reduce RDS and ElastiCache costs by ~35%, bringing total to ~$420/month.

Built and maintained by Seriba Technology
OneTALA is a product of Seriba Technology, a Nigerian software company (founded 2025) building secure, cloud-native infrastructure for health, humanitarian, and logistics programmes. For managed hosting, enterprise support, or implementation partnership, contact info@seribatech.com or visit seribatech.com.