-
Notifications
You must be signed in to change notification settings - Fork 2
Home
[Crie um novo repositório no GitHub para o seu Wiki e clone-o para o seu ambiente de desenvolvimento local]
O repositório criado para este projeto é o: {Repositório}. Além do repositório principal existe um fork do repositório dentro da organização {Fork} cria pelos membros do grupo. Membros:
[Configure a estrutura básica do projeto, incluindo a pasta de templates e recursos estáticos]
A estrutura básica aplicada ao projeto está apresentada na imagem abaixo:

A estrutura apresentada é a visualizada na Branch "develop". Na raiz do projeto estão os seguintes arquivos/diretórios:
-
[Diretório] .github/workflows: diretório contendo o workflow "deploy.ml".
- [Arquivo] deploy.ml: arquivo responsável por realizar o deploy da site no GitHub Pages. Toda vez que um commit é realizado na branch "develop" o fluxo de trabalho é executado para atualizar os arquivos na branch "main". Portanto, ao atualizar um arquivo Markdown (conteúdo da página) e realizar o commit na "develop", automaticamente a branch "main" será atualizada com o novo conteúdo, permitindo a atualização do site.
-
[Diretório] development: principal diretório onde os arquivos de de desenvolvimento do blog estão armazenados.
-
[Diretório] build: diretório com o conteúdo gerado pelo Frask-Frozen. O Flask-Frozen é utilizado para criar as páginas estáticas a partir dos modelos (templates) do Flask. Nesses projeto é construído as páginas estáticas com os conteúdos dos diretórios "markdown" e "templates". Portanto: "markdown" + "templates" -> "build".
-
[Diretório] markdown: diretório com o conteúdo das postagens do site. Cada arquivo markdown (.md) dentro do diretório é uma página distinta.
-
[Diretório] static: diretório com o conteúdo estático do site, respeitando o modelo definido ao utilizar o Flask.
-
[Diretório] css: diretório com as folhas de estilos (.css) utilizadas para estilização do site. Nesse projeto é utilizado o Bootstrap, realizando uma chamada interna do conteúdo, assim o arquivo (.css) do Bootstrap também está nesse diretório.
-
[Diretório] img: diretório com as imagens contidas no site.
-
[Diretório] js: diretório com os arquivos JavaScript (.js) auxiliares para o funcionamento do Bootstrap.
-
-
[Diretório] templates: diretório com os templates (.html) renderizados pelo Flask. O conteúdo principal escrito em HTML está no arquivo "base.html". Os demais arquivos do diretório são extensões do arquivo "base.html".
-
-
[Arquivo] app.py: arquivo Python (.py) com definições de rotas e demais configurações para a construção das páginas dinamicamente pelo Flask.
-
[Arquivo] freeze.py: arquivo Python (.py) com as configurações e a execução do método freeze() do Flask-Frozen para a construção das páginas estáticas usando as páginas dinamicamente construídas no Flask.
-
[Diretório] wiki: diretório onde os arquivos desta wiki estão armazenados.
-
[Arquivo] .gitignore: utilizado para definir quais arquivos/diretórios serão ignorados ao realizar a atualização do conteúdo para o repositório remoto. Nesse projeto o ".gitignore" está configurado para ignorar arquivos/diretórios criados para ambientes virtuais (venv) das máquinas locais.
-
[Arquivo] README.md: utilizado para uma descrição do projeto, informando para outras pessoas por que seu projeto é útil, o que elas podem fazer com o projeto e como elas podem usá-lo etc.
-
[Arquivo] requirements.txt: utilizado para armazenar as informações ralativas as dependências necessárias para a instalação de um determinado módulo. Nesse projeto foi necessário a instalação de 3 módulos: Flask, Markdown2 e Frozen-Flask.
[Crie um arquivo JSON para armazenar as informações gerais como titulo, descrição e autor]
Como requesito opcional do projeto, optamos por não utilizar a leitura de dados por arquivos JSON (.json). Centralizamos a inserção de conteúdo nas páginas por meio dos arquivos Markdown (.md).
[Use a linguagem Python para ler os dados de um arquivo markdown e gerar páginas HTML estáticas para cada postagem do blog]
Esse requisito foi atendido utilizando as bibliotecas Python: os, flask e markdown2 no arquivo "app.py" e as bibliotecas: os, app e flask_frozen no arquivo "freeze.py".
[Configure um fluxo de trabalho com o Gitflow, que envolve a criação de branches para desenvolvimento, features e releases, para melhor organização e colaboração]
Pela simplicidade do projeto, optou-se por utilizar apenas duas branchs para o fluxo de trabalho. A branch develop, para o desenvolvimento e contrução das páginas e a branch main, onde é feito o deploy do projeto no qual é vinculado ao GitHub Pages.
[Personalize o estilo do blog usando CSS, criando uma aparência agradável (Isso fica a critério)]
[Teste o blog localmente para verificar se as postagens são geradas corretamente e se o estilo está de acordo com o esperado]
[Faça o push do projeto para o repositório no GitHub e habilite o GitHub Pages nas configurações do repositório. Isso permitirá que o blog seja publicado online]
[O primeiro post no Wiki/blog deve ser uma documentação de como você pensou e quais os principais procedimentos que realizou para concluir essa atividade]
[Implemente automações usando scripts Python para atualizar automaticamente o blog quando novas postagens forem adicionadas (Opcional)]
Arquivo – Requirements.txt: Utilizado para armazenar as informações ralativas as dependências necessárias para a instalação de um determinado módulo. Nesse projeto foi necessário a instalação de 3 módulos: Flask, Markdown2 e Frozen-Flask. Para a instalação desses módulos pode-se utilizar os seguintes comandos:
pip install Flask
pip install markdown2
pip install Frozen-Flask
Após a instalação desses módulos as dependências podem ser armazenadas no arquivo "requirements.txt" utilizando o seguinte comando:
pip freeze > requirements.txt
Deste modo, pode-se fazer a mesma instalação futuramente dos 3 módulos apenas usando o arquivo "requirements.txt". Isso é muito útil para criar o processo de deploy. O comando para a instalação por meio do arquivo "requirements.txt" é o seguinte:
pip install -r requirements.txt
O arquivo "requirements.txt" do projeto ficou da seguinte forma:
blinker==1.7.0 #Flask
click==8.1.7 #Flask
colorama==0.4.6 #Flask
flask==3.0.0 #Flask
frozen-flask==1.0.1 #Frozen-Flask
importlib-metadata==6.8.0 #Flask
itsdangerous==2.1.2 #Flask
Jinja2==3.1.2 #Flask
markdown2==2.4.10 #Markdown2
MarkupSafe==2.1.3 #Flask
werkzeug==3.0.1 #Flask
zipp==3.17.0 #Flask