Chatyuk! (Let chat!) is very early in its development phase. It hopes to grow up to an easy to embed multi user chatroom for any webpage.
- Run
npm install
to install required packages for development - Install browserify globally
npm install browserify -g
- Install watchify globally
npm install watchify -g
Run vagrant up
Due to the way some of the configurations are hardcoded now, you will need to add these following 2 settings to your /etc/hosts file.
127.0.0.1 chatyuk.com
127.0.0.1 conference.chatyuk.com
- Run
npm run-script build-components
to continuosly build the code. - In the root directory run
python -m SimpleHTTPServer
- Access the application at http://localhost:8000/public/chat.html
- Run
npm run-script build-tests
to continuosly build the tests. - In the root directory run
python -m SimpleHTTPServer
- Access the tests at http://localhost:8000/jasmine/SpecRunner.html
- Add the application bundle to your page like and and initialize the Chatyuk app like so
<script type="text/javascript" src="path/to/scripts/bundle.js" >
<script type="text/javascript">
Chatyuk.init(document.querySelector('#chatarea'), {display_mode: 'onpage'});
</script>
- Chatyuk.init(element, config); config accepts the following keys
- display_mode
- 'onpage', the chat window floats on an existing page
- 'inpage', the chat window is embedded into the page
- Has basic emoticon support
- Detects urls and embeds
- images and gifs
- youtube videos
- vidio videos
- links into clickable links into chat window.
- Add in page mode (a-la twitch or cliponyu)
- Figure out if using browserify for the main Chatyuk object will be a hinderance when integrating with websites that also use some form of modules
- Add acceptance testing using nightwatch.js
- Add sample on how to embed chatyuk on existing page
- Improve default style
- Scrollbar in chat window is ugly
- Vidio embed is not sized correctly
- Removed unused CSS in chatyuk.css file
- Remove jQuery dependence in comms.js
- Remove hardcoded domain names from both client and server configurations
- Fix bug with rejoining rooms. converse.js had the same issue and they fixed it be removing strophe.muc.js, yikes
- Implement sample server code to create a pre-bound session
- Prebinding and security - http://metajack.im/2009/12/14/fastest-xmpp-sessions-with-http-prebinding/
- auto login to room
- control rooms from server
- Refactor current stylesheets - either move everything to React components or leave in stylesheet or halhway house ?
- Display roster
- Presence (when people join or leave)
- How would we set certain users as admins ?
- Identify them in the roster
- Give them the ability to ban users
- Automatically kick abusive users out of rooms
- Websocket support
- Deps management - Use browserify-shim for strophe and linkifyjs. Stop changing code for strophe.
- Emoji/Image picker
- Add ability to set chat room name in chat window
- When I am chatting, although scrolled up, scroll the chat window down
- Add the "More chats below" ala Twitch
- Figure out best way to handle customization => themes, emoticons
- There is a DDOS vulnerability with LuaExpat 1.2 that ships with 14.04
- HTTPs ?
- Code should be acompanied with tests.
- Add test file to jasmine/spec/ as per the structure of the actual code in the app folder. For e.g. tests for app/comms.js go into jasmine/spec/comms_spec.js, tests for app/components/message.jsx go into jasmine/spec/components/message_spec.jsx
- Add a require entry to the relevant spec file in jasmine/spec/suite.js, it should be automatically picked up by browserify and included in the specs.
- Code entry points is app/chatyuk.jsx.
- General code goes into app/
- Add all UI related components into app/components.
- Create directories to keep commmon files together.
- Chatbox
- MessagePane
- Message
- Message
- LoginForm/LoggedInBox
- MessageBox
- Parsing links from text - http://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links
This project has borrowed/used/copied code from:
- Converse.js - https://conversejs.org/
- Strophe.js
- Twemoji awesome - http://ellekasai.github.io/twemoji-awesome/
- Linkify - https://github.com/SoapBox/jQuery-linkify