Desenvolvendo um CRUD com Node.js, Express, Sequelize e EJS, Salvando os dados no MySQL(MariaDB) com ORM
Este projeto é um sistema de gerenciamento de usuários e livros, implementado utilizando Node.js, Express, Sequelize (para banco de dados MySQL), e EJS para renderização de views. Ele permite a criação, edição, exclusão e visualização de usuários e livros, além de uma relação N:N entre eles por meio de uma tabela intermediária chamada Leitura, que armazena o status de leitura de cada livro por um usuário (não iniciado, em andamento, concluído).
- Autenticação: Usuários podem se registrar e fazer login.
- Administração: O administrador pode gerenciar outros usuários, incluindo tornar um usuário administrador ou usuário comum.
- Perfil de Usuário: Cada usuário pode editar seu perfil, incluindo nome, e-mail e gênero favorito.
- Gerenciamento de Livros: Usuários podem obter livros, editar o status de leitura, e ver a lista de livros disponíveis.
- CRUD de Livros: O administrador pode adicionar, editar e excluir livros do sistema.
- Upload de Imagem: Cada livro pode ter uma imagem associada, que é carregada e excluída corretamente do servidor.
- Visualização de Livros: Todos os usuários podem visualizar a lista de livros cadastrados.
- Relação N:N entre Usuários e Livros: Cada usuário pode obter livros e marcar o status de leitura (não iniciado, em andamento ou concluído).
- Atualização de Status de Leitura: Usuários podem atualizar o status de leitura dos livros obtidos.
- Visualização Global: O administrador pode ver o status de leitura de todos os usuários no sistema.
- Node.js: Ambiente de execução JavaScript no servidor.
- Express: Framework web para Node.js.
- Sequelize: ORM para interagir com o banco de dados MySQL.
- MySQL: Banco de dados relacional.
- EJS: Motor de templates para renderização de views.
- Multer: Middleware para upload de arquivos.
- Express-session: Para manutenção de sessões de usuário (login e autenticação).
├── controllers/ # Contém os controladores de lógica de negócio (userController.js, livroController.js, leituraController.js)
├── models/ # Modelos do Sequelize (User.js, Livro.js, Leitura.js)
├── routes/ # Definição de rotas da aplicação (userRotas.js, livroRotas.js, leituraRotas.js)
├── views/ # Arquivos EJS para renderização das páginas HTML
├── public/ # Arquivos estáticos (CSS, JS, imagens)
├── uploads/ # Armazena os arquivos de imagem dos livros carregados
├── app.js # Arquivo principal da aplicação Express
└── package.json # Arquivo de configuração do Node.js com as dependências do projeto
- Node.js instalado
- MySQL instalado
git clone https://github.com/seu-usuario/crud-livros-usuarios.git
npm install
{
"development": {
"username": "root",
"password": "sua-senha",
"database": "bibioteca",
"host": "127.0.0.1",
"dialect": "mysql"
}
}
npx sequelize-cli db:migrate
npm start
http://localhost:3000\login
GET /users
POST /users
GET /users/:id
POST /users/edit/:id
POST /users/delete/:id
POST /users/tornar-admin/:id
POST /users/tornar-user/:id
GET /livros
POST /livros
GET /livros/:id
POST /livros/edit/:id
POST /livros/delete/:id
GET /leitura
GET /obter-livro/:id
POST /editar-status/:id
Contribuições são bem-vindas! Siga os seguintes passos para contribuir:
git checkout -b feature/minha-melhoria
git commit -m 'Adicionei uma nova funcionalidade'
git push origin feature/minha-melhoria