Skip to content

caramelotech/migles

Migles

Plataforma multiplataforma (mobile + web) para organização de eventos sociais entre amigos e comunidades.

Migles não é uma plataforma de mensagens. Ele complementa WhatsApp/Telegram organizando o que acontece fora deles.

Arquitetura

Monorepo com pnpm workspaces:

migles/
├── src/       - Web (Next.js 15)
├── supabase/  - Migrações SQL e configuração
├── docs/      - Especificações de produto e design
├── app/       - Mobile com React Native (futuro)
└── packages/  - Pacotes compartilhados (futuro)

Stack

Camada Tecnologia
Web Next.js 15, TypeScript, Tailwind CSS, shadcn/ui
Mobile React Native (futuro)
Banco de dados PostgreSQL via Supabase com Row Level Security
Auth Supabase Auth
Storage Supabase Storage

Requisitos

Configuração inicial

1. Instalar dependências

npm install

2. Configurar variáveis de ambiente

Crie (ou edite) o arquivo .env.local na raiz do projeto:

NEXT_PUBLIC_SUPABASE_URL=https://<project-ref>.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=<anon-key>

# Necessário apenas para rodar db:seed
SUPABASE_SERVICE_ROLE_KEY=<service-role-key>

As chaves ficam em: Supabase Dashboard > Project Settings > API.

3. Aplicar migrações no banco

Autentique-se no Supabase CLI, vincule o projeto e aplique as migrações:

npx supabase login
npm run db:link
npm run db:push

O db:link vai pedir a senha do banco (disponível em Project Settings > Database > Database password).

Desenvolvimento

npm run dev

A aplicação fica disponível em http://localhost:3000.

Scripts disponíveis

Script Descrição
npm run dev Servidor de desenvolvimento
npm run build Build de produção
npm run start Inicia o build de produção
npm run lint Verifica problemas de lint
npm run format Formata o código com Prettier
npm run db:link Vincula o projeto Supabase ao projeto remoto
npm run db:push Aplica as migrações pendentes no banco remoto
npm run db:seed Cria o usuário de teste padrão

Estrutura do projeto

src/
  app/
    (protected)/       - Rotas autenticadas (eventos, comunidades, perfil)
    api/               - API Routes do Next.js (operações server-side)
    i/[code]/          - Página de convite por link
    login/             - Login e cadastro
    reset-password/    - Recuperação de senha
    u/[username]/      - Perfil público por username
  components/          - Componentes de UI compartilhados (shadcn/ui)
  features/            - Módulos por domínio (UI + lógica co-localizados)
  schemas/             - Schemas Zod (fonte única de validação por entidade)
  hooks/               - Custom hooks compartilhados
  integrations/
    supabase/          - Clientes Supabase (client-side e server-side) e tipos gerados
  lib/                 - Contextos de auth, helpers de upload e utilitários
  services/            - Acesso a dados e lógica de negócio (via Supabase client)
supabase/
  migrations/          - Migrações SQL do banco de dados
docs/
  spec-v1.md           - Especificação de produto

Banco de dados

O schema inclui as tabelas: profiles, communities, community_members, events, event_organizers, rsvps e event_comments.

Todas as tabelas usam Row Level Security (RLS). As migrações ficam em supabase/migrations/ e são aplicadas em ordem cronológica pelo db:push.

Regras de domínio

  • Todo evento deve ter pelo menos um organizador
  • Promoção automática de waitlist (FIFO) quando um confirmado cancela
  • Estados RSVP: pending -> confirmed | declined | waitlisted
  • Visibilidade: private (só convidados) ou community (membros da comunidade)
  • Status de membro: ACTIVE | PENDING | BANNED
  • Apenas admins da comunidade podem criar eventos vinculados a ela

Especificações

Todas as decisões de produto e arquitetura estão documentadas em docs/:

Para mudanças no produto, atualize a spec antes de implementar.

Licença

MIT

About

Multiplatform (mobile + web) event management app for groups and communities, featuring RSVP, waitlists and member management.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors