Skip to content
Edson Francisco
  • Communities & information

Fonte da Vida

Free Christian resources in African languages — I was the main developer of the Laravel API and admin panel.

Period
2021–2022
Status
In production
Role
Main developer of the API and admin panel (2021–22)
Client
EQUIP Moçambique

Problem

Churches and preachers needed to publish sermons and resources for the mobile app, and the team needed to manage countries, languages, organisations and licences. The previous Yii system no longer fit.

Solution

I migrated the data model from the Yii system to Laravel 8 and built the v1 API and admin panel: sermons per pastor and organisation, audio upload with duration, photos and files, church geolocation, and CRUD pages for languages, resources, videos and licences. Preachers sign in through the app with separate authentication. The WhatsApp bot, which sends the audio Bible through Meta's WhatsApp Cloud API, is the team's work; my part there was the test deployment workflow.

Technical decisions

  1. 01

    A separate guard for preachers in the app

    The panel uses sessions (`web`) and the app uses a `mobile` guard over the preachers table with Sanctum — preacher and admin accounts never mix.

  2. 02

    Logout from all devices

    On logout the app revokes all of the preacher's sessions, which simplifies support when a phone is lost.

  3. 03

    Migrating the Yii legacy instead of starting over

    I imported the existing database to keep books, sermons and resources already published.

  4. 04

    Versioned API

    A `v1` prefix and token-protected routes, so the app can evolve without breaking older versions.

Images

01 / 04 — Fonte da Vida home page: audio Bible with synced text, with a phone showing Matthew 1

Technologies

  • Laravel
  • PHP
  • MySQL
  • Livewire
  • JavaScript
  • Node.js
  • WhatsApp Cloud API
  • GitHub Actions

Verifiable results

languages listed in the API docs
15
Android app downloads
50 mil+
play.google.com (opens in a new tab)

What I learned

Multi-guard authentication for mobile clients, and migrating data from a legacy system without losing content.