Skip to content

Latest commit

 

History

History
53 lines (42 loc) · 2.99 KB

readme.md

File metadata and controls

53 lines (42 loc) · 2.99 KB

Flipcoin

Description

The goal is an application allowing users to create a room with full chat capabilities, as well as setting on some rules to produce a random result. Then, after the acceptance coming from all the participants, this random result is produced for them to use.

Motivation

Project came to life as I wanted to settle a dispute with my friend online using a coin toss. Unfortunately the physical one was out of option, and, to my surprise, coin flip apps on the internet were either not multiplayer, required login or had some other annoying flaw and we both denied using them, as well as we wouldn't do it through a TeamViewer or a webcam - we're not animals. TL;DR: I've started it because I was angry due to minor and unimportant inconvenience.

Implementation

Techstack used is pretty classic, React+Redux and SASS styling on the front with Express.js on backend. Instead of normal API I've decided to try out socket.io for a live communication, as it seems to fit pretty well for a live room & chat management.

The optional feature I think hard of is some kind of tinfoil security measurements, so even if the server and 99 clients are malicious bad party trying to make me lose my bet with a coin toss - I still could tell that this toss was a hoax. Maybe some kind of common-generated seed exchanged by all the parties(initially encrypted parts of the seed)?

Legend

✔️ Done
❌ Not done
〰️ Comment

Requirements

  • App should consist of the welcome page and the room
  • Welcome page:
    • ✔️ Contains information about the project
    • ✔️ Allows creation of a new room
    • ✔️ Redirects to the room when it's created
    • ✔️ Join room with name feature
    • ❌ Responsive and nicely styled
  • Room:
    • ✔️ Consists of chat, user list and settings areas
    • ✔️ Gets the room info from API
    • ✔️ Save token, when getting one from the server
    • ✔️ Save last username
    • ❌ Displays error when failed to join room for some reason(like it's not existing)
    • ❌ 〰️ To be thought about Tinfoil rolls
      • Chat:
        • ✔️ Displays messages and updates with new ones
        • ✔️ Allows to send a new message to the room
        • ❌ Make it more readable(maybe a color for each user?)
      • User list:
        • ✔️ Displays users currently joined to the socket
        • ✔️ Shows whether or not the user marked himself as ready
        • ✔️ Make it clear who is the host
      • Settings:
        • ✔️ Display available settings
        • ✔️ Allow user to change his confirmation status
        • ❌ Allow changing settings for host only
        • ❌ Update users about changes to settings
        • ❌ Automatically make everyone not ready on settings change
        • ❌ When everyone is ready host can start the roll