Giter VIP home page Giter VIP logo

memewiki's Introduction

Memewiki

Este é um projeto inicialmente implementado para um trabalho da disciplina de Base de Dados, do ICMC/USP.

A ideia da Memewiki é ser uma plataforma brasileira 100% aberta e livre que sirva como um "hub" de memes, com foco maior em memes nacionais, aos moldes de uma wikipedia, knowyoourmeme, rottentomatos, chans e reddit. Algumas das funcionalidades são a criação de uma página tipo "wiki" sobre um meme - por hora chamado de "meme base", que serve como uma "base" para outros memes derivados. Memes derivados, ou "normais", podem ser derivados de memes base, sendo praticamentte imagens comuns, sem muita informação, em que qualquer usuário possa criar de formma fácil e rápida.

O objetivo da plataforma, além de ser uma "wiki" e um "hub" de memes, é também permitir com que novos memes sejam criados, tal como são feitos no chans, mas sem a parte do descontrole e anomia que permeiam nesses ambientes. Pra isso a Memewiki também possui um Image Board, onde qualquer usuário pode criar uma thread e comentar com texto e imagens.

image

image

image

Obviamente, ele está em faze de protótipo, com um layout improvisado (ninguém do grupo curtia front end ...) :v

Moderação

Muitos podem se assustar quando nos referimos a "100% aberto e livre", principalmente devido à má fama que os chans tm (e com razão). Mas cabe salientar que ser 100% livre implica necessariamente em não haver conteúdo que seja de ameaça a vida e existencia de outras pessoas, tal como fake news e discurso de ódio, afinal, isso por si só estaria violando o "livre" de outras pessoas.

A Wikipedia, por exemplo, só é tão livre, acessível e confiável hoje porque possui moderação. Por isso, a moderação se faz muito necessária e estará presente na Memewiki.

Requisitos:

  • python 3
  • postgresql

Instalação e Execução:

git clone https://github.com/gp2112/memewiki
cd memewiki
pip install .

execute:

memewiki

ou, caso possua o poetry:

cd memewiki
poetry install
poetry run memewiki

PostgreSQL Install

Manuel Ultra rápido e pragmático LINUX:

Basicamente, quando instalar, ele cria um user postgres. Ele vai ser usado pra acessar o client por sockets. Assim que instalar:

  1. Entra no user: sudo -iu postgres

  2. Inicia DB Cluster: initdb -D /var/lib/postgres/data

  3. Volta pro user normal: dá um CTRL+D ou executa exit

  4. Inicia o serviço do postgresql (o backend): sudo systemctl start postgresql.

    1. (opicional) - Se quiser que ele inicie sempre que o sistema iniciar, tb execute: sudo systemctl enable postgresql

Pronto, já tá rodando. Agora no cliente:

Se quiser entrar no client:

  1. Entra no user: sudo -iu postgres
  2. Execute: psql

Para criar um DB:

  1. Entra no user: sudo -iu postgres
  2. createdb [NOME_DB]

OBS: Crie um banco dados chamado memewiki para execução deste projeto.

Se tiver algum problema, provavelmente tem a resolução na Arch Wiki.

Funcionamento da aplicação

É importante para leitura do código entender as camadas e como elas interagem entre si.

    app -> [ routes <-> controller <-> services <-> models ]
          <-- VIEW ---    

O arquivo app.py define, através do Framework Flask, onde estão as rotas da aplicação. Os arquivos de rota mapeam funções do controller, que por sua vez chamam serviços, que por sua vez acessam models.

É na camada de models que está o código que faz comunicação com o banco de dados, usando a biblioteca psycopg2. É essa biblioteca que lida com a comunicação com o driver do PostgreSQL e com proteção a SQL injection.

Ao voltar da cadeia de chamadas à funções de camadas cada vez mais internas, a rota retorna uma view com as informações requisitadas, utilizando HTML e CSS.

Créditos

  • Guilherme Paixão

    • Modelagem Relacional da Base de Dados
    • Aplicação: backend, frontend, Implementação no PostgreSQL
    • Documentação da Aplicação
  • Lucas Almeida

    • Modelagem Entidade-Relacionamento da Base de Dados
    • Modelagem Relacional da Base de Dados
    • Documentação do Modelo e Planejamento da Base de Dados
    • Documentação da Aplicação
  • Ádrio Oliveira

    • Modelagem Entidade-Relacionamento da Base de Dados
    • Modelagem Relacional da Base de Dados
    • Documentação do Modelo e Planejamento da Base de Dados
  • Eduardo Rossi

    • Modelagem Entidade-Relacionamento da Base de Dados
    • Modelagem Relacional da Base de Dados
    • Documentação do Modelo e Planejamento da Base de Dados
  • Breno Pejon

    • Implementação do Modelo Relacional em SQL
    • Projeto da Aplicaç

memewiki's People

Contributors

gp2112 avatar lalmeida32 avatar

Stargazers

Breno Pejon avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.