Veja também: Backend
Este é um projeto frontend de Área de Membros para Cursos Online desenvolvido com as seguintes tecnologias:
- React com TypeScript para construção da interface;
- Vite para inicialização e build rápido do projeto;
- Tailwind CSS para estilização responsiva e customizável;
- Redux para gerenciamento de estado global;
- Integração com Backend: O frontend agora está inteiramente integrado com a API backend para manipulação de dados dinâmicos de módulos e aulas.
- Login e Autenticação de Usuários: O sistema agora utiliza autenticação via tokens JWT. Usuários logados têm acesso a módulos e aulas protegidos.
- Exibição Dinâmica de Dados: As informações de módulos e aulas são obtidas diretamente do backend, tornando a aplicação dinâmica.
- Controle de Acesso às Rotas: Implementação de redirecionamento e validação de acesso para rotas de login e dashboard.
Atualmente, o frontend está completamente integrado ao backend, tornando os dados dinâmicos e baseados em um sistema de autenticação via tokens.
- Redireciona automaticamente usuários não logados ou com token inválido para a tela de login.
- Após o login, mantém o estado de autenticação com base em tokens JWT.
- Usuários não logados são redirecionados ao login independentemente da rota acessada.
- Usuários logados que acessam
/são redirecionados para/dashboard. - Rotas inexistentes levam os usuários logados à página de erro 404.
- LoginPage (
/): Tela de login com autenticação. - DashboardPage (
/dashboard): Tela inicial após login, com resumo e navegação. - ModuloPage (
/modulo/:id): Exibição de aulas pertencentes a um módulo específico, agora com dados dinâmicos retirados da API. - NotFoundPage (rota desconhecida): Página de erro 404 para rotas inválidas.
O projeto segue uma arquitetura modularizada, onde cada pasta representa uma camada ou funcionalidade específica:
/public # Arquivos públicos estáticos
/src # Código fonte principal
/api # Funções para chamadas à API
/assets # Imagens, ícones, vídeos e outros recursos
/componentes # Componentes reutilizáveis
/pages # Páginas da aplicação
/redux # Configuração e slices do Redux
/styles # Arquivos de estilo, incluindo Tailwind e customizações
/utils # Funções utilitárias
App.tsx # Componente principal da aplicação
config.ts # Configurações globais da aplicação
main.tsx # Ponto de entrada do React
.env # Variáveis de ambiente
.gitignore # Arquivos e pastas ignorados pelo Git
tailwind.config.js # Configurações do Tailwind CSS
postcss.config.js # Configurações do PostCSS
vite.config.ts # Configurações do Vite
package.json # Dependências do projeto
package-lock.json # Controle de versões das dependências
- Cores principais: Definidas em
/styles/colors.ts. - Estilos personalizados: Arquivos como
card.csseindex.csscontêm customizações específicas para componentes.
Siga os passos abaixo para rodar o projeto localmente:
- Clone este repositório:
git clone https://github.com/felipebpassos/members-area-react-ts-tailwind.git
- Acesse o diretório do projeto:
cd members-area-react-ts-tailwind
- Instale as dependências:
npm install
- Inicie o servidor de desenvolvimento:
npm run dev
A aplicação consome os dados de módulos e aulas de uma API hospedada em https://ultimatemembers-api-rest-node.onrender.com. O processo de integração foi realizado com sucesso e o fluxo de autenticação e carregamento dos dados foi implementado utilizando Redux para gerenciar o estado e as interações com a API.
Veja repositório do backend aqui
- POST
/api/v1.0/auth/login: Login de usuário - GET
/api/v1.0/auth/validate-token: Validação do token JWT - GET
/api/v1.0/banners: Obter todos os banners - GET
/api/v1.0/modules: Obter todos os módulos - GET
/api/v1.0/modules/{id}/lessons: Obter aulas de um módulo específico
- Implementar a edição de dados no frontend em painel administrativo, com ações para adicionar, editar ou remover módulos e aulas.
- Continuar o desenvolvimento de novas funcionalidades como: integração com marketplaces (Kiwify, Hotmart), salvar progresso, download de arquivos, multitenancy com whitelabel, comunidade, gameficação e etc.
- Adicionar testes para validar o fluxo da aplicação.
