Git Product home page Git Product logo

bot-busters's People

Contributors

carlos-kryha avatar frankbenji avatar mautjee avatar privilegemendes avatar ramidecodes avatar silimarius avatar tsungaichipato avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

bot-busters's Issues

Refactoring source structure

  • Remove feature directory

    • Redistribute inner components to the components dir
    • Redistribute services into service dir
    • Redistribute pages into pages dir
    • Redistribute utils into utils dir
  • Service (only backend code?)

  • Remove unused Hooks useRoom

  • Move routes to top level dir

  • Move user & test from server/service into db

  • Move logic from useMatchState into match page

  • Move sprite-controller to components dir

  • Remove animation feature in favour of creating AnimatedSVG component to encapsulate all animation logic including event handlers ( To be updated in future)

  • Move mui into styles

  • Rename scores for results

  • Add switch depending on matchStage

  • Move feature smart components into containers

Integrate anti-bot filter

https://developers.google.com/recaptcha/docs/v3

Since we'll allow anonymous users to play, we also need a way to identify malicious users / bots.
For this we'll implement reCAPTCHA v3 to generate a score and identify bots.

  • Implement reCAPTCHA v3 on the landing page and lobby.
  • If potential bot is detected offer a second CAPTCHA challenge to the user
  • In case Prevent further navigation from this session until the CAPTCHA challenge is solved

As a player I will have 1 minute to cast my vote on whom is a bot

https://www.figma.com/file/g3BAl5VP2xrMoloyjmdJ2u/BotBuster?type=design&node-id=552-2195&mode=design&t=C2T3Ay3P5ZsUfg7i-4

After the chat round has finished, each player will vote on whom is a bot. Since the decision will impact the over all scoring of other players we need to enforce this step, and make sure each player casts a vote.
If the player doesn't cast a vote in time they wont be getting any points from the previous round.

The button to "confirm" will display a timer and a bar that showcase the time left to cast a vote

Animation Benchmarking

  • PNG Sprites
  • SVG Sprites
  • Alternatives

Check for:

  • frames per second
  • Amount of element being animated

Implement Menu navigation

https://www.figma.com/file/g3BAl5VP2xrMoloyjmdJ2u/BotBuster?type=design&node-id=805-1880&mode=design&t=d3FsmSw2Yi7AokAm-4

The new menu should be always visible in the top-right corner.
The User Stats will be grouped together with the menu button and the sound button.

On click, the button uncovers a full screen view of the navigation items, centred in the middle of the screen.

One variation in the elements is the Connect / Sign-out item that will change depending on the authentication status of the given user.

The open menu view has a unique Footer showcasing copyright inf, Legal pages and third party links.

Update match routes

Remove older routes:

  • chat
  • decision
  • results

These will be independent views triggered by the state of the match

Setup CI/CD

  • Remove Vercel references
  • Setup Kubernetes
  • Setup Docker containers
  • Config for GCloud
  • GitHub actions

As a player I would see an initial achievement prompt at the beginning of the chat session

https://www.figma.com/file/g3BAl5VP2xrMoloyjmdJ2u/BotBuster?type=design&node-id=606-1910&mode=design&t=C2T3Ay3P5ZsUfg7i-4

At the beginning of each chat session the player will see an achievement prompt indicating suggested conversation starters.

The general structure of an achievement prompt will have two sections:

  • Achievement name - Amount of points awarded - Action required to unlock the achievement
  • Guideline on how to get the achievement

(The current implementation only will have one question or suggestion without points or guidelines)

During the chat round multiple achievement prompts can appear guiding the players to have a more engaged conversation.

As a user I would like to select my username after connecting the wallet for the first time

After connecting the wallet for the first time the user will see a prompt to add their selected username.
In the background the user will see a blurred leaderboard (this is just a mocked image)

The user can click on a "generate" button multiple times to find a good username.

Username must be visible in the Lobby page, while waiting for a chat session.

  • Implement Select Username View
  • Implement random username generator

https://www.figma.com/file/g3BAl5VP2xrMoloyjmdJ2u/BotBuster?type=design&node-id=340-205&mode=design&t=Q6BKq7jZeM3Gw8tz-4

Image

Implement Lobby Page

Parent

https://www.figma.com/file/g3BAl5VP2xrMoloyjmdJ2u/BotBuster?type=design&node-id=805-2638&mode=design&t=d3FsmSw2Yi7AokAm-4

When users click on "Play", the join lobby event get's triggered and users are re-directed to the Lobby page.
The page contains a simple spinner for now, and the user stats component in the top-right corner.

After the user gets matched, a splash screen pops up and quickly goes away (feel free to animate this in the most simple way possible for now).

Navigation goes to /chat page (will be renamed) including the room_id in a query string.

Timer should start after splash screen from the transition disappears.

Implement timer service on the backend

The backend timer service will be the source of truth for keeping the session time.
The correct time should be communicated through the web socket session, and synchronised with the clients as needed.

  • Add timer length as constant in config file

Add user table to database

Create schema for User props

  • UUID (primary key): string
  • username: string
  • address: aleoAddress
  • score: u64
  • zpass_credentials: JSON(?)

As a player I would see a visual representation of the time left for the current round

https://www.figma.com/file/g3BAl5VP2xrMoloyjmdJ2u/BotBuster?type=design&node-id=606-1497&mode=design&t=C2T3Ay3P5ZsUfg7i-4

Players will see a line on top of their chat message input field. The line will showcase the amount of time left for the current round. As the timer goes down so that the length of the line will be reduced.
After reaching a threshold the color of the line will change to remind the player that time is running out.

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.