Skip to content

Rodrigogj8/dev-community-flask

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Comunidade Dev - Plataforma de Comunidade com Flask

Uma plataforma de comunidade desenvolvida em Flask que permite aos usuários criar perfis, compartilhar posts, interagir e se conectar. O projeto implementa um sistema completo de autenticação, gerenciamento de conteúdo e interface moderna inspirada em redes sociais.

Sobre o Projeto

Comunidade Dev é uma aplicação web full-stack desenvolvida para criar uma plataforma de comunidade onde desenvolvedores podem se conectar, compartilhar conhecimento e interagir. O projeto utiliza Flask como framework backend, implementando padrões modernos de desenvolvimento web, segurança e experiência do usuário.

Características Principais

  • Sistema completo de autenticação e autorização
  • Gerenciamento de perfil de usuário com upload de imagens
  • Sistema de posts com criação, edição e exclusão
  • Interface moderna e responsiva
  • Design profissional inspirado em redes sociais
  • Validação robusta de formulários
  • Proteção de rotas e segurança de dados

Tecnologias Utilizadas

Backend

  • Flask 3.1.2 - Framework web minimalista e flexível para Python
  • Flask-SQLAlchemy - ORM (Object-Relational Mapping) para interação com banco de dados
  • Flask-WTF - Integração com WTForms para criação e validação de formulários seguros
  • Flask-Bcrypt - Biblioteca para criptografia de senhas usando algoritmo bcrypt
  • Flask-Login - Gerenciamento de sessões de usuário e autenticação
  • Pillow (PIL) - Processamento e manipulação de imagens (redimensionamento automático)
  • Python 3.9 - Linguagem de programação principal
  • Jinja2 - Motor de templates integrado ao Flask para renderização de HTML
  • SQLite - Banco de dados relacional embutido para armazenamento de dados

Frontend

  • Bootstrap 5.0.2 - Framework CSS para design responsivo e componentes UI
  • HTML5 - Estrutura semântica das páginas
  • CSS3 Custom - Estilos personalizados com variáveis CSS e design moderno
  • JavaScript - Interatividade e funcionalidades do Bootstrap

Bibliotecas e Ferramentas

  • secrets - Geração de tokens seguros para nomes de arquivos
  • os - Manipulação de caminhos e sistema de arquivos
  • datetime - Gerenciamento de datas e timestamps
  • Werkzeug - Servidor de desenvolvimento WSGI

Estrutura do Projeto

Site com Flask/
├── main.py                          # Ponto de entrada da aplicação
├── comunidade/                       # Módulo principal (Blueprint)
│   ├── __init__.py                  # Inicialização do Flask app e configurações
│   ├── routes.py                    # Definição de todas as rotas da aplicação
│   ├── forms.py                     # Formulários com Flask-WTF e validações
│   ├── models.py                    # Modelos de banco de dados (SQLAlchemy)
│   ├── static/                      # Arquivos estáticos
│   │   ├── main.css                 # Estilos CSS personalizados
│   │   └── fotos_perfil/            # Diretório de fotos de perfil dos usuários
│   ├── templates/                   # Templates HTML (Jinja2)
│   │   ├── base.html                # Template base com estrutura comum
│   │   ├── navbar.html              # Barra de navegação
│   │   ├── home.html                # Página inicial com feed de posts
│   │   ├── login.html               # Página de login e criação de conta
│   │   ├── perfil.html              # Visualização do perfil do usuário
│   │   ├── editarperfil.html        # Formulário de edição de perfil
│   │   ├── usuarios.html            # Lista de todos os usuários
│   │   ├── criar_post.html          # Formulário de criação de post
│   │   ├── post.html                # Visualização individual de post
│   │   └── contato.html             # Página de contato
│   └── testes.py                    # Arquivo para testes e desenvolvimento
├── instance/                        # Diretório de instância (banco de dados)
│   └── comunidade.db                # Banco de dados SQLite
└── venv/                            # Ambiente virtual Python

Como Executar

Pré-requisitos

  • Python 3.9 ou superior
  • pip (gerenciador de pacotes Python)

Instalação

  1. Clone o repositório:

    git clone https://github.com/Rodrigogj8/site-comunidade-flask.git
    cd site-comunidade-flask
  2. Crie e ative o ambiente virtual:

    # Windows
    python -m venv venv
    venv\Scripts\activate
    
    # Linux/Mac
    python3 -m venv venv
    source venv/bin/activate
  3. Instale as dependências:

    pip install flask flask-sqlalchemy flask-wtf flask-bcrypt flask-login pillow
  4. Execute a aplicação:

    python main.py
  5. Acesse no navegador:

    http://localhost:5000
    

Funcionalidades Implementadas

Autenticação e Segurança

  • Sistema de registro de usuários com validação completa
  • Login seguro com verificação de senha criptografada
  • Gerenciamento de sessões com Flask-Login
  • Logout funcional
  • Proteção de rotas com decorator @login_required
  • Criptografia de senhas usando Flask-Bcrypt (hash bcrypt)
  • Validação de email duplicado no registro e edição de perfil
  • Validação de formulários client-side e server-side
  • CSRF Protection integrado via Flask-WTF

Gerenciamento de Perfil

  • Visualização de perfil com informações do usuário
  • Edição de perfil (username, email)
  • Upload de foto de perfil com validação de formato (JPG, PNG)
  • Redimensionamento automático de imagens para 200x200 pixels
  • Geração de nomes únicos para arquivos usando tokens hexadecimais
  • Sistema de cursos - seleção múltipla (Python, Java, JavaScript, C#, TypeScript, SQL)
  • Exibição de estatísticas (número de cursos e posts)
  • Contador de posts por usuário

Sistema de Posts

  • Criação de posts com título e corpo
  • Feed de posts na página inicial ordenado por data (mais recentes primeiro)
  • Visualização individual de posts
  • Edição de posts (apenas pelo autor)
  • Exclusão de posts (apenas pelo autor) com confirmação via modal
  • Associação de posts com autor (relacionamento Foreign Key)
  • Data de criação automática com timestamp
  • Links clicáveis nos títulos dos posts

Interface e Design

  • Design moderno inspirado em redes sociais (Instagram/Facebook)
  • Layout responsivo para desktop, tablet e mobile
  • Navbar dinâmica que adapta opções conforme estado de autenticação
  • Cards estilizados para posts e perfis
  • Feedback visual em formulários (validação em tempo real)
  • Mensagens flash para feedback de ações
  • Modais para confirmações importantes
  • Tipografia moderna e legível
  • Cores profissionais e consistentes

Banco de Dados

  • Modelo Usuario com campos: id, username, email, senha, foto_perfil, cursos
  • Modelo Post com campos: id, titulo, corpo, data_criacao, id_usuario
  • Relacionamentos entre Usuario e Post (One-to-Many)
  • Constraints de integridade (unique, nullable, foreign keys)
  • Métodos auxiliares (contar_posts)

Estado Atual do Projeto

O projeto está em fase de desenvolvimento ativa com funcionalidades core implementadas e funcionais. A plataforma permite:

  • Usuários se registrarem e fazerem login
  • Criarem e gerenciarem seus perfis
  • Compartilharem posts na comunidade
  • Visualizarem posts de outros usuários
  • Editarem e excluírem seus próprios posts
  • Navegarem pela lista de usuários

Arquitetura

  • Padrão MVC (Model-View-Controller) implementado
  • Blueprint para organização modular do código
  • Separação de responsabilidades (routes, models, forms, templates)
  • Código limpo e bem organizado

Próximos Passos e Melhorias Planejadas

Funcionalidades Prioritárias

  1. Sistema de Comentários

    • Comentários em posts
    • Edição e exclusão de comentários
    • Contador de comentários por post
  2. Sistema de Busca

    • Busca por posts (título e conteúdo)
    • Busca por usuários
    • Filtros avançados
  3. Interações Sociais

    • Sistema de curtidas em posts
    • Compartilhamento de posts
    • Seguir/Deixar de seguir usuários
  4. Melhorias no Feed

    • Paginação de posts
    • Ordenação por diferentes critérios
    • Filtros por autor ou data
  5. Notificações

    • Notificações de novos comentários
    • Notificações de interações
    • Sistema de notificações em tempo real

Melhorias Técnicas

  1. Performance

    • Implementação de cache
    • Otimização de queries do banco de dados
    • Lazy loading de imagens
  2. Segurança

    • Rate limiting para prevenção de spam
    • Sanitização de inputs
    • Validação de uploads mais robusta
  3. Testes

    • Testes unitários para models
    • Testes de integração para rotas
    • Testes de interface
  4. Deploy

    • Configuração para produção
    • Migração para PostgreSQL
    • Configuração de servidor web (Gunicorn)
    • Deploy em plataforma cloud (Heroku, AWS, etc.)
  5. Documentação

    • Documentação da API
    • Guia de contribuição
    • Documentação de código

Melhorias de UX/UI

  1. Interface

    • Dark mode
    • Animações mais suaves
    • Melhorias na acessibilidade
  2. Funcionalidades

    • Preview de posts
    • Upload de múltiplas imagens
    • Editor de texto rico (Markdown)
    • Tags/categorias para posts

Decisões Técnicas

Por que Flask?

Flask foi escolhido por ser um framework minimalista e flexível, permitindo controle total sobre a estrutura da aplicação. É ideal para projetos que começam pequenos mas precisam escalar, oferecendo apenas o essencial e permitindo adicionar extensões conforme necessário.

Por que SQLite?

SQLite foi escolhido para desenvolvimento e MVP por ser:

  • Fácil de configurar (sem servidor separado)
  • Perfeito para pequenas/médias aplicações
  • Fácil migração futura para PostgreSQL/MySQL
  • Suportado nativamente pelo SQLAlchemy

Por que Bootstrap?

Bootstrap 5 oferece:

  • Componentes prontos e testados
  • Sistema de grid responsivo
  • Consistência visual
  • Economia de tempo no desenvolvimento
  • Suporte a múltiplos dispositivos

Arquitetura de Blueprint

A estrutura em blueprint permite:

  • Organização modular do código
  • Facilidade de manutenção
  • Escalabilidade do projeto
  • Separação clara de responsabilidades

Observações Importantes

Segurança

  • Senhas são criptografadas usando bcrypt antes de serem armazenadas
  • Proteção CSRF implementada em todos os formulários
  • Validação de dados tanto no cliente quanto no servidor
  • Rotas protegidas exigem autenticação
  • Uploads de arquivos são validados (tipo e tamanho)

Banco de Dados

  • Banco de dados SQLite ativo e funcional
  • Relacionamentos entre tabelas configurados corretamente
  • Constraints de integridade implementadas
  • Timestamps automáticos para posts

Performance

  • Imagens são redimensionadas automaticamente para otimizar armazenamento
  • Queries otimizadas com relacionamentos lazy
  • Estrutura preparada para implementação de cache

Desenvolvimento

  • Código organizado seguindo boas práticas
  • Comentários e documentação inline onde necessário
  • Estrutura preparada para testes
  • Fácil manutenção e extensão

Licença

Este projeto é de código aberto e está disponível para fins educacionais e de aprendizado.

Autor

Desenvolvido como projeto de aprendizado e aplicação de conhecimentos em Flask e desenvolvimento web.


Última atualização: Janeiro 2026
Status: Em desenvolvimento ativo
Versão: 1.0.0

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors