CR Cursos - App Mobile
Introdução
A plataforma CR Cursos nasceu de uma colaboração estratégica entre a escola profissionalizante CR Cursos, em Toritama - PE, e alunos de Cursos de TI. O projeto teve início no âmbito acadêmico na disciplina de Programação para Dispositivos Móveis.
O que começou como um projeto de classe evoluiu para uma solução full-stack robusta, impulsionada por um estudo aprofundado em arquitetura de software e desenvolvimento escalável. Hoje, a plataforma representa a convergência entre o aprendizado acadêmico e as necessidades reais do mercado, entregando uma ferramenta tecnológica de alto impacto para a comunidade escolar do Agreste Pernambucano.
Objetivo
O objetivo central é modernizar a experiência de ensino-aprendizagem da instituição por meio de um ecossistema mobile integrado. A plataforma visa:
Arquitetura do Projeto
Tecnologias Utilizadas
A escolha da stack tecnológica priorizou ferramentas de mercado consolidadas para garantir manutenibilidade, testabilidade, usabilidade mobile avançada e alta performance:
Funcionalidades
A plataforma opera sob um modelo de controle de acesso baseado em funções (RBAC):
Aluno
Professor
Administrador (ADM)
Visualização do Projeto
Estrutura do Banco de Dados e API
O projeto utiliza o Firebase Realtime Database como banco NoSQL e Express.js para orquestrar a API REST sob os princípios de Clean Architecture.
Organização do Banco de Dados (Firebase)
| Módulo | Descrição | Principais Entidades |
|---|---|---|
| Núcleo de Usuários | Gestão de perfis, permissões e autenticação. | alunos, professores, administradores |
| Gestão Acadêmica | Estrutura de ensino e organização escolar. | cursos, disciplinas, turmas, classes |
| Pedagógico | Materiais de apoio e avaliação de desempenho. | conteudos, atividades, notas, frequencias |
| Comunicação & Sistema | Interações e conteúdos privados. | mensagens_privadas, conteudos_livres |
Conclusão
A plataforma CR Cursos rege a modernização educacional em Toritama - PE, unindo uma arquitetura móvel fortemente estruturada com TypeScript e React Native a uma API desacoplada sob os princípios de Clean Architecture. Ao integrar testes automatizados, navegação dinâmica baseada em cargos (RBAC) e sincronização em tempo real via Firebase, a solução garante alta disponibilidade, segurança e praticidade para alunos, docentes e gestores da região do Agreste Pernambucano.
Estrutura do Repositório (Back-End)
O repositório do back-end foi desenhado seguindo o padrão Modular Monolith / Modular Architecture aliado à Clean Architecture. Cada domínio da aplicação possui isolamento de suas responsabilidades (regras de negócio, esquemas de validação, controllers, rotas e testes unitários/integração).
back-end/ ├── modules/ # Domínios independentes da aplicação │ ├── administrador/ │ ├── aluno/ │ ├── atividades/ │ ├── auth/ # Fluxos de autenticação e reset de senha │ ├── classe/ │ ├── conteudo/ │ ├── curso/ │ ├── disciplina/ │ ├── frequencia/ │ ├── notas/ │ ├── privado/ │ ├── professor/ │ └── turma/ │ ├── __tests__/ # Testes de integração do módulo (*Integration.test.js) │ ├── models/ # Modelos de dados do módulo (*Model.js) │ ├── types/ # Schemas de validação Zod/Joi (*Schema.js) │ ├── use-cases/ # Casos de uso e testes unitários (*.js / *.spec.js) │ ├── utils/ # Auxiliares específicos (ex: geradores de ID) │ ├── turmaController.js # Orquestrador de requisições HTTP │ ├── turmaRoutes.js # Definição dos endpoints REST │ └── turmaService.js # Camada de serviços acadêmicos ├── shared/ # Recursos globais e reutilizáveis │ ├── config/ # Conexões de serviços (firebase.js) │ ├── middlewares/ # Autenticação (JWT) e validação RBAC │ ├── models/ # Schemas globais │ ├── repositories/ # Acesso unificado de dados (userRepository.js) │ ├── services/ # Serviços externos (emailService.js) │ ├── swagger/ # Documentação OpenAPI/Swagger │ └── templates/ # Templates de e-mail Handlebars (.hbs) ├── docker-compose.yml # Orquestração de containers ├── Dockerfile # Imagem Docker do serviço Node.js ├── jest.config.js # Configuração da suíte de testes Jest ├── package.json # Dependências e scripts do projeto └── server.js # Ponto de entrada (Entrypoint) da aplicação Express
Estrutura do Repositório (Front-End Mobile)
O aplicativo móvel foi construído em React Native com Expo e totalmente tipado em TypeScript. O projeto adota uma arquitetura orientada a módulos com padrão MVC Client-Side, garantindo reuso de componentes UI e uma separação limpa de estado, controle de navegação e estilização.
AppCR\MeuApp/ ├── assets/ # Recursos estáticos (imagens, fontes, ícones) ├── components/ # Componentes atômicos reutilizáveis em todo o app │ ├── CustomButton.tsx │ ├── CustomInput.tsx │ └── GoogleSignInButton.tsx ├── config/ # Configurações globais de conexão e APIs │ ├── api.ts # Instância Axios/Fetch HTTP para o back-end │ └── firebaseConfig.ts # Conexão com Firebase SDK ├── contexts/ # Gerenciamento de estado global (Context API) │ ├── AuthContext.tsx # Contexto global de autenticação e perfil │ └── ThemeContext.tsx # Contexto para alteração de temas (Dark/Light) ├── modules/ # Módulos organizados por perfil de acesso (RBAC) │ ├── admin/ # Recursos e telas exclusivas da gestão escolar │ ├── aluno/ # Recursos, notas, frequências e visão do estudante │ ├── auth/ # Telas de login e fluxo de acesso │ └── professor/ # Lançamento de notas, chamadas e turmas │ ├── components/ # Componentes visuais do domínio (Ex: Modais, Cards) │ ├── controllers/ # Lógica de interface, validações e chamadas à API │ ├── screens/ # Telas do fluxo mobile (Ex: ProfessorHomeScreen.tsx) │ ├── styles/ # Estilização modularizada (StyleSheet) │ └── types/ # Interfaces e contratos TypeScript do módulo ├── navigation/ # Roteamento avançado React Navigation │ ├── AdminTabNavigator.tsx # Navegação em abas para Admin │ ├── AlunoTabNavigator.tsx # Navegação em abas para Aluno │ ├── ProfessorTabNavigator.tsx # Navegação em abas para Professor │ ├── DrawerNavigator.tsx # Menu lateral responsivo │ └── CustomDrawerContent.tsx ├── styles/ # Estilos globais da aplicação (globalStyles.ts, AppStyles.ts) ├── app.json # Configurações do Expo (Builds, splash screen, ícones) ├── App.tsx # Ponto de inicialização do React Native ├── babel.config.js # Presets e plugins do Babel ├── tsconfig.json # Configuração rigorosa de compilação TypeScript └── vercel.json # Orquestração para publicação/deploy do web build
Se você deseja implantar esta solução na sua instituição, discutir parcerias de negócios, colaborar em novos projetos de engenharia ou conhecer mais sobre o meu portfólio tecnológico, entre em contato: