Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Creative Flow - Wiki Creative Flow - Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 24
    • Issues 24
    • List
    • Boards
    • Service Desk
    • Milestones
  • Deployments
    • Deployments
    • Releases
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • Creative Flow
  • Creative Flow - WikiCreative Flow - Wiki
  • Wiki
  • Configuração

Last edited by Andressa Farkas Jun 15, 2025
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Configuração

Home Escopo Gerência Processo Design Configuração Arquitetura Banco de Dados

Sumário

  • Configuração
    • Pré-Requisitos
    • Extensões Recomendadas
    • Frontend
    • Backend

Configuração

Esta seção apresentará todas as configurações necessárias dos ambientes do Front-end, Back-end e Banco de Dados, permitindo a execução do projeto completo localmente.

Pré-Requisitos

Primeiramente, garanta que os seguintes aplicativos estão instalados corretamente em sua máquina:

  • Git - https://git-scm.com/downloads
  • Node - https://nodejs.org/en/
  • VsCode - https://code.visualstudio.com/Download (Ou outra IDE para desenvolvimento)

Extensões Recomendadas

Após instalar o VsCode, abrir um terminal nele e rodar os seguintes comandos (Copie e cole):

code --install-extension aaron-bond.better-comments
code --install-extension bracketpaircolordlw.bracket-pair-color-dlw
code --install-extension bradlc.vscode-tailwindcss
code --install-extension dbaeumer.vscode-eslint
code --install-extension eamodio.gitlens
code --install-extension esbenp.prettier-vscode
code --install-extension firsttris.vscode-jest-runner
code --install-extension letmaik.git-tree-compare
code --install-extension ms-vscode.vscode-typescript-next
code --install-extension yoavbls.pretty-ts-errors

Frontend

Para o fronted do projeto, utilizaremos a linguagem Next.js + Tailwind CSS + TypeScript + ESLint + Prettier

  • https://nextjs.org/docs

Rodando a aplicação:

Primeiro, execute o comando abaixo para rodar a aplicação:

npm run dev

Abra o link text no seu navegador para ver os resultados.

Nomenclatura de arquivos:

  • Arquivos de páginas devem ser nomeados em kebab-case (exemplo: src/app/my-page/page.tsx)
  • Arquivos de componentes devem ser nomeados em PascalCase (exemplo: src/components/MyComponent/MyComponent.tsx)
  • Arquivos de componentes de UI devem ser nomeados em PascalCase (exemplo: src/components/ui/MyComponent.tsx)

Desenvolvimento:

  • Cores: Utilizar as varívais de estilização do tailwind ( exemplos de uso em src/app/examples )
  • Tipografia: Utilizar componente de Text do src/components/ui/Text.tsx ( exemplos de uso em src/app/examples )
  • Dicionário: Strings estáticas devem ser armazenadas em um arquivo de dicionário public/dictionaries. Neste arquvio contém dois idiomas ( pt-Br e en-Us ), as strings devem ser armazenadas em ambos os idiomas, sendo agrupadas por alguma tag que identifique a que estão relacionadas. Por exemplo: Strings relacionadas a tela "Profile", nos arquvios de idioma deve ser criado um objeto "Profile": { 'string-variable': "traducao" } ( Profile em PascalCase ) que vai conter todas as strings presentes na tela "Profile". Esta tag deve ser utilizada na importação do hook de tradução const t = useTranslation('Profile') e as strings devem ser acessadas através do t('string-variable') ( string-variable em kebab-case )
  • Estilização: Utilizar o tailwind para estilização de componentes https://tailwindcss.com/docs/ ( No menu da lateral esquerda do site você encontra a documentação de cada classe: LAYOUT | FLEXBOX & GRID | SPACING | SIZING | BACKGROUNDS | BORDERS | EFFECTS | FILTERS | TABLES | TRANSITION & ANIMATION | TRANSFORMS | INTERACTIVITY | SVG | ACESSIBILITY )
  • Código: Desenvolver o código em inglês
  • Formatação: Antes de commitar rodar npm run lint -- --fix para corrigir os erros de formatação, erros no código apontados pelo eslint devem ser corrigidos na mão, ecitar o uso do // eslint-disable-next-line para ignorar os erros

Páginas:

  • Arquivos de páginas devem ser criados na pasta src/app/<page-name>/page.tsx ( page-name em kebab-case )
  • Functions de página devem ser nomeadas com a primeira letra maiúscula ( PascalCase )
  • Páginas NÃO devem ser client components ( não devem ter use client ), a menos que seja necessário
  • Paginas de exemplo de uso de componente devem ser criadas em src/app/examples/<page-name>/page.tsx ( page-name em kebab-case; Idealmente não devem ser comitadas )

Componentes:

  • Arquivos de componentes devem ser criados na pasta src/components/<ComponentName>/ ( ComponentName em PascalCase )
  • Rota completa: src/components/<ComponentName>/<ComponentName>.tsx ( ComponentName em PascalCase )
  • Arquivos de componentes devem ser nomeados com a primeira letra maiúscula ( PascalCase )
  • Arquivos de componentes devem ser nomeados com o mesmo nome da pasta
  • Arquivos relacionados a um componente devem ser criados na mesma pasta ( caso este não seja utilizado em outros componentes )

Componentes de UI:

  • Componentes de UI são componentes que não possuem lógica de negócio, apenas estilização e renderização de dados
  • Componentes de UI devem ser criados na pasta src/components/ui/
  • Rota completa: src/components/ui/<ComponentName>.tsx ( ComponentName em PascalCase )
  • Arquivos de componentes de UI devem ser o mais genérico possivel
  • Arquivos de componentes de UI devem ser nomeados com a primeira letra maiúscula

Component x Function/Arrow Function:

  • Componentes devem ser criados como function components ( export default function ) ComponentName em PascalCase
  • Funções são criadas dentro de componentes, não devem ser exportadas ( const = () => { ... } ) functionName em camelCase

Backend

Para o backend do projeto, utilizaremos a linguagem Nest.js

  • https://docs.nestjs.com/

Banco de Dados:

Crie e execute o container do banco de dados usando os comandos abaixo:

docker build -t creativeflow-postgres .

docker run --env-file ./docker.env --name creativeflow-db -p 5432:5432 creativeflow-postgres

Após, defina a conexão com o backend:

.env

DATABASE_URL="postgresql://<user>:<password>@localhost:5432/creativeflow"

# Set <user> and <password> with the values provided inside 'docker.env'

Execute o prisma:

# Creates database structure
npx prisma migrate dev --name init

# Verify conenction
npx prisma db pull

#Database seeding
npm run prisma:seed

#Reset database
npm run prisma:reset

#Database update
npm run prisma:update

Nomenclatura de arquivos:

  • Diretórios (pastas) devem ser nomeados em camelCase (exemplo: src/controllers)
  • Todos os arquivos devem ser nomeados em camelCase (exemplo: src/controllers/userExercise.controller.ts)
  • Todos os arquivos devem ser nomeados baseados nas entidades dos mesmos no arquivo schema.prisma seguidos por sua função arquitetural (exemplo: O arquivo de service da entidade User deve ser nomeado user.service.ts)
  • Arquivos de DTO devem, além de seguir os padrões anteriores, possuir o sufixo DTO (exemplo: o DTO de recebido de um exercício de usuário, deve ser nomeado userExerciseDTO.dto.ts)
  • Arquivos de teste devem estar dentro de um diretório tests dentro do diretório arquitetural correspondente e devem ter a denominação spec ( exemplo: src/controllers/tests/userExercise.controller.spec.ts )

Desenvolvimento:

  • Rotas:
    • Objetos Controllers devem ser nomeados em PascalCase (exemplo: export class UserExerciseController)
    • Controllers devem ter o decorator @ApiBearerAuth('Authorization') em seu cabeçalho isso fará a autenticação do usuário com o token JWT se aplicar a todas as rotas dentro daquele controller
    • Rotas públicas devem ter o decorator @IsPublic(), isso fará com que o token JWT não seja necessário para acessar a rota.
    • Na declaração da rota, o NestJS exige um decorator para o tipo de rota (GET, POST, DELETE, etc) e o caminho da rota. O caminho deve ser nomeado em kebab-case (exemplo: @Get('/user-exercise'))
    • Em casos que a rota tenha um único parâmetro, o mesmo deve ser nomeado em kebab-case e passado diretamente no URL(exemplo: @Get('/user-exercise/:id') e nos parâmetros da função getUserExercise(@Param('id') id: string))
    • Em casos que a rota tenha mais de um parâmetro, deve ser utilizado um DTO personalizado para aquele caso
    • Todos os métodos de um controller devem ter seus parâmetros e seus retornos tipados, mesmo que o retorno seja void(exemplo: getUserExercise(@Param('id') id: string): Promise<UserExerciseDTO>)
  • Data Transfer Objects (DTOs):
    • DTOs devem ter apenas os campos necessários para a operação que estão realizando e devem ter decorators do class-validator para validação dos dados recebidos. Exemplo: @IsString(), @IsEmail(), @IsNotEmpty(), @IsOptional(), @IsBoolean(), @IsNumber(), @IsDate(), etc.
    • DTOs devem ser nomeados em PascalCase e devem ter o sufixo DTO (exemplo: UserExerciseDTO.dto.ts)
  • Serivces:
    • Objetos Service devem ser nomeados em PascalCase (exemplo: export class UserExerciseService)
    • Services devem ter o decorator @Injectable() em seu cabeçalho
    • Todos os métodos de um service devem ter seus parâmetros e seus retornos tipados, mesmo que o retorno seja void(exemplo: getUserExercise(id: string): Promise<UserExerciseDTO>)
    • Erros esperados (como usuário não estar no BD) devem ser lançados com o HttpException do NestJS, passando o código de erro e a mensagem de erro. Exemplo: throw new HttpException('User not found', HttpStatus.NOT_FOUND)
  • Mappers:
    • Mappers devem ser utilizados para a criação de linhas nas tabelas do banco de dados (veja exemplo no arquivo src/mappers/user.mapper.ts)
    • Mappers devem ser nomeados em PascalCase e devem ter o sufixo Mapper (exemplo: UserExerciseMapper.mapper.ts)
  • Código: Desenvolver o código em inglês
  • Formatação: Antes de commitar rodar npm run lint -- --fix para corrigir os erros de formatação, erros no código apontados pelo eslint devem ser corrigidos na mão, evitar o uso do // eslint-disable-next-line para ignorar os erros
Clone repository
  • Arquitetura
  • Banco de Dados
  • Configuração
  • Design
  • Escopo
  • Gerência
  • Home
  • Processo