Saltar para o conteúdo
Edson Francisco
  • Hotelaria, restauração e redes

MyGym (FF Gym)

Gestão de membros, mensalidades, pagamentos e check-in por QR Code para um ginásio na Beira.

Período
2025–2026
Estado
Em desenvolvimento
Papel
Programador full-stack (projecto individual)
Cliente
FF Gym

Problema

O ginásio geria membros e pagamentos à mão. Era difícil saber quem estava em dívida, controlar a assiduidade e fechar o mês.

Solução

Aplicação web com membros, planos em meticais, pagamentos (M-Pesa, e-Mola, mKesh, dinheiro, transferência), check-in por QR Code, avisos de vencimento e relatórios exportáveis em Excel e PDF. Chegou-se aqui depois de quatro versões em cerca de três meses.

Decisões técnicas

  1. 01

    Quatro tentativas até uma stack única

    React/Vite com Express, depois Flutter com Supabase, depois Ionic/Angular com backend próprio (com um documento a comparar Ionic e Flutter), e por fim Next.js com Prisma. Uma só base de código full-stack web foi o que permitiu entregar: o núcleo (auth, membros, check-in, painel) ficou pronto num dia.

  2. 02

    Modelo de dados com os meios de pagamento locais

    O schema Prisma tem um enum com M-Pesa, e-Mola, mKesh, dinheiro, transferência e cartão, e os pacotes reais do ginásio (inscrição, mensal, estudante, semanal). Os relatórios somam por meio de pagamento sem campos de texto livre.

  3. 03

    Check-out automático por cron

    Os membros raramente fazem check-out. Um cron horário fecha check-ins abertos há mais de 4 horas e, se o dia mudou, fecha-os às 23:59:59, para que as estatísticas de assiduidade façam sentido.

  4. 04

    Estado do membro calculado, não escrito à mão

    Activo, inactivo, suspenso ou irregular é derivado das mensalidades e mostrado a cores nos relatórios, e um cron diário gera os avisos de vencimento.

Imagens

01 / 02 — Ecrã de entrada do MyGym com email e senha

Tecnologias

  • Next.js
  • React
  • TypeScript
  • Prisma
  • PostgreSQL
  • Tailwind CSS

Resultados verificáveis

modelos Prisma
6
grupos de rotas de API
12

O que aprendi

Mudar de stack três vezes custou semanas. A lição foi escrever a comparação antes de começar e escolher a opção que deixa entregar o MVP mais cedo, deixando a app móvel para depois.

ODS

  • ODS 8 · Trabalho Digno e Crescimento Económicoprincipal

    Membros, mensalidades e check-in por QR substituem cadernos e folhas de cálculo num pequeno ginásio, com relatórios e meios de pagamento locais (M-Pesa, e-Mola, mKesh).