Clone of iMessage Application
npm init
to install the application.- Install the node_modules and the existing imessage.db has enough data to get started.
- Once all the node_modules are installed, start the server by using,
node server.js
ornodemon server.js
. nodemon
monitors the server for changes and restarts when needed.- NPM package
opener
launches the application in a new tab in your default browser. - If it doesn't happen, navigate to
http://localhost:5000/
on your browser to start the application or check for logs in the console.
config/
- Configuration.json to indicate host, ports, log levels, paths, etc.contact_images/
- Images of a few personalities which can be used as contact images. You can choose your own image as well.log
- Default folder for storing the log files. Logs are stored in JSON formatpublic
- public files to be exposed to the client sidecss
- stylesheetsimages
- for default contacts, loading icon, faviconjs
- AngularJS files for the application, controllers, services, etc.views
- Html fragments for login, registration and home page
screenshots
- Some screenshots to give a good feel of the applicationserver
- Contains all the server filesdata
- Has the db file for storing user information and messagesdb
- Has the db logic to fetch and manipulate information in the dbglobal
- Global configurations or services can be added here to be available globallylogger
- Has the logic for creating the logger and specifying the levels and pathsession
- Details about managing the session in the applicationutil
- Util object to support library of utility methods
server.js
- Node.js server entry point
- joe/1234
- michael/1234
- batman/1234
- bruce/1234
- clark/1234
- superman/1234
Even though there are existing users already (if you had downloaded the imessage.db file), you can create your own contact from the registration page.
It looks empty without any conversations or messages. So let's send a message to someone in our contact list.
Select any one of the contacts to start sending messages to them.
You can send normal text messages as well as send images along with them.
The recipient gets notifications with the number of unread messages in their conversation list, while logged in or after logging in.
The recipient can click on a contact to read the new messages. Once the contact is opened, notification is sent to the DB to clear the unread message flag for that conversation.
The recipient can now reply to images and enjoy their conversation.
- Search conversations, contacts
- Conversations, messages sorted based on timestamp
- Relative timestamps using Moment.js
- Logging activities using Winston
- Configurable settings
- Encryption of passwords and messages
- Sending smileys by using Unicode characters
- Video calling using WebRTC
- Chatbot integrations
- Deletion of messages, conversation
- Preview of links in messages
- Analytics and insights from logs