A minimal chat app over Go web-sockets.
- Reduce heartbeat rate if window not visible.
- "Hide screen" when window visible for too long (AFK protection).
- Cleaner input area.
- Regularly replace timestamp with relative timestamps (about 3 minutes, 2 days, etc).
- All navigation done through simple nav bar.
- rooms/options are 'bootstrap breadcrumbs' that drop down or something
- {Gossip} / {organization | group} / {room | whisper}
- people in users list are links to start PM session
- {meta-key}+click may @mention someone in the current channel
- rooms/options are 'bootstrap breadcrumbs' that drop down or something
- IRC-style commands
- Off-The-Record
- All the good and thought out encryption I can muster.
- Only keep last X messages -- scrolling loads more.
- Quickselect -- potentially on holding of a meta key;
- Use something like this
- Link to most recent and/or popular:
- People/ private rooms
- Rooms
- Groups
- Search
TODO: Mongo documentation
First, read the building section. It will illustrate how to:
Then decide whether you want to:
Coming soon lol ...
Now that we've got everything built/installed let's run the thing.
To run the server on the machine you built/downloaded on:
make run
This also requires a Mongo
database be running on the system.
Assuming no changes were made to the Vagrantfile
the application will be accessible at:
http://192.168.20.20
Coming soon... done in Vagrant
.
Much of the building and installation is done via make
. There are a few prereqs.
The following are requisites only for building. They are hard dependencies for it, however.
All secondary libraries, utilities, and actions are installed by the make
commands.
make deps
Do note that the node
requirement may be expanded or completely removed. I am open to suggestions or pull requests on this matter.
For a list of what dependencies are used:
- Go:
/deps.json
- node:
/package.json
If all hard dependencies met, a simple make install
will do. For sanity's sake, I'll describe the whole process. It is two parts.
- Install
go
: - Install
node
:
Now, to build the binary and client, simply run:
make
make install
- binary installation directory set by
$PREFIX
- inline:
PREFIX=/my/install/dir make install
- inline:
- binary installation directory set by
The default make
target will pull secondary dependencies, compile the binary, and generate distribution client code.
Intuitively, make install
installs the binary into a globally executable location and the client into a servable directory.
In the root directory you will find a Vagrantfile
and an ansible/
directory.
Vagrant provides easy creation of machine environments using a variety of providers but most natable Virtualbox and EC2.
Ansible is a tool that allows easy provisioning of machines generated by Vagrant or some other means. Simply point it a single or set of boxes and let her rip.
To start a local environment make sure you have Vagrant and Virtualbox installed.
Once this is done, simply run:
make local
Still working on this ...
This list does not contain all the commands. It is meant to highlight the important ones.
- Does a "sum-total" build of the server binary and client.
- It does not attempt to install it, however.
- Install all secondary dependencies for
go
andnode
- Only build the server -- go portion of the codebase
- Build the reference client into the ouput directory
- Remove intermediate files and built directory
- Debian-focused, though should work on most *nices or BSDs
- verified on
Ubuntu 14.04
andMacOSX 10.9
- verified on
- Install the binary to the
$PREFIX
directory- if none supplied,
/usr/local/bin
is used
- if none supplied,
- Install the client to
/srv/gossip
- this will be made variable soon
- Build a local test environment using Vagrant and [Ansible] (http://ansible.com).
- Run the server on the machine issuing the command
- Will build the system first
====
If you encounter problems with gossip, please feel free to raise an issue.
Fork this repository and make a pull request!
gossip is released under the MIT license.