Skip to content

spikte/spikte_chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spikte_chat

Educational chat project in C++ to learn about the Linux networking stack.

Demo

Running

This is an exemple to run this project on localhost with self signed CA, not an exemple of a real TLS app deployment

make chain.pem
make

Then you can run:

  • ./bin/spikte_chat server RAW for unencrypted communication or ./bin/spikte_chat server TLS to use TLS encryption
  • ./bin/spikte_chat client to run the client interface

Note that the chain.pem file generated must be accessible from the client and the server

Features

Implemented:

  • Optional TLS encryption
  • Accounts and message persistance using SQLite
  • Password storage using Argon2D
  • raylib/raygui interface
  • Multiple chat rooms support
  • Themes

TODO:

General

  • Fix bad/not great design choices, there are some here and there, like the state management
  • Test a lot of edge cases
  • Better error management

Specific:

  • The chat role system feels a bit weak on the edge cases
  • Add audio
  • Maybe the theme should be client sided only and not shared between user of a same chat, it would allow that the theme is per user and not per chat
  • Chat history when pressing up arrow
  • /help to display availabe commands
  • /getMembers to display members (with current status)
  • Display who saw a message
  • Display the timestamp
  • UI support for deleting/editing messages
  • UI support for deleting a chat
  • Chat owner role transfere
  • Informs the user if he tries to use a raw TCP connection when the server uses TLS encryption
  • Support for image format (PNG, JPEG, GiF)
  • Support for video format (MP4)
  • Support for audio message (Does chats use MP3 ? I don't know)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors