Skip to main content

Packaging and Distribution of the Minimal FastAPI Project

This is the second in the series of articles about building the Minimal FastAPI Project. While the previous article covered directory structure, virtual environment, code linting, continuous integration, version control, and automated tests, this article deals with distributing the application in the form of Docker containers.

As a final result, we will have the FastAPI application running in a Docker container, accessible through Caddy as a reverse proxy and with services orchestrated by Docker Compose. This solution can be used directly in production or as a foundation for more complex projects. Furthermore, it works the same way in both development and production.

Read more…

Minimal FastAPI Project

This article demonstrates how to start even the smallest FastAPI project in the best possible way, with a proper structure, using a virtual environment, code linting, continuous integration (GitHub Actions), version control, and automated testing. From there, it's possible to expand the project according to the needs, using it for serverless, data science, REST API, programming education, as a foundation for new templates, and other purposes.

The main difference between this project and other templates is that it contains only a minimal set of functionalities and dependencies to form a solid foundation for other projects.

Read more…

Managing Version, Virtual Environments and Dependencies with Pyenv and Poetry

Software developers always have several projects on their computers using different languages, versions of those languages, libraries, and tools. So that one project does not interfere with another, they must be isolated somehow. In the case of Python projects, we will need tools that manage Python versions, virtual environments, and project dependencies. There are several options, but let's focus on two:

  1. pyenv manages different versions of Python on the same machine
  2. poetry manages virtual environments and project dependencies within those virtual environments.

Read more…

Lançamento do rst2html5 v2.0

Eu acabo de lançar a versão 2.0 do projeto rst2html5!

rst2html5 é um projeto que transforma documentos em restructuredText para HTML5.

restructuredText é um formato bastante utilizado na documentação de projetos em Python e também em geradores de sites estáticos (blog) tais como Nikola e Pelican.

Houve várias alterações nesta nova versão, a maioria relacionada a atualizações nas tecnologias usadas no projeto:

  1. Fim do suporte a versões anteriores ao Python 3.6
  2. Solução definitiva para o conflito com a instalação do docutils. Uma solução bem engenhosa, diga-se de passagem. Com isso, o módulo rst2html5_ foi renomeado de volta para rst2html5 mas, de quebra, a importação de rst2html5_.HTML5Writer ainda funciona. Há uma seção na documentação a respeito dessa implementação (link).
  3. Criação de novo papel rst :abbr:, que transforma uma entrada do tipo :abbr:`SAP (Single-Page Application)` em uma saída <abbr title="Single-Page Application">SPA</abbr>
  4. Nova seção no README explicando como usar o rst2html5 programaticamente
  5. Melhora a geração da subseção <figcaption>
  6. Melhora o processamento dos atributos scale, height, width e alt da diretiva image.
  7. Adiciona Type Annotations ao código do projeto
  8. Adiciona análise estática do código (linting) ao projeto
  9. Substitui o framework de teste de nose para pytest
  10. Mudança do gerenciador de dependências de Pipenv para Poetry
  11. Instalação do pacote no PyPi (Python Package Index) agora é feita pelo Poetry ao invés do setup.py.

Consulte a página do projeto do rst2html5 para ver exemplos de uso e aplicação.

Program in the Browser Using Code Lab

The Code Lab project allows programming directly in the browser, without any other external dependencies. It is interesting for cases where you want to do a quick experiment but there is no computer with the programming language installed and configured nearby.

This project was originally done as a proof of concept and also to help my students to use different programming languages ​ without installing anything on their machines.

Read more…

12 Fatores na Construção de um Aplicativo Web

The Twelve-Factor App é um conjunto de recomendações muito popular para desenvolvimento de aplicações web, que é resultado de anos de experiência do pessoal da Heroku na administração de centenas de milhares de aplicações na forma de software-como-serviço.

Os 12 fatores é um conjunto de soluções conceituais que visa tornar as aplicações mais portáveis, escaláveis e fáceis de serem desenvolvidas e implantadas. Pode ser aplicado a projetos escritos em qualquer linguagem de programação.

Read more…

Qual a melhor ferramenta de controle de versão: Subversion, Git ou Mercurial?

As ferramentas mais interessantes atualmente de controle de versão são o Subversion, Git e Mercurial. Se você ainda não escolheu uma, ficará feliz em saber que existe sim uma solução simples e eficaz dependendo do perfil da equipe e das necessidades do projeto. A surpresa está em saber que a melhor opção certamente será o Subversion ou o Mercurial, mas dificilmente o Git. Vamos analisar os porquês neste artigo.

Read more…