Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fake Pinterest

Uma aplicação web inspirada no Pinterest desenvolvida em Python utilizando o framework Flask. O projeto conta com sistema de autenticação de usuários, criptografia de senhas, validação de formulários estruturados, feed global dinâmico e upload de imagens associado ao perfil de cada usuário.

🛠️ Tecnologias Utilizadas

  • Python 3
  • Flask (Framework Web)
  • Flask-SQLAlchemy (ORM e Integração com Banco de Dados)
  • Flask-Bcrypt (Criptografia de Hashing para Senhas)
  • Flask-Login (Gerenciamento de Sessões e Autenticação)
  • Flask-WTF & WTForms (Criação e Validação de Formulários com proteção CSRF)
  • SQLite (Banco de dados relacional local)
  • Bootstrap 5 & Bootstrap Icons (Estilização Front-end)

📂 Estrutura do Projeto

├── fakepinterest/
│   ├── static/
│   │   ├── css/
│   │   ├── fotos_user/      # Destino dos uploads das postagens
│   │   └── js/
│   ├── templates/           # Templates HTML (Jinja2)
│   │   ├── base.html
│   │   ├── feed.html
│   │   ├── homepage.html
│   │   ├── login.html
│   │   ├── navbar.html
│   │   └── perfil.html
│   ├── __init__.py          # Inicialização do app e extensões
│   ├── forms.py             # Definição e validações dos formulários
│   ├── models.py            # Modelos de dados (Tabelas do Banco)
│   └── routes.py            # Definição de rotas e lógica de visualização
├── instance/
│   └── db_pinterest.db      # Banco de dados SQLite gerado
├── .gitignore
├── criar_banco.py           # Script para criação/reset das tabelas
├── main.py                  # Ponto de entrada para execução do app
└── segredos.py              # Arquivo de credenciais locais (Ignorado no Git)


🚀 Como Executar o Projeto Localmente

1. Clonar o Repositório

git clone [https://github.com/luan-rf/AlternativePinterest.git](https://github.com/luan-rf/AlternativePinterest.git)
cd AlternativePinterest

2. Configurar o Ambiente Virtual (venv)

# Criação do ambiente virtual
python -m venv .venv

# Ativação do ambiente (Windows)
.venv\Scripts\activate

# Ativação do ambiente (Linux/macOS)
source .venv/bin/activate

3. Instalar as Dependências

Instale as bibliotecas necessárias para o funcionamento do ecossistema Flask:

pip install flask flask-sqlalchemy flask-bcrypt flask-login flask-wtf email-validator

4. Configurar o Arquivo de Credenciais

Crie um arquivo chamado segredos.py na raiz do projeto para armazenar chaves de segurança necessárias para a criptografia e tokens CSRF:

# segredos.py
senha_init = "sua_chave_secreta_aqui"

Nota: Este arquivo está listado no .gitignore e não deve ser commitado publicamente por motivos de segurança.

5. Inicializar o Banco de Dados

Execute o script utilitário para criar o arquivo SQLite e estruturar as tabelas Usuario e Post:

python criar_banco.py

6. Rodar a Aplicação

Inicie o servidor de desenvolvimento local do Flask:

python main.py

O servidor estará disponível no endereço: http://127.0.0.1:5000


🔒 Segurança e Funcionalidades Técnicas

  • Proteção CSRF: Todos os formulários renderizados via WTForms implementam tokens de validação para mitigar ataques de falsificação de solicitação entre sites.
  • Criptografia de Senhas: As credenciais dos usuários passam por hashing seguro (generate_password_hash) antes do armazenamento persistente.
  • Upload Seguro: O processamento de arquivos externos valida o nome do arquivo através da função secure_filename do Werkzeug para evitar falhas de travessia de diretório.
  • Restrição de Acesso: Rotas críticas como /feed e /perfil exigem autenticação explícita por meio do decorador @login_required.

About

Uma aplicação web inspirada no Pinterest desenvolvida em Python utilizando o framework Flask. O projeto conta com sistema de autenticação de usuários, criptografia de senhas, validação de formulários estruturados, feed global dinâmico e upload de imagens associado ao perfil de cada usuário.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages