Skip to content
This repository has been archived by the owner on Sep 28, 2022. It is now read-only.

skyuplam/simple-chat

Repository files navigation

Main tasks

  • Implement a chat service, that supports at least 2 different devices at the same time
  • You should be able to edit your own messages. Other particpants should see that the message was edited
  • You should be able to delete your own messages. Other particpants should see that the message was deleted
  • List of active participants to show who is in the session right now
  • Style the chat to look like the provided design

Bonus tasks

  • Image support
  • Fetch URLs and display a page preview on link hover
  • Emojis
  • Giphy support
  • Alternative layouts / themes
  • End to end encryption

Getting Start

Please see scripts field in package.json file for other commands.

NOTE: only the users in the db.ts file can access the meeting room.

# Install dependencies
$ yarn install

# Start dev server
$ yarn start

# Open a Browser and visit the site via http://localhost:1234
# Input the name in the [mock db](src/db.ts), e.g. Terrence Lam
# to login and join the meeting!

Src Organization

src
├── client.ts   # Client Entry point
├── components  # React components
├── config.ts   # Project config file
├── containers  # React-redux state and action containers
├── db.ts       # Fake DB
├── effects     # Server Effects
├── hooks       # Custom react hooks
├── html        # HTML file containers
├── listeners   # Server listeners, e.g. HTTP and WebSocket
├── middlewares # Server middlewares
├── server.ts   # Server entry point
├── services    # API services for client fetching
├── store       # Redux store and related
└── utils       # Utilities folder for common utilities