-
Faça o download do repositório;
-
Acesse por um terminal;
-
Com o Docker instalado em sua estação de trabalho, Execute os seguintes comandos:
docker-compose up
-
Aguarde alguns instantes;
-
Acesse http://localhost:8880;
-
Experimente a aplicação;
Para executar o teste automatizado, basta executar o arquivo test.py, no diretório ./flask_backend.
python test.py
Esta aplicação tem como objetivo encurtar endereços URL longos demais a fim de facilitar seu compartilhamento e memorização, podendo aumentar o engajamento relacionado ao conteúdo do site. Neste documento, irei descrever o contexto do desenvolvimento deste site, as ferramentas utilizadas, os parâmetros de análise de requisitos e as funcionalidades aplicadas.
A arquitetura de referência foi a Model-View-Controller, mas algumas adaptações e simplificações foram necessárias devido à simplicidade do projeto em relação às regras de negócio e às rotas. A alteração mais importante foi o desenvolvimento das camadas de visualização e controle dentro do mesmo container, na mesma framework do frontend, já que não eram necessários grandes redirecionamentos.
A camada de Modelo é representada por uma API desenvolvida com a framework Flask, na linguagem Python, e o gerenciador do banco de dados também escrito em Python, utilizando-se o banco serverless SQLite. Essa camada é a segunda mais profunda do sistema, e só é acessada pela camada de controle.
A camada de Controle, simplificada tal qual a descrição do primeiro parágrafo deste tópico, foi descrita no arquivo App.js, no diretóro /react_frontend. O roteamento das páginas foi feito nesse arquivo, e foi utilizado o NGINX para realizar o Proxy Reverso e fazer os redirecionamentos para a API.
A camada de Visualização foi desenvolvida com a framework React, na linguagem Javascript. Duas telas foram desenvolvidas seguindo os requisitos propostos: Uma tela de início, onde o usuário faz a inserção da URL para ser encurtada e poder-se ter acesso à opção de personalização deste link. A outra tela é a de exibição da URL encurtada, junto com o ranking dos 5 links encurtados mais acessados da ferramenta.
- Reduzir ao máximo a quantidade de telas e seções do aplicativo para facilitar o destaque das informações importantes no serviço.
- O usuário deve ter acesso a opções de personalização de seus links para que eles sejam mais amigáveis e aumentem seu alcance.
O banco de dados escolhido foi o SQLite. Seu principal destaque foi a simplicidade de implementação: Com pouco código, além dos comandos em SQL, foi possível fazer a implementação de todo o banco. Além disso, sua característica serveless permitiu sua implementação sem a necessidade de um conteiner individual, reduzindo o numero de roteamentos.
Utilizou-se a framework Flask para a implementação da API. Pareada ao serviço, essa framework é excelente para projetos de pequeno porte, e com poucas linhas de código estrutura todas as rotas e métodos necessários para as requisições para o banco de dados
Com vistas ao melhor versionamento das camadas, utilizou-se a ferramenta Docker para reduzir os problemas com compatibilidade e facilitar a execução e o deploy.
Objetivando integrar os conteiners do serviço, utilizamos uma ferramenta de proxy reverso que a partir de redirecionamento pelos caminhos, foi possível integrar todos conteiners necessários e unificar a porta de acesso da aplicação.
Para implementar uma interface dinâmica e com requisições com complexidade suficiente, foi decidida a utilização da framework React.