Neste repositório será gerenciado o desenvolvimento da API do sistema CNotes. Aqui serão armazenados o código, documentação e afins durante todo o desenvolvimento da aplicação.
Essa é uma aplicação desenvolvida por meio do DJango. Sendo inicialmente gerada pelo
django-admin startproject
.
- Python
- Pipenv
- PostgreSQL (opcional)
- Instalar o
Pipenv
pip install pipenv
- Instalar as dependências do projeto
pipenv install --dev
- Algumas bibliotecas (como o Pillow) têm dependências no sistema operacional, nesse caso é necessário instalá-las de acordo com a documentação da biblioteca.
- Configurar variáveis de ambiente (arquivo
.env
)- Referência em
.env.example
- Referência em
- Primeiramente, ativar o ambiente virtual do Pipenv
pipenv shell
- Migrações
cd app
(se não estiver no diretório)python manage.py migrate
- Execução
cd app
(se não estiver no diretório)python manage.py runserver
- Testes
cd app
(se não estiver no diretório)python manage.py test
Quaisquer problemas, verificar o arquivo de troubleshoot, se o problema não estiver documentado lá, entrar em contato com algume colaboradore do projeto (ou abrir uma issue).
O projeto deve ser documentado no diretório docs
do repositório, em formato Markdown. Lá estarão documentações
diversas, desde problemas frequentes até detalhamentos do funcionamento da aplicação e telas.
Documentações dentro do código não devem ser substituídas por essas.
Para colaborar na aplicação será necessário seguir os seguintes requisitos:
É necessário conhecimento básico sobre o funcionamento do Git e como utilizá-lo. Além disso, o uso de boas práticas de Git é necessário, dentre elas ressaltam-se:
- Commits frequentes e sucintos
- Uso de branches para qualquer mudança na aplicação
- Evitar rebases e force pushes
O projeto usará como linter o flake8
e o formatador autopep8
, ambos já colocados como dependências do projeto. É
obrigatório a execução do flake8
antes de criar um PR, para evitar inconsistências de formatação. Em casos de não
execução, quaisquer problemas de estilização serão reportados no ciclo de CI.
É necessário desenvolver testes para quaisquer novas funcionalidades adicionadas à aplicação.
Além disso, recomenda-se fortemente a implementação do padrão de desenvolvimento TDD (Test-driven Development).
Todo código a ser adicionado na aplicação deve ser antes revisado por ume colega de equipe, na finalidade de evitar
entrada de código defeituoso na aplicação, a colaboração de todos nesse processo de revisão é extremamente importante.
Para realizar essa revisão é necessário que toda feature que venha a ser adiciona esteja em uma branch a parte (de
preferência com um nome descritivo como: feature/login
, fix/validacaoEmail
), que então será mesclada à branch de
desenvolvimento através de uma Pull Request, onde o código será validado e revisado antes de ser enviado.
Todos pushes e pull requests para as branches principais do projeto (no momento, só a dev
) estarão
sujeitos a execução automática de testes para assegurar a qualidade e funcionamento do código.
O projeto segue a estrutura padrão do DJango com algumas pequenas observações, dentre elas:
- Os testes ficam em pacotes a parte (
{app}/tests/
), ao invés de um único arquivotests.py
- Os modelos são concentrados no app
core
- Importante: ao adicionar um novo modelo em
core/models/
, importá-lo emcore/models/__init__.py
- Importante: ao adicionar um novo modelo em
- Adicionar novos modelos no admin por meio do
core/admin.py