- 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
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.
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.
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.
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).
