Skip to content

zNairy/Mutiny

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

badges

Mutiny, simple command line chat in Python.

Sobre

O projeto Mutiny é um chat em tempo real, desenvolvido com o intuíto de levar as características de uma "interface" retro, como retratado em muitos filmes e séries dos anos 80/90. Foi inspirado propositalmente em um série que gosto bastante, chamada Halt and catch fire, onde existe uma empresa de jogos virtuais chamada Mutiny e uma das suas aplicações é um chat para sua comunidade. O projeto foi pensado inicialmente no começo da produção de um TCC quando estava fazendo um curso de informática, que por fim não consegui concluir mas depois de um tempo decidi tirá-lo do papel. O mesmo já passou por algumas versões não definitivas, então pensei em recriá-lo e compartilhar com o público.

Instalação

Primeiramente clone o repositório usando

git clone https://github.com/zNairy/Mutiny/

Em seguida instale os recursos necessários em dependencies/requirements para execução utilizando o pip de acordo com sua versão do Python.

python -m pip install -r dependencies/requirements.txt

Como usar

Inicie o lado servidor (mutinyServer) para suportar cada cliente que se conecta à ele. Por padrão, tanto o servidor quanto cada cliente é conectado no endereço localhost:5000 se nenhum argumento for passado em sua instância.

python mutinyServer.py

server = Server() # Server('127.0.0.1', 1010)
server.run()

Depois inicie simulando cada cliente executando o mutinyClient, informando seu nome de usuário posteriormente.


Por padrão os perfis de usuários utilizados ficarão salvos em .client/profiles. O mesmo acontece no lado servidor quando um usuário tem êxito ao se conectar, residindo em .server/registeredUsers

Algumas funcionalidades | Observações

  • O programa conta com uma variedade de comandos para interação com o usuário. Veja uma lista com os comandos possíveis rodando /commands.
  • Comandos que não tem uma acão direta poderá retornar um exemplo de como se utilizá-lo.
  • Alguns dos comandos para interagir com outros usuários no privado são: /private, /accept, /decline, /unvite e /leave.
  • Você pode mudar a cor do seu nickname usando /namecolor cor_desejada
  • Cada usuário quando logado recebe um identificador gerado pelo servidor, de modo que cada um seja único e não possa acessar outro usuário apenas informando seu nickname.
  • Como dito anteriormente, os perfis de usuários ficam salvos em .client/profiles. Se um perfil for alterado, não conseguirá mais logar no servidor visto que seu nickname e identificador são verificados à cada nova seção. Esse sistema foi implementado por fins práticos à de se usar uma senha, sendo mais simples e atingindo a ideia original do projeto.
  • Os usuários cadastrados no servidor se mantém mesmo quando o mesmo está offline, mas os convites enviados entre eles não.
  • O arquivo treeModel mostra a estrutura do programa, entre suas funcões, comandos e utilidades do sistema divididos.

Objetivo | observações

  • O projeto não tem por finalidade ser muito complexo, apenas apresentar a ideia original.
  • As implementações feitas foram simples, caso queira contribuir implementando opções avançadas como segurança na camada de envio de mensagens como SSL entre outros, abra um pull request ou dê sugestões entrando em contato comigo no Discord.
  • No que diz respeito à interface, o chat ainda precisa de uma melhoria por usar a principal funcionalidade para entrada e saída de dados. A entrada no input do terminal faz com que se alguma outra pessoa enviar uma mensagem ela seja "sobreescrita", o que mantém a informação salva mas visualmente não agrada muito. Uma interface gráfica mantendo o estilo de um terminal, mas separando cada área para visualização e entrada das mensagens seria o ideal. (em versões futuras)

About

Simple command line chat in python.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages