Snek

Snek is a chat application intended to replace Rocket.Chat.

It's designed to be fast, performant, and easy to use. The installation is just a few minutes of example. Zero configuration.

It's also open source and you can find the source code here . If you would like to collaborate, to make the project even better, that would be great.

Features

  • Anonymous registration, email is optional
  • Automatically generated avatar
  • PWA, it works very well on mobile devices. Also, when chrome is installed, it will be installed as a PWA.
  • Private messaging
  • Group messaging
  • File sharing
  • Image sharing
  • Video sharing
  • Audio sharing
  • Syntax highlighting for code snippets with support for many languages.
  • Markdown support

Every user has an automatically assigned avatar. For now, this is impossible to change. There are 12.000.000.000 avatars available. That you can't choose your avatar has something funny. Snek is designed for anonymous use anyway, what's the point of customizing it. You have to live with your avatar. They're automatically generated thus it's possible to be woman with a mustache. We've seen many funny avatars.

Technologies used

  • python - the backend
  • aiohttp - asyncio web framework. Basically my router.
  • dataset - sqlite3 to documentdb wrapper
  • pygments - for syntax highlighting
  • sqlite3 - file based database
  • jinja2 - for templating
  • html - the frontend
  • vanilla javascript - the frontend
  • css - the frontend
  • docker (optional) - for deployment
The ORM and all form validation is written by myself. It was a good decision. All data is validated on model level before entering the database. Also, the frontend is vanilla javascript and thus great performance. The javascript is just inline since this project consists about several backend rendered pages with their own functionality.