tsatter.com is what resulted from me wanting to make a website, and take it far enough to call it finished. I learned a lot along the way. Here's a short description of the whole system. I'll write more specific posts and link them here when I find the time and interest. Requests for speeding up a specific part are of course welcome.
- Dockerized environment for easy development and deployment
- Provided you have docker installed, it takes executing one command to have the whole 5 part infrastructure set up for you.
- NGINX
- efficiently shares static files
- NodeJS
- handles socket connections and the REST api
- image download and minification on another thread
- Dependency injectioned components for easier mocking and unit testing.
- Spam blocking
- IRC server
- handles actually delivering messages between users in channels, and keeps track of channel's ops etc.
- provides a tried and tested protocol for bots to interface with.
- AngularJS front-end
- infinite scrolling front page
- infinite scrolling messages
- clicking the timestamp gives a shareable url. Opening the URL will take the opener to that message, and highlight it.
- no need to load the whole history at once
- handles massive amounts of lines without slowing the computer much
- infinite scrolling images
- images have a link to the message in which they were linked
- inline image search & linking (by pressing @ in a chat)
- kicking/oping/unoping users in a channel
It used to have registering and logging in as well at a time, but I wanted to make starting using it as easy and low effort as possible. But now I'm thinking maybe sending those post registration spam emails would help with user retention and actually getting users back to it after they've tried it once.