Skip to content

Repositório requerido da máteria de engenharia de software, com intuito educativo dos processos de criação de software.

Notifications You must be signed in to change notification settings

CaioSilvaUT/SmartBusBack

Repository files navigation

SmartBusBack

SmartBus Backend

Repositório requerido da matéria de Engenharia de Software, com intuito educativo dos processos de criação de software.

O SmartBus é um sistema que busca facilitar o acesso dos usuários de transporte público da cidade de Campo Mourão. O sistema conta com funcionalidades como visualização de horários, rotas, consulta de valores, além de permitir a recarga e renovação da carteirinha de forma completamente remota.

Estrutura do Projeto

O backend do SmartBus segue a arquitetura MVC (Model-View-Controller), além de utilizar alguns padrões de projeto, como Singleton e Factory Method. Abaixo estão as explicações breves sobre esses padrões e como eles são aplicados no sistema.

Model-View-Controller (MVC)

  • Model (Modelo): Representa a lógica de negócios e manipulação dos dados. Os modelos contêm métodos que lidam diretamente com o banco de dados, como consultas, inserções e atualizações. Exemplo: Model/Cartao.js manipula os dados da tabela de cartões.

  • View (Visão): No contexto de uma API, a "View" é representada pelas respostas que a API retorna, em JSON ou outro formato adequado. Essas respostas são consumidas pelo frontend.

  • Controller (Controlador): O controlador é responsável por receber as requisições do cliente, interagir com os modelos e devolver uma resposta apropriada. Exemplo: o arquivo Controllers/routes.js define as rotas e mapeia as requisições HTTP para os métodos dos modelos.

Design patterns

Como requerido nesta aplicação estão sendo utilizados dois design patterns o singleton e o factory method

1. Singleton

O padrão Singleton é utilizado para garantir que o sistema tenha apenas uma única instância de um objeto, como a conexão com o banco de dados, que será reutilizada em diferentes partes do sistema.

Exemplo:

let connection;

async function getConnection() {
    if (!connection) {
        const mysql = require('mysql2/promise');
        connection = await mysql.createConnection({ /* configuração */ });
    }
    return connection;
}

module.exports = { getConnection };

Aqui, a função getConnection() garante que uma única instância da conexão com o banco de dados seja criada e usada em todo o sistema.

2. Factory Method

O Factory Method é um padrão de criação utilizado para abstrair a lógica de criação dos objetos. No backend do SmartBus, ele é aplicado nos modelos para criação de instâncias que interagem com o banco de dados.

const UsuarioModel = require("../Model/Usuario");
const NotificacaoModel = require("../Model/Notificacao");
const CartaoModel = require("../Model/Cartao");

Aqui, diferentes modelos são criados para cada entidade (usuário, notificação, cartão), permitindo que o sistema trabalhe com a lógica específica de cada uma delas sem expor a criação direta de instâncias.

Como rodar o projeto

1. Clonar o repositório

git clone https://github.com/CaioSilvaUT/SmartBusBack.git

2. Instalar as dependências

Certifique-se de que o Node.js esteja instalado na sua máquina. Em seguida, instale as dependências do projeto com o comando:

npm install

3. Configurar o Banco de Dados

O projeto utiliza MySQL como banco de dados. Crie um banco de dados no MySQL e configure as credenciais de acesso no arquivo config/database.js.

// Exemplo de configuração do banco de dados:
const mysql = require('mysql2/promise');

async function getConnection() {
    return await mysql.createConnection({
        host: 'localhost',
        user: 'seu-usuario', //altere seu-usuario pelo usuario do seu banco de dados
        password: 'sua-senha', //altere sua-senha pela senha do seu banco de dados
        charset: 'utf8mb4',
    });
}

4. Rodar o servidor

Após configurar o banco de dados e instalar as dependências, execute o servidor com o comando:

npm run dev

About

Repositório requerido da máteria de engenharia de software, com intuito educativo dos processos de criação de software.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •