Projeto realizado no âmbito da candidatura à BII BL039/2022, tendo como objetivo implementar um sistema muito simples de gestão de publicações científicas para o DEI, sistema esse ligado à API ISTPaper. Recorreu-se às frameworks Django
e bootstrap
para a modelação do sistema.
Para correr a aplicação localmente, é necessária uma máquina equipada com:
Django
, 3.1 ou superior;requests
, 2.27 ou superior;django-crispy-forms
, 1.14 ou superior.
De realçar que as versões acima mencionadas foram as utilizadas em desenvolvimento, pelo que é possível que versões mais antigas funcionem de igual forma.
Para as instalar, basta executar pip install Django requests django-crispy-forms
.
Por fim, executar pip freeze
e verificar se as dependências foram corretamente instaladas.
Instaladas as dependências, basta executar o comando python manage.py runserver --insecure
na raiz deste repositório para correr a aplicação.
Vale a penar notar que a flag --insecure
é necessária para que o Django
consiga disponibilizar os ficheiros estáticos sem a flag Debug
ativa.
De seguida, poderá interagir com a aplicação através do browser, por exemplo, acedendo via http://localhost:8000/ ou http://127.0.0.1:8000.
SECRET_KEY
deve estar definida como variável de ambiente do sistema para que a aplicação possa funcionar.
-
Foi decidido implementar um aspeto dark mode por definição - com mais tempo, teria sido interessante implementar um toggle que permitisse ao utilizador escolher entre visuais light e dark, mas a ideia foi abandonada.
-
Não foram colocadas as views que permitem editar e eliminar publicações diretamente na homepage:
-
Editar publicações é possível através da página específica de cada publicação - desta forma, o utilizador pode facilmente ver todos os detalhes do paper que pretende editar antes de o fazer, sendo porventura mais intuitivo do que um form onde se permite editar qualquer paper na homepage.
-
Remover publicações é possível, para além de na página específica de cada publicação, na secção de listagem de todas as publicações (associada ao paper da linha em que o botão se encontra). O utilizador continua, tal como ao editar, a ter de ver a publicação antes de a poder remover.
Ainda quanto à homepage, destacou-se a listagem da publicações em relação às outras opções apresentadas, por ser a operação que o utilizador comum provavelmente procurará realizar mais frequentemente.
-
-
Foram utilizados Modal Forms em vez dos Forms padrão do
bootstrap
, com vista a evitar páginas cheias de formulários - um utilizador só vê um formulário quando diz que o quer ver (seja isso carregando num botão, aparecendo o tal Modal Form, ou quando o próprio formulário é todo o conteúdo da página). -
A paginação não apresenta qualquer opção de filtragem e/ou ordenação, visto que da forma como a API
ISTPaper
é implementada, só é possível obterlimit
publicações por vez - ora, sem saber o limite de publicações existentes, não podemos pedi-las todas de forma a realizar essas operações, pelo que a ideia foi abandonada.