Skip to content

a FullStack app for managing student enrollments in various course types (in-person, online, undergraduate, postgraduate). Backend: NestJS, TypeScript, MySQL with ObjectionJS for ORM. Includes unit tests and follows SOLID principles. Frontend: NuxtJS + VueJS with Bootstrap Vue for responsive design.

Notifications You must be signed in to change notification settings

Weslley03/fullstack-application-challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 

Repository files navigation

Descrição do Projeto Solicitado a criação de uma aplicação FullStack para resolver demandas quanto a matrículas de futuros alunos numa instituição específica. Esses alunos podem se matricular em mais de um curso, curso esse com possibilidades tanto Presencial, quanto EAD, com tipificação de Graduação e Pós Graduação.

Estrutura do Backend A aplicação utiliza NodeJS para a criação do servidor, com o NestJS como framework web, framework esse, escolhido por sua estrutura modular que facilita a organização do código e a aplicação dos princípios SOLID, resultando em uma arquitetura mais robusta e escalável.

A linguagem TypeScript foi utilizada para garantir um código tipado, proporcionando maior segurança durante o desenvolvimento e facilitando a manutenção e futuras melhorias.

Para manter a consistência e a qualidade do código, foi implementado o ESLint, padronizando a escrita e garantindo que as melhores práticas de programação sejam seguidas. Além disso, foram desenvolvidos testes unitários, assegurando a robustez da aplicação e permitindo uma maior confiança durante o processo de desenvolvimento e nas futuras alterações.

Modelagem de dados e Relações com MER

Modelo de Entidade-Relacionamento

Para o armazenamento de dados da aplicação, foi utilizado um banco de dados relacional e o MySQL Workbench para administração. A escolha por um banco relacional se deu pela necessidade de garantir integridade referencial e a possibilidade de realizar consultas complexas de forma eficiente. Para facilitar a interação com o banco de dados, foi utilizado o ObjectionJS como ORM, proporcionando uma interface intuitiva e simplificada para a manipulação das tabelas e a realização de queries complexas. A modelagem de dados foi elaborada utilizando um MER, o que permitiu identificar de forma clara as entidades e seus relacionamentos.

Entidades do Sistema

Aluno: Representa os alunos do sistema, contendo informações pessoais como nome, e-mail, telefone, CPF, data de nascimento e CEP. Documento: Armazena os documentos de identificação dos alunos, como RG ou CNH, incluindo detalhes como número, descrição (RH ou CNH) e imagem do documento. Matricula: Representa as matrículas realizadas pelos alunos em cursos, vinculando informações sobre o aluno e o curso em que está matriculado. Curso: Detalha os cursos disponíveis na instituição, incluindo nome, tipo, modalidade, valor total e mensalidades. Tipo_Curso: Representa as categorias dos cursos oferecidos pela instituição, como Graduação e Pós-Graduação. Modalidade: Armazena os tipos de modalidade de ensino, como presencial ou EAD.

O MER inclui as seguintes relações, que foram fundamentais para estruturar o banco de dados:

Relações 1:1: Aluno - Documento: Um aluno possui exatamente um documento associado, garantindo que os dados pessoais estejam diretamente ligados a um documento de identificação.

Relações 1:N: Aluno - Matrículas: Um aluno pode ter várias matrículas em diferentes cursos. Curso - Matrículas: Cada curso pode ter diversas matrículas associadas, permitindo que vários alunos estejam matriculados no mesmo curso. Tipo_Curso - Matrículas: Um tipo de curso pode estar relacionado a diversas matrículas. Modalidade - Matrículas: Cada modalidade (por exemplo, presencial ou online) pode estar associada a múltiplas matrículas.

Frontend da Aplicação Para o desenvolvimento do frontend, optei pelo NuxtJS juntamente com o VueJS como frameworks. A escolha foi motivada pela necessidade de criar uma aplicação com uma estrutura bem organizada e práticas que favoreçam a manutenção e a escalabilidade do projeto. O NuxtJS facilita o processo de desenvolvimento ao oferecer um sistema de roteamento automático de páginas, simplificando a criação de rotas e ajudando a manter uma estrutura limpa e intuitiva. Além disso, sua abordagem modular permite uma separação clara entre componentes, layouts, middlewares e páginas, seguindo os princípios de organização de código.

A integração com Bootstrap Vue foi escolhida para acelerar o desenvolvimento de interfaces responsivas, permitindo criar rapidamente um design adaptado a diferentes dispositivos, com foco em mobile-first.

About

a FullStack app for managing student enrollments in various course types (in-person, online, undergraduate, postgraduate). Backend: NestJS, TypeScript, MySQL with ObjectionJS for ORM. Includes unit tests and follows SOLID principles. Frontend: NuxtJS + VueJS with Bootstrap Vue for responsive design.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published