Impacto social / ONG
MinaTech
Tecnologia com propósito.
A plataforma da Jornada Minatech — um programa gratuito, organizado por duas ONGs, que leva meninas de escolas públicas para a tecnologia e a engenharia.
- Papel
- Desenvolvedor full‑stack
- Equipe
- Quatro desenvolvedores
- Ano
- 2026
- Organização
- Corali e Engenheiros sem Fronteiras (Florianópolis)
- React
- Vite
- Node.js
- Supabase


O impacto
Abrindo portas com tecnologia.
+150
meninas impactadas na Grande Florianópolis
A Jornada Minatech mostra a meninas de escolas públicas que a engenharia e a tecnologia também são para elas.
100%
gratuito para as meninas
3
sábados: rodas de conversa, visita aos laboratórios da UFSC, mão na massa na Neoway
11
mulheres na equipe do programa
2
ONGs à frente: Corali e Engenheiros sem Fronteiras
A experiência
Da primeira visita de uma menina à decisão da equipe.
Uma menina e a família dela
Esse programa é para mim?
Quem quer patrocinar
Como eu posso ajudar?
A equipe
Quem fica com cada vaga?
Experiência pública
Seis páginas, abertas a qualquer pessoa.
Tudo o que uma família pergunta antes de dizer sim — quem faz o programa, quando e onde, as dúvidas mais comuns — e duas ações: se inscrever ou patrocinar.
Ver o site no arInscrição. Cinco seções: dados pessoais, contato, diversidade e inclusão, situação familiar, acesso digital.
Patrocínio. O QR code do PIX e um botão que copia a chave.
Painel de curadoria
Tudo de que a equipe precisa para escolher.
Depois do login: totais por status, abas e busca, aprovar, reprovar ou excluir, cada inscrição completa, exportação em CSV — e a lista de quem pode entrar.
Inscrições. A lista, cada linha com as suas ações; abaixo, os administradores.
Uma inscrição. Uma inscrição completa: as cinco seções do formulário, como a equipe as lê.
A arquitetura
Uma plataforma. Duas experiências.
- /Início
- /oscsEquipe e OSCs
- /programacaoProgramação
- /faqFAQ
- /doacaoPatrocínio
- /inscricaoInscrição
MinaTech
Base comumSupabase
- LoginSupabase Auth
- Lista · busca · CSVGET /api/admin/inscricoes
- Aprovar · reprovarPATCH /api/admin/inscricoes/:id
- ExcluirDELETE /api/admin/inscricoes/:id
- AdministradoresGET · POST · DELETE /api/admin/admins
As duas portas da API
POST /api/inscricao
Aberta a qualquer pessoa, com limite: 10 inscrições por IP a cada 15 minutos. Cada uma entra como pendente.
/api/admin/*
Toda chamada leva o token da sessão do Supabase Auth, e o e‑mail precisa ser um dos que o programa autorizou.
O que ela guarda
inscricoes
Dez respostas em cinco grupos, um status — pendente, aprovada ou reprovada — e as datas.
admin_emails
Os administradores que a equipe gerencia. Nenhuma política abre a tabela: só a API chega nela.
Row Level Security
Com a chave pública, uma inscrição só pode ser inserida; ler, alterar ou excluir exige uma sessão.
A única página pública que grava na base.
Fig. 05 — Desenhado a partir do código: as rotas de um app React, as duas portas da API Express e a base por trás das duas.
Decisões
Um deploy, um domínio
O app React e a API Express vão juntos num projeto da Vercel: toda chamada a /api cai numa única função serverless, no próprio domínio do site, com um só conjunto de variáveis de ambiente.
Conferido nas duas pontas
O formulário aponta cada campo obrigatório quando ela sai dele; a API confere tudo de novo — as opções permitidas, o e‑mail, a idade como número inteiro — e grava só o registro já limpo.
Roda sem credenciais
Sem as chaves do Supabase, o mesmo código passa a usar a memória, com três inscrições de exemplo e um login de demonstração — qualquer pessoa roda e avalia sem tocar em dados reais.
Engenharia e contribuição
Simples para as meninas. Cuidadosa com os dados delas.
Estrutura
Um repositório, duas metades
Um app React 18 com oito rotas, a do painel atrás de uma guarda; uma API Express em camadas — rotas, middlewares, controladores e um repositório, a única parte que sabe onde os dados moram.
Inscrição
Um formulário longo, possível
O indicador observa qual seção está na tela; o telefone ganha máscara +55; os campos obrigatórios são conferidos quando ela sai deles, e o envio leva ao primeiro que falta corrigir.
Painel
Rápido sobre a lista que já tem
Totais, abas e busca trabalham sobre a lista já carregada, então filtrar não custa requisição; mudar um status atualiza só a linha; excluir pede confirmação; o CSV é o que está na tela, codificado para o Excel.
Usuários e acesso
Dois níveis de administrador
Os super‑admins ficam numa variável de ambiente — ocultos e impossíveis de remover pelo painel. A equipe adiciona os demais sozinha; cada e‑mail novo recebe um convite, e ninguém consegue remover o próprio acesso.
Banco de dados
Regras no esquema
Postgres no Supabase: o status é uma restrição com três valores, um índice sustenta o filtro por status da API, e cada inscrição guarda quando foi criada e alterada pela última vez.
Minha parte
Full‑stack, numa equipe de quatro: do site público e da inscrição à API, ao banco de dados e ao painel de curadoria.
O trabalho da equipe entrava por pull requests, num repositório compartilhado.
Feito com
- React
- JavaScript
- Vite
- Node.js
- APIs REST
- Supabase
- PostgreSQL
- Vercel
- Express
- React Router
- Helmet
- express-rate-limit
Resultados e próximos passos
Da inscrição à seleção, nas mãos do próprio programa.
A Jornada tem um endereço próprio: meninas e famílias encontram o que precisam para dizer sim, quem patrocina encontra a chave PIX, e a equipe decide cada vaga e cuida do próprio acesso ao painel.
Seleção com contexto
Cada inscrição chega como pendente, com o que o programa pergunta — escolaridade, situação familiar, acesso digital — para a equipe pesar.
Acesso nas mãos da equipe
O e‑mail do próprio programa já entra como administrador, e a equipe adiciona ou remove os demais pelo painel.
Fácil de assumir
Um repositório, um comando para rodar o site e a API juntos, e um README que percorre o Supabase e a Vercel passo a passo.
Próximo passoBlog e cursos EAD — previstos, ainda não construídos.