Giter VIP home page Giter VIP logo

pigeon's Introduction

Pigeon Chat UI

alt text

Main user workflows:

  • User login
  • Displays all existing messages in the chatroom
  • Add new message(s) by typing in the message box and hitting "enter" or the submit button
  • Visualize other users' info by clicking on the info icon on the top right corner
  • Return to chat screen from info screen by hitting the back button on the top left
  • Localization between English and Chinese

Feature details

  • Hover-over other users' icons to see expanded view of icons
  • Immediately upon adding a new message, a small loading icon will appear on the right side of the new message
  • Loading icon will disappear once message is added successfully (simulated) on the server side
  • Hitting the play button will add multiple messages from other users
  • Use the English/Chinese buttons on the login screen to toggle languages
  • Use the <> button on the top right side of the chat screen to toggle languages

Technical decisions and caveats

  • Given the time constaint, uikit design system was adopted to provide basic icons and styling
  • API error handling was not implemented (see comments in messageApi, userInfoApi, or authenticationApi)
  • State is maintained in local storage via redux-persist library, mainly to persist logged in user info

Next steps

  • Testing
  • Unit testing of React components as well as redux actions/reducers etc
  • UI automation tests with Selenium
  • UI/UX Features
  • Improve transition between chat and info screens, potentially with TransitionGroup
  • Implement retry mechanism for unsuccessful attempts to add new messages (ex. no connection)
  • Visual indicator (ex. "..." in iMessage) while user is typing in the message box
  • Tech Improvements
  • Refactor language localeUtilities to be more configurable and scalable to accomodate more languages
  • Implement error handling for both globally (ex. default popup) and locally within components (ex. error banner)

To install

Clone this repo with

git clone git clone git clone https://github.com/bcfchen/pigeon.git

cd into the pigeon/client folder and install npm packages by:

npm install

To run

Check that you're in the pigeon/client folder and run the project by

npm start

The page should automatically open up in your browser at

localhost:3000/chat

Main libraries & services used

  • React/Redux
  • uikit for design system and icons
  • PropTypes for component property type checking
  • react-i18next for localization

pigeon's People

Contributors

bcfchen avatar

Forkers

shishirmadari

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.