- 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
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.
02
Logout from all devices
On logout the app revokes all of the preacher's sessions, which simplifies support when a phone is lost.
03
Migrating the Yii legacy instead of starting over
I imported the existing database to keep books, sermons and resources already published.
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
What I learned
Multi-guard authentication for mobile clients, and migrating data from a legacy system without losing content.
