https://github.com/viniciusquintas/crud-web-fullstack
Esse projeto é um desafio técnico que implementa princípios de Clean Architecture, SOLID, e Design Patterns
https://github.com/viniciusquintas/crud-web-fullstack
clean-architecture design-patterns express firebase nextjs nodejs solid-principles tailwindcss typescript
Last synced: 3 months ago
JSON representation
Esse projeto é um desafio técnico que implementa princípios de Clean Architecture, SOLID, e Design Patterns
- Host: GitHub
- URL: https://github.com/viniciusquintas/crud-web-fullstack
- Owner: ViniciusQuintas
- Created: 2024-09-16T12:51:49.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-31T17:26:23.000Z (over 1 year ago)
- Last Synced: 2025-01-04T06:25:24.870Z (over 1 year ago)
- Topics: clean-architecture, design-patterns, express, firebase, nextjs, nodejs, solid-principles, tailwindcss, typescript
- Language: TypeScript
- Homepage:
- Size: 213 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Projeto CRUD de Clientes com Clean Architecture e SOLID Principles
Este projeto é uma aplicação CRUD para gerenciar clientes, desenvolvida como parte de um desafio técnico. A aplicação permite criar, listar, editar, copiar e excluir registros de clientes, utilizando uma arquitetura baseada em princípios de **Clean Architecture**, **SOLID**, e **Design Patterns**. A aplicação é composta por um backend em **Node.js** com **Express** e um frontend em **Next.js**.
## Tecnologias Utilizadas
- **Node.js:** Para execução do backend.
- **Express.js:** Framework backend para receber e processar requisições HTTP.
- **Next.js (React):** Framework frontend para construir interfaces de usuário.
- **Firebird:** Banco de dados utilizado no projeto.
- **TypeScript:** Tipagem estática para maior robustez.
- **Tailwind CSS:** Framework CSS para estilização da interface.
- **Lucide:** Biblioteca de ícones para uma UI mais intuitiva.
## Arquitetura e Organização do Projeto
O projeto foi desenvolvido seguindo o princípio de **Clean Architecture**, separando as camadas de responsabilidade e aplicando os **SOLID Principles**. A estrutura principal do projeto está organizada da seguinte maneira:
### Estrutura de Pastas
- **/adapters**: Contém controladores que conectam a lógica de negócios com a interface e o banco de dados.
- **/domain**: Inclui entidades e interfaces, definindo as propriedades dos clientes e as abstrações utilizadas no repositório.
- **/external/db**: Inclui a implementação do repositório de dados e a conexão com o banco de dados.
- **/main**: Contém os arquivos principais de configuração e os componentes de UI no frontend.
- **/interactors**: Contém os serviços do frontend para se comunicar com o backend.
Essa estrutura foi pensada para desacoplar a lógica de negócios da interface e da infraestrutura, facilitando a manutenção e a troca de componentes, caso necessário.
## Instalação e Configuração
### Pré-requisitos
- Node.js
- Banco de dados Firebird
- Ferramenta de gerenciamento de Firebird, como FlameRobin
### Passos
1. Clone o repositório:
```bash
git clone https://github.com/seu-usuario/crud-web-fullstack.git
cd crud-web-fullstack
```
2. Instale as dependências para o backend e o frontend:
```bash
npm install
```
3. Configure o arquivo `.env`:
```plaintext
PORT=3000
DB_HOST=localhost
DB_PORT=3050
DB_DATABASE=C:\seu-caminho\seu-banco.fdb
DB_USER
```
4. Execute o servidor backend
```bash
npm run dev
```
5. Em um novo terminal, execute o servidor frontend (Next.js):
```bash
npm run dev
```