Nesta aula, você vai criar um projeto completo para uma livraria, do zero, aplicando os conceitos de MVC, helpers, e autenticação que vimos nas aulas anteriores. Vamos também configurar o arquivo package.json adequadamente e aprender sobre devDependencies e dependencies.

Objetivos da Aula:

  1. Criar um projeto para uma livraria usando o padrão MVC.
  2. Implementar autenticação de usuários (registro e login).
  3. Usar helpers para validações.
  4. Configurar corretamente o package.json com scripts e dependências.

1. Estrutura Inicial do Projeto

Aqui está a estrutura de pastas que você vai criar:

bookstore/
│
├── src/
│   ├── config/
│   │   └── database.ts
│   ├── controllers/
│   │   ├── authController.ts
│   │   └── bookController.ts
│   ├── helpers/
│   │   └── validationHelper.ts
│   ├── models/
│   │   └── bookModel.ts
│   │   └── userModel.ts
│   ├── repositories/
│   │   └── bookRepository.ts
│   │   └── userRepository.ts
│   ├── routes/
│   │   ├── authRoutes.ts
│   │   └── bookRoutes.ts
│   ├── server.ts
│
├── package.json
├── tsconfig.json
└── jest.config.js

2. Iniciando o Projeto com NPM

Dentro da pasta do projeto (bookstore), inicialize o npm e instale as dependências básicas:

npm init -y
npm install express pg dotenv
npm install --save-dev typescript jest @types/jest ts-jest supertest @types/express

3. Dependências e DevDependencies

Aqui está um exemplo de como ficará o package.json com as dependências e devDependencies separadas:

{
  "name": "bookstore",
  "version": "1.0.0",
  "scripts": {
    "start": "node dist/server.js",
    "dev": "ts-node-dev src/server.ts",
    "test": "jest"
  },
  "dependencies": {
    "express": "^4.17.1",
    "pg": "^8.6.0",
    "dotenv": "^10.0.0"
  },
  "devDependencies": {
    "typescript": "^4.5.2",
    "jest": "^27.2.5",
    "@types/jest": "^27.0.2",
    "ts-jest": "^27.0.5",
    "supertest": "^6.1.6",
    "@types/express": "^4.17.12",
    "ts-node-dev": "^1.1.8"
  }
}

Scripts no package.json: