Pular para o conteúdo
Todos os projetos

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
Página inicial do MinaTech: “Tecnologia feita por meninas, para meninas” e as +150 meninas que o programa já alcançou
Formulário de inscrição do MinaTech: o indicador de etapas e a primeira seção, dados pessoais
Fig. 01 — A página inicial e o formulário de inscrição, capturados do site no ar.

O impacto

Abrindo portas com tecnologia.

+150

meninas impactadas na Grande Florianópolis

Fig. 02 — O alcance do programa, nas palavras do próprio site.

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 ar

Inscriçã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.

Fig. 03 — Capturadas do site no ar.

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

Fig. 04 — O painel guarda os dados pessoais das meninas, então estas telas vêm do mesmo código rodando localmente em modo demo, com as três inscrições de exemplo que vêm com ele.

A arquitetura

Uma plataforma. Duas experiências.

Lado públicoAberto
  • /Início
  • /oscsEquipe e OSCs
  • /programacaoProgramação
  • /faqFAQ
  • /doacaoPatrocínio
  • /inscricaoInscrição

MinaTech

Base comumSupabase

Painel fechadoSó com login
  • 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.