Skip to content
This repository has been archived by the owner on Jun 11, 2023. It is now read-only.
/ urlReduce Public archive

🐉 Projeto desenvolvido no BootCamp Dev Pro do python pro www.python.pro.br.

Notifications You must be signed in to change notification settings

HenriqueCCdA/urlReduce

Repository files navigation

🐍 urlReduce 🐍

Updates codecov Python application

Nesse repositorio temos o projeto desenvolvido no BootCamp Dev Pro da PythonPro. O objetivo desse projeto é desenvolver um redutor de url. O link para o deploy da aplicação no Heroku pode ser encontrada no link abaixo:

🔥🔥🔥https://urlreduce.herokuapp.com/🔥🔥🔥

Principais tecnologias utilizadas:

Necessidade Tecnologias
Framework backEnd Django
Framework FrontEnd Chart.js
CI Github Actions
CD Heroku
Banco de dados PostgresSQL
Gestão de dependecias Pipenv
Testes Pytest
Relatorio de Erros Sentry
Servidor de arquivo estaticos Whitenose
WSGI Gunicorn

Passos desensolvidos durante o projeto

1) Configuração do projeto 🛠

  • criar o ambiente virtual:

    pipenv install
  • Instalando django:

    pipenv install django
  • Instalando o baker

    pipenv install -d model-bakery
  • Instalando flake8 como dependencia de desenvolimento:

    pipenv install -d flake8
  • Instalar o dj-database-url

  • Configurando o flake8 através do arquivo .flake8

    [flake8]
    max-line-length = 120
    exclude=.venv

    Esta são apenas as configurações inicias com o tempo elas podem mudar

  • Criando o arquivo .gitignore

  • Inicializando o projeto Django

    pipenv shell
    django-admin.exe startproject devpro .

    Para testar pode-se rodar o servidor através de:

    python manage.py runserver
  • Instalando o driver para postgres:

    pipenv install psycopg2-binary
  • Instalando a lib python-decouple, criando o arquivo local .env e arquivo versionado contrib/env-sample

    DEBUG=FALSE
    SECRET_KEY=Defina sua chave secreta aqui
    ALLOWED_HOSTS=
    INTERNAL_IPS=
    SENTRY_DSN=
    DATABASE_URL=postgres://postgres:postgres@localhost/testedb
  • Criar a aplicação base

    cd devpro
    python ..\manage.py startapp base

    Para testar pode-se rodar o servidor através de:

    python manage.py runserver
  • Instalando o pytest-django

    pipenv install -d 'pytest-django'

    criar o arquivo pytest.in

    [pytest]
    DJANGO_SETTINGS_MODULE = devpro.settings

    Rodando os testes.

    python -m pytest
  • Instalando a cobertura de testes com codecov

    pipenv install -d 'pytest-cov' codecov
  • Instalando o ipython e django-extensions

    pipenv install ipython django-extensions 
    INSTALLED_APPS = [
    ... 
    'django_extensions'    
    ]
  • Instalando django debug toolbar

    pipenv install -d django-debug-toolbar

    Adicionar o codigo abaixo no arquivo settings.py

    INTERNAL_IPS = config('INTERNAL_IPS', cast=Csv(), default=None)
    
    if DEBUG:
        INSTALLED_APPS.append('debug_toolbar')
        MIDDLEWARE.insert(0, 'debug_toolbar.middleware.DebugToolbarMiddleware')

    Adicionar o codigo abaixo no arquivo url.py do projeto

    if settings.DEBUG:
    import debug_toolbar
    urlpatterns.append(path('__debug__/', include(debug_toolbar.urls)))
  • Configurando a coleta dos arquivos estáticos:

    STATIC_ROOT = BASE_DIR / 'staticfiles/'
  • Servindo os arquivos estaticos com o whitenose:

    pipenv install whitenose
  • Instalando o sentry:

    pipenv install sentry-sdk

    Configurando o SENTRY_DSN no heroku:

    heroku config:set SENTRY_DSN="https://asdasdasdsad"
  • Configurando o CI.

    Link para o GitHub Actions file

  • Configurando o PyUp

    schedule: ''
    update: false
    
    requirements:
     - Pipfile
     - Pipfile.lock

2) Deploy no heroku 🛠

  • Instalar o arquivo gunicorn:

    pipenv install gunicorn
  • Criando o aquivo Procfile:

    release: python manage.py migrate --noinput
    web: gunicorn devpro.wsgi --log-file -
  • Configurando o postgres

  • Crianda apps pelo heroku-cli:

    heroku apps:create urlreduce
  • Chave gerando a chave secreta para heroku:

    >>>from django.core.management.utils import get_random_secret_key
    >>>get_random_secret_key()
  • Configurando as variaveis no heroku:

    heroku config:set DEBUG=False
    heroku config:set SECRET_KEY="chave secreta de verdade"
  • Testando do deploy no heroku:

    git push heroku  branch_local:master
  • Configuração para o Deploy automatico é feita no site.

3) Iniciando o projeto 🛠

  • Criando o app encutador:

    cd devpro
    python ../manage.py startapp encurtador
  • Criando o usuario costumizado:

    O usuário costumizado irá ficar no aquivos models.py do app encutador. O código base foi retirado da classe AbstracticUser encontrado no módulo django.contib.auth.models.py.

    Criar UserManager usando novamente a Classe UserManager do módulo django.contib.auth.models.py.

    Criar a varialvel no settings.py

    AUTH_USER_MODEL='devpro.encutador'

    Para testa posse usar o makemigrations

    python manage.py makemigrations
  • Redirecionando usando o slug

    return redirect(path)  
  • Criando modelo para armazenar as Urls.

    Adicionar CRUD do admin do django.

  • Criando a página dos relatórios.

  • Criando modelo para armazenar as UrlLog.

  • Mostrando o relatorio

4) Modelo de Dados Final 🛠

Modelo

About

🐉 Projeto desenvolvido no BootCamp Dev Pro do python pro www.python.pro.br.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published