O Dungeon App é o sistema oficial para gerenciamento de reservas, comunicação e administração da Associação Dungeon Belém, uma comunidade de jogadores de RPG, Board Games e Card Games. A plataforma foi construída para modernizar e automatizar os processos da associação, oferecendo uma experiência integrada para membros e administradores.
O projeto é construído com uma stack moderna e robusta, focada em performance, escalabilidade e uma ótima experiência de desenvolvimento.
- Frontend: Next.js (React Framework) com App Router, TypeScript
- UI: Tailwind CSS, Shadcn/UI, Lucide React (ícones)
- Backend & Infraestrutura: Firebase
- Autenticação: Firebase Authentication (Login com Google)
- Banco de Dados: Cloud Firestore (NoSQL em tempo real)
- Funções Serverless: Cloud Functions for Firebase
- Hospedagem: Firebase App Hosting
- Formulários: React Hook Form & Zod (validação)
- Estado e Sincronização com Firebase: React Firebase Hooks
- Pagamentos: Mercado Pago SDK
Para rodar o projeto em ambiente de desenvolvimento, siga os passos abaixo:
-
Clone o repositório:
git clone <https://github.com/davidsoncabista/Dungeon-App.git> cd <nome-do-repositorio>
-
Instale as dependências:
npm install
-
Configure as variáveis de ambiente:
- Crie um arquivo
.env.localna raiz do projeto. - Adicione as chaves de configuração do seu projeto Firebase. Você pode obtê-las no Console do Firebase > Configurações do Projeto.
- Crie um arquivo
-
Rode o servidor de desenvolvimento:
npm run dev
-
Acesse a aplicação:
- Abra http://localhost:3000 no seu navegador.
Para publicar as alterações no Firebase (App Hosting e Functions), utilize o comando:
firebase deploy
Certifique-se de estar autenticado na CLI do Firebase (firebase login).
Dentro da pasta /public existe o arquivo amazegame.html, um projeto de rastreador de iniciativa para RPG de mesa, desenvolvido em HTML, CSS e JavaScript puros. Este projeto é tratado de forma isolada do aplicativo Next.js principal.
- Propósito: Servir como uma ferramenta nostálgica e funcional para os membros da associação, homenageando uma versão mais antiga do rastreador.
- Acesso: O arquivo é servido estaticamente e pode ser acessado através da URL
/amazegame.html. - Integração: A intenção é que um link para esta página seja adicionado dinamicamente à landing page principal através do "Editor da Landing Page" (CMS), funcionando como um "easter egg" ou uma ferramenta de acesso rápido.
- Desenvolvimento: As modificações no
amazegame.htmlsão feitas diretamente no arquivo, sem afetar o build ou a lógica do aplicativo Next.js.
- Autenticação Segura e Acessível: Login simplificado com Google, utilizando um fluxo (
signInWithRedirect) compatível com WebViews de aplicativos móveis. - Fluxo de Onboarding Guiado: Novos usuários são recebidos com um tour interativo que os orienta a completar o perfil e a escolher um plano de associação.
- Controle de Acesso por Status: O sistema garante que apenas membros com status "Ativo" possam realizar novas reservas, direcionando usuários com pendências para a página de cobrança.
- Agenda Online (
/online-schedule): Uma agenda robusta que permite visualizar a disponibilidade das salas em formato de calendário mensal ou em uma timeline diária/semanal. - Minhas Reservas (
/my-bookings): Gerencie suas reservas, edite agendamentos futuros e visualize seu histórico completo. Aqui também fica o painel de cotas, que exibe em tempo real o saldo de reservas mensais, "corujão" e convidados. - Matrícula e Cobranças (
/billing): Novos usuários são direcionados para cá para escolher um plano e se associar. Membros existentes podem visualizar seu histórico de pagamentos e quitar pendências via PIX com Mercado Pago. - Meu Perfil (
/profile): Edite suas informações pessoais, apelido, telefone, documentos, data de nascimento (com verificação de maioridade) e preferências de jogo. O formulário de endereço conta com preenchimento automático via CEP. - Mural de Avisos (
/notices): Fique por dentro dos últimos comunicados gerais da administração. - Minhas Mensagens (
/messages): Caixa de entrada privada para receber mensagens diretas da administração (avisos, advertências, etc.), com um indicador de notificações não lidas no cabeçalho. - Votação (
/voting): Participe de votações importantes da associação através de uma página dedicada, que aparece no menu apenas quando você é elegível para votar.
Uma área de administração robusta e organizada, acessível através do menu principal para usuários com as permissões adequadas.
- Estatísticas (
/statistics): Dashboard com métricas de uso, como total de membros, número de reservas, aniversariantes do mês e um gráfico com os tipos de jogos mais curtidos pela comunidade. - Gerenciamento de Usuários (
/users): Acompanhe a lista de membros, gerencie status, aplique advertências e controle níveis de acesso administrativo (Administrador,Editor,Revisor). - Administração (
/admin): Um painel centralizado com sub-rotas para gerenciar todos os aspectos do sistema:- Sistema (
/admin/system): Crie e edite planos de associação, controle preços, cotas de reserva, limites de convidados e o valor da taxa de inscrição (joia). Também é aqui que se gerencia o sistema de votação. - Finanças (
/admin/finance): Visualize o histórico financeiro de todos os membros, gere cobranças avulsas e marque transações como pagas manualmente. - Mensagens (
/admin/messages): Envie mensagens privadas e categorizadas (aviso, advertência, multa, etc.) para usuários específicos, com um histórico completo de envio. - Regras de Acesso (
/admin/access-rules): Crie, edite e exclua dinamicamente as regras e permissões de cada nível de acesso administrativo. - Salas (
/admin/rooms): Crie, edite ou remova as salas de jogo, ajustando sua capacidade e configurações.
- Sistema (
- Editor da Landing Page (
/admin/landing-editor): Um CMS integrado para gerenciar o conteúdo da página inicial de forma modular, permitindo adicionar, editar e reordenar blocos de conteúdo (herói, lista de features, etc.) e gerenciar uma biblioteca de mídia otimizada.
- Davidson Santos Conceição: Project Lead & FullCircle Engineer.
- Heydrigh Leão Ribeiro: Full Stack Developer
- Caio de Oliveira Bastos: Tesoureiro & Front-end Developer
- Thyago Costa (@thyagobib): UI/UX Designer
- Luiz Pedro Reis Pinheiro (@luizprp): UI/UX Designer
- Hermann Duarte Ribeiro Filho: Homologação (Testes)
- Thiago de Castro Araújo: Homologação (Testes)
- Bruno Rafael Viana Oliveira (@brunorvo): Consultor de Fluxo e Homologação
- Iasmin Oneide Figueira de Castro Leal (@koda_master): Homologação (Testes)