Saltar para o conteúdo
Edson Francisco
  • Comunidades e informação

Fonte da Vida

Recursos cristãos gratuitos em línguas africanas — fui o programador principal da API e do painel Laravel.

Período
2021–2022
Estado
Em produção
Papel
Programador principal da API e do painel de administração (2021–22)
Cliente
EQUIP Moçambique

Problema

Igrejas e pregadores precisavam de publicar pregações e recursos para a app móvel, e a equipa precisava de gerir países, línguas, organizações e licenças. O sistema anterior em Yii já não servia.

Solução

Migrei o modelo de dados do sistema Yii para Laravel 8 e construí a API v1 e o painel: pregações por pastor e organização, upload de áudio com duração, fotos e ficheiros, geolocalização da igreja, e páginas CRUD para línguas, recursos, vídeos e licenças. Os pregadores entram pela app com uma autenticação separada. O bot de WhatsApp, que envia a Bíblia em áudio pela WhatsApp Cloud API da Meta, é da equipa; o meu contributo aí foi o workflow de deploy de teste.

Decisões técnicas

  1. 01

    Guard separado para pregadores na app

    O painel usa sessão (`web`) e a app usa um guard `mobile` sobre a tabela de pregadores, com Sanctum — contas de pregador e de administrador nunca se misturam.

  2. 02

    Logout em todos os dispositivos

    Ao sair, a app revoga todas as sessões do pregador, o que simplifica o suporte quando um telemóvel se perde.

  3. 03

    Migração do legado Yii em vez de recomeçar

    Importei a base de dados existente para manter livros, pregações e recursos já publicados.

  4. 04

    API versionada

    Prefixo `v1` e rotas protegidas por token, para a app poder evoluir sem partir versões antigas.

Imagens

01 / 04 — Página inicial da Fonte da Vida: Bíblia em áudio com texto sincronizado, com um telemóvel a mostrar Mateus 1

Tecnologias

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

Resultados verificáveis

línguas listadas na documentação da API
15
downloads da app Android
50 mil+
play.google.com (abre noutro separador)

O que aprendi

Autenticação com vários guards para clientes móveis, e migrar dados de um sistema legado sem perder conteúdo.