Skip to content
geoggrigoriPublic

About

Mobile-first matchmaking app for gamers — swipe, match and chat. React + Vite + Supabase + Capacitor.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gamematch

Português English Español

license mobile
typescript react vite tailwind supabase capacitor

sobre func arquitetura tech config mobile


⚠️ Código fechado. Este repositório é público apenas para consulta/avaliação — veja a seção Licença. Nenhum uso, cópia ou distribuição é permitido sem autorização.

gamematch screenshot

Sobre

gamematch é um app estilo "dating app" mobile-first para gamers. Em vez de vasculhar listas infinitas de amigos, você desliza (swipe) por outros jogadores, curte quem quer jogar junto e, quando o interesse é mútuo, forma um match e pode começar a conversar. Os perfis são construídos em torno do que as pessoas realmente jogam — jogos favoritos, o jogo atual, localização e interesses — pra garantir que quem você encontra é gente pra formar squad.

É uma aplicação full-stack de verdade: front-end em React + TypeScript com Supabase (Postgres + Auth + Realtime) no back, com toda a lógica de match garantida no servidor via funções SQL e Row Level Security. O mesmo build web também vira app nativo para iOS e Android via Capacitor.

Funcionalidades

Recurso O que faz
Autenticação por e-mail Cadastro e login via Supabase Auth; sessão persiste e renova automaticamente
Perfil auto-provisionado Uma linha de perfil é criada automaticamente no cadastro (trigger no banco), com username único derivado do e-mail
Perfil editável Apelido, bio, idade, localização, avatar (emoji), jogo atual, jogos favoritos e interesses
Swipe / matchmaking Deck de cards com candidatos ainda não avaliados. Curtir, passar ou super-like; curtida mútua cria um match
Filtro de jogo no deck Filtra o deck pelos jogos mais comuns no pool de candidatos
Matches & chat Todo match abre uma conversa; mensagens ficam salvas por match, com prévia da última mensagem na lista
Tela premium Página de planos/upgrade com os benefícios premium
Rotas protegidas Perfil, swipe e chat exigem autenticação
Seguro por design Row Level Security em todas as tabelas — swipes, matches e acesso a mensagens são garantidos no Postgres, não só na UI
Multiplataforma Roda no navegador e como app nativo iOS/Android via Capacitor

Arquitetura

flowchart LR
  subgraph Client["App React + Vite (web / iOS / Android)"]
    UI["Páginas: Welcome · Profile · Swipe · Chat · Premium"]
    Auth["useAuth (AuthProvider)"]
    API["lib/api.ts"]
  end

  subgraph Supabase["Supabase"]
    SAuth["Auth"]
    DB[("Postgres + RLS")]
    RPC["Funções SQL:<br/>record_swipe · get_candidates · get_my_matches"]
    RT["Realtime (mensagens)"]
  end

  UI --> Auth --> SAuth
  UI --> API
  API --> RPC --> DB
  API --> DB
  RT --> UI
Loading

Como um match acontece: um swipe é enviado à função record_swipe, que registra o like/pass e, se a outra pessoa já tinha curtido antes, cria uma linha em matches e retorna { matched: true }. Os candidatos vêm de get_candidates (todo mundo exceto você e quem você já avaliou), e get_my_matches retorna cada match com o perfil da outra pessoa e a última mensagem.

Tecnologias

Camada Tecnologia
Linguagem TypeScript
UI React 18, Tailwind CSS + tailwindcss-animate, shadcn/ui (Radix UI)
Build Vite 5 (@vitejs/plugin-react-swc)
Roteamento React Router
Dados TanStack Query
Formulários React Hook Form + Zod
Backend Supabase (Postgres, Auth, Realtime)
Mobile Capacitor (iOS / Android)

Configuração

1. Pré-requisitos: Node.js 18+, npm, e um projeto Supabase gratuito.

2. Instalar:

git clone https://github.com/geoggrigori/gamematch.git
cd gamematch
npm install

3. Banco de dados: no SQL Editor do Supabase, rode supabase/schema.sql — cria as tabelas profiles, swipes, matches, messages, as funções de matching, as políticas de RLS, o trigger de auto-perfil e ativa o Realtime em messages.

4. Variáveis de ambiente:

cp .env.example .env.local
VITE_SUPABASE_URL=https://SEU-PROJETO.supabase.co
VITE_SUPABASE_ANON_KEY=SUA-CHAVE-ANON-PUBLICA

5. Rodar:

npm run dev   # http://localhost:8080

Build Mobile

O build web vira app nativo via Capacitor (app id app.gamematch.mobile):

npm run build
npx cap add android   # uma vez
npx cap add ios       # uma vez, só macOS
npx cap sync
npx cap run android
npx cap run ios       # só macOS

Licença

Todos os direitos reservados. Este código é público apenas para visualização/avaliação (portfólio) — não é open source. Nenhuma permissão de uso, cópia, modificação ou distribuição é concedida. Veja LICENSE para o texto completo.

divider

Desenvolvido por Grigori · 2026

About

Mobile-first matchmaking app for gamers — swipe, match and chat. React + Vite + Supabase + Capacitor.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages