Skip to content
@magas-xlr

Magas XLR

Programming mentoring to accelerate careers.

Regras da Comunidade

Nesta página será postada um conjunto de padrões necessários para ter um projeto perfeito, um projeto delicioso, um projeto nos trinques!

Padrão de Branch

Todas as branches precisam estar no padrão GitFlow. Exemplo: feat/TASK00-login-page Substituir TASK00 pelo código da issue, geralmente é a sigla do projeto seguida de um número de dois dígitos.

Estilo do Código

Para projetos javascript, utilizar o ESLint e o Prettier, além de colocar o seguinte código no seu arquivo .vscode/settings.json:

{
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  },
  "eslint.validate": ["javascript", "typescript"],
  "javascript.suggestionActions.enabled": false,
  "typescript.suggestionActions.enabled": false,
  "typescript.preferences.quoteStyle": "single",
  "javascript.preferences.quoteStyle": "single"
}

Git Ignore

Adicionar o seguinte código no seu arquivo .gitignore:

# dependencies
/node_modules
package-lock.json

# testing
/coverage
/reports

# production
/build

# stryker temp files
/stryker-tmp

Automatização de Commits

Utilizar o husky e o commitlint, caso queira, usar o commitizen também, mas ele é opcional.

Husky

Rodar no terminal:

npm install --save-dev husky
npx husky install

Commitlint

Rodar no terminal:

npm install --save-dev @commitlint/config-conventional @commitlint/cli

Criar o arquivo commitlint.config.js com:

module.exports = {
    extends: ['@commitlint/config-conventional'],
};

Criar o arquivo commit-msg na pasta .husky/ com:

npx commitlint --edit $1

Commitizen

Rodar no terminal:

npm install --save-dev commitizen cz-conventional-changelog

Adicionar depois das dependencias no package.json:

{
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-conventional-changelog"
    }
  }
}

Para criar o commit:

npx cz

Layout de Merge Request

O título do merge request segue o mesmo padrão de commit, deve seguir o seguinte padrão: feat(TASK00): Atividade Onde feat é tipo, TASK00 é o código da issue e Atividade o resumo do que foi feito.

Também é interessante inserir uma tag para cada tipo: enhancement: feat (coisa nova); bug: fix (arrumando algo); documentation: docs (documentação).

Adicione a seguinte informação no arquivo .github/PULL_REQUEST_TEMPLATE/pull_request_template.md:

# Descrição

<!--
Descreva brevemente as alterações realizadas neste pull request. Se houver uma issue associada, mencione-a aqui.
-->

Resolve o problema de desempenho na página de login (#123).

<!--
Este 123 é o código que aparece na url da issue, exemplo:
https://github.com/magas-xlr/projeto/issues/123
-->

# Mudanças

<!--
Lite o que foi feito.
-->

- Alterações no componente `login.component.ts` para otimizar o tempo de carregamento;
- Atualização do serviço de autenticação para utilizar um novo endpoint.

# Passos para Testar

<!--
Enumere como testar a mudança.
-->

1. Certifique-se de que o projeto está rodando localmente;
2. Navegue até a página de login;
3. Verifique se o tempo de carregamento foi reduzido;
4. Teste a funcionalidade de login com credenciais válidas e inválidas.

# Checklist

- [ ] Testes foram escritos e passam com sucesso;
- [ ] A esteira passou com sucesso.

# Prints
<!--  
Adicione somente se for algo visual.
-->

Não se aplica

Testes Unitários, de Mutação e End-to-End

Deve escrever testes unitários e de mutação para cada funcionalidade, cobrindo 100% dos casos. O teste unitário pode escolher qualquer biblioteca, porém os de mutação precisam ser feitos com o stryker e os E2E com *cypress.

Documentação

Se for uma API, será necessário implementar o swagger, caso seja uma biblioteca, deve colocar a forma de importação do pacote. Se for uma aplicação frontend, deve ter prints do aplicativo. Para todos os tipos de projetos, precisa ter os seguintes tópicos no README.md:

  • Título;
  • Badges de tag, framework e cobertura de testes (shields.io);
  • Descrição;
  • Funcionalidades;
  • Tecnologias;
  • Como rodar.

Automatização do Deploy

Todo deploy precisa gerar uma tag e um pacote. Para aplicações, precisa utilizar o docker. Seja ela uma aplicação ou uma biblioteca, precisa publicá-lo no Github Packages. Será necessário adicionar também a cobertura de código no codecov. Para gerar uma tag automaticamente, precisa utilizar o standard-version no husky para cada push. Além disso, deve-se adicionar isso no seu arquivo .github/workflows/release.yml:

name: Publish Product

on:
  push:
    branches:
      - main

permissions:
  contents: write
  packages: write

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '20'

      - name: Install dependencies
        run: npm install

      - name: Build project
        run: npm run build

      - name: Run mutation tests
        run: npm run mutation

      - name: Run unit tests
        run: npm test --coverage

      - name: Upload Coverage Reports to CodeCov
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: ./coverage/lcov.info
          flags: unittests
          name: codecov-coverage
          fail_ci_if_error: true

      - name: Log in to GitHub Package Registry
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

      - name: Configure Git user
        run: |
          git config --local user.name "github-actions[bot]"
          git config --local user.email "github-actions[bot]@users.noreply.github.com"

      # Coloque aqui o passo de criação de pacote no Github Package (docker, package.json, pom.xml, etc)

      - name: Create Tag
        run: |
          VERSION=$(node -p "require('./package.json').version")
          git tag "v$VERSION"
          git push origin "v$VERSION"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Para projetos embrionários, não precisam de muito dessas coisas aqui citadas, deve ser considerado apenas em projetos próximos ao passo de finalização (quando acaba todas as issues).

Popular repositories Loading

  1. spa-captain-steve spa-captain-steve Public

    Angular project

    1

  2. spa-pepe-le-pew spa-pepe-le-pew Public

    1

  3. api-captain-steve api-captain-steve Public

    Java project

  4. spa-booktastic-book spa-booktastic-book Public

    Angular Project

  5. pensador-profundo pensador-profundo Public

    Você pode questionar qualquer coisa, nenhuma pergunta é boba

  6. spa-golden-verbena spa-golden-verbena Public

    The survey frontend.

    JavaScript 1

Repositories

Showing 10 of 10 repositories
  • spa-golden-verbena Public

    The survey frontend.

    magas-xlr/spa-golden-verbena’s past year of commit activity
    JavaScript 0 1 1 1 Updated Jan 5, 2025
  • elementa-mon Public

    A card building game

    magas-xlr/elementa-mon’s past year of commit activity
    TypeScript 0 0 0 0 Updated Dec 3, 2024
  • .github Public

    Regras da Comunidade

    magas-xlr/.github’s past year of commit activity
    0 0 0 0 Updated Nov 8, 2024
  • umagas Public
    magas-xlr/umagas’s past year of commit activity
    0 0 0 0 Updated Sep 2, 2024
  • magas-xlr/spa-spell-card’s past year of commit activity
    0 0 0 0 Updated Aug 28, 2024
  • pensador-profundo Public

    Você pode questionar qualquer coisa, nenhuma pergunta é boba

    magas-xlr/pensador-profundo’s past year of commit activity
    0 0 0 0 Updated Aug 20, 2024
  • magas-xlr/spa-pepe-le-pew’s past year of commit activity
    1 0 1 0 Updated Aug 11, 2024
  • spa-booktastic-book Public

    Angular Project

    magas-xlr/spa-booktastic-book’s past year of commit activity
    0 0 1 0 Updated Aug 11, 2024
  • spa-captain-steve Public

    Angular project

    magas-xlr/spa-captain-steve’s past year of commit activity
    1 0 1 1 Updated Aug 11, 2024
  • api-captain-steve Public

    Java project

    magas-xlr/api-captain-steve’s past year of commit activity
    0 0 1 0 Updated Aug 10, 2024

Top languages

Loading…

Most used topics

Loading…