An open-source, context-aware, event based team communication tool designed with
emphasis on software development teams.
- Download and install RethinkDB if you haven't already
npm install -g perspectiveapp
rethinkdb in one shell/process
perspectiveapp in another shell/process
lib/server/config.js for the default configuration. You may override these
settings by creating a custom configuration file with the same structure and placing
How is Perspective different from Slack, HipChat et. al?
Perspective is open-source and free to use, even for on-site installations
behind pesky firewalls. Also, while there is a long way to go, Perspective
aims to be more than chat by providing the right information at the right time
to the right user. Examples:
- Present key events on a dashboard suitable on a TV for your whole team to see
- Switch the dashboard into a special mode during stand-ups to provide the
most relevant information
- A view of Stash/Jenkins branch and build jobs as a separate overview page
(in addition to being posted in relevant chat rooms)
- A view of the currently installed applications and versions in different
server environments (in addition to deploy notifications in chat rooms)
What's the high level architectural ideas?
- "Everything" is an event. A chat message is simply an
event of a specific type.
Similar a build job on Jenkins will be an event of another type. Integrations
will be able to format events in a chat room, hook into "dashboards", create its
own menu entries, listen for other events to produce new events and more.
Is it stable?
Not at all. Yet :)
Contributions are most welcome! Simply open an issue or create a pull request.
- Install RethinkDB
- Clone this repo
npm run watch (
npm run watch:server -- -- --verbose for debug logging)
npm run for a list of other options.
perspective.debugLoggingOn() to enable client-side debug logging
Will be migrated to github issues eventually
- stable events api for creating events via REST (validation)
- error handling LOAD_EVENTS
- event-store: sliding window? Evict old events to keep memory from building up
- don't scroll to bottom automatically if user has scrolled up
- set status (online/away)
- set status automatically to idle
- support @here, @channel, @everyone , @username
- support "... is typing"
- support drag'n'drop files
- support copy/pasting and embedding images
- support code snippets
- detect and convert http links
- append message clientside immediately, but implement "failed to deliver message"
or similar if connection fails
- security: allow plugins to format using HTML, but prevent XSS (see message.react)
- create startupscripts
Perspective is released under the MIT License.