Esta é uma API desenvolvida para o desafio backend da empresa UpBase. A ideia é utilizar a tecnologia NodeJS para criar um sistema de cadastro de alunos e professores em uma plataforma chamada UpBase Portal, integrando tecnologias backend (Node.js, TypeScript, Express, Prisma, Zod) com poersistência via banco de dados MySQL.
- Node.js
- TypeScript
- Express
- Prisma
- Zod
- Bcrypt
- Swagger
- MySQL
- CORS
- Instalação de Dependências:
npm install
- Configurações do banco de dados MySQL no arquivo
.env
pela variável de ambienteDATABASE_URL
. - Execução do projeto
npm run dev
Requisição (Payload)
{
name: string;
username: string;
email: string;
password: string;
passwordConfirmation: string;
student: boolean;
teacher: boolean;
}
Resposta (201)
{
id: number;
name: string;
username: string;
email: string;
student: boolean;
teacher: boolean;
createdAt: Date;
}
Resposta (400)
{
error: string;
}
Resposta (500)
{
error: string;
}
Resposta (200)
{
name: string;
username: string;
email: string;
password: string;
passwordConfirmation: string;
student: boolean;
teacher: boolean;
}[]
│ index.ts
│ swagger.json
│
├───controller
│ UserController.ts
│
├───dto
│ RequestUserDTO.ts
│
├───entity
│ User.ts
│
├───repository
│ UserRepository.ts
│
└───service
UserService.ts
- O nome do usuário deve ter no mínimo 2 caracteres e no máximo 127 caracteres.
- O nome de usuário deve ter no mínimo 3 caracteres e no máximo 127 caracteres.
- O nome de usuário pode conter apenas caracteres, dígitos e underline
- O e-mail informado deve estar em um formato válido.
- A senha deve ter no mínimo 8 caracteres e no máximo 63 caracteres.
- A senha e a confirmação de senha devem coincidir.
- A senha deve conter pelo menos uma letra minúscula, uma letra maiúscula e um dígito numérico.
- O novo usuário deve ser um estudante ou um professor (não os dois ou nenhum).
- O nome de usuário e o e-mail devem ser únicos no sistema.