Dissonance is a SPA Discord clone built using several technologies.
- react-redux for managing flux pattern and render pages based on the state of the local store.
- PostgreSQL as the database system.
- Jquery and Ruby on rails to manipulate or access the database.
- and... with a responsive design in mind ;]
In its core, Dissonance supports live messaging through different servers and text channels. There is a demo login where users can explore the various features.
- User Authentication/Responsive
Users can register or log into their existing accounts. Errors are rendered to show invalid credentials. Errors are also properly removed when not relevant.
The Dissonance app's responsiveness mirrors that of Discord.
- Live Messaging/Direct Messaging
Live messaging is implemented using Ruby on Rails ActionCable. Users are subscribed whenever they are presented a message input field.
createSocket() {
let cable = ActionCable.createConsumer();
this.chats = cable.subscriptions.create({
channel: 'ChatChannel'
}, {
connected: () => {},
received: (message) => {
this.props.receiveMessage(message);
},
create: function(chatContent) {
this.perform('create', {
content: chatContent
});
}
});
}
- Servers/channels
Users can create servers and join existing servers. Users are subscribed to servers they are in, and are listening to a server deletion via actioncable. If a server is destroyed users on the server are redirected properly. All users belonging to a server can create channels and edit channel names
- Friends
Users add friends which allow for easier direct messaging, users can also remove friends.
-By Sunny Wong