Skip to content

SrishtiSaurav22/biblo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

100 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Biblo

Reading tracker and book recommendation Android application

Concept notes

Recommended Architecture (Initial, small scale)

Flutter App <=> Monolith Backend API Server <=> Database

No need for proxy yet since at this stage we're not creating microservices

In the backend, there are logically separate features — physically in one service.

Functionalities

  1. User sign-up/login

  2. Get random suggestions (nothing to do with ML)

  3. Get curated suggestions (using ML)

  4. Update preferences (for the ML component to use for generating suggestions)

  5. Play a game

    a. Fill-In-The-Blanks b. Identify-the-book-from-the-dialogue c. Match-the-authors-with-the-books

Domains

  1. Auth Domain
  2. Recommendation Domain
  3. Game Domain

Modular monolith

Database design

  1. Users
id (UUID)
username
email
password_hash
created_at
  1. Books
id
title
author
genre
theme
trope
era
setting
pub_year
  1. Quotes
id
book_id (foreign key)
quote_text
difficulty_level
  1. Games
id
user_id
score
started_at
ended_at

Rough notes

Games:

  • Tic-Tac-Toe

  • Rock-Paper-Scissors

  • Coin-Toss

  • Quiz game teaching the user about women in literature

  • Card game

    1. There are two players that play against each other: the user and Biblo

    2. Both the players have a counter measuring their health in a number. The counter changes colours to depict the current health of the player. It's colours are:

      a. Green if the player's health is above a certain threshold, indicating that it is good
      b. Yellow if the player's health is within a certain range, indicating that it is low
      c. Red if the player's health is below a certain threshold, indicating that it's poor and the player could lose soon

    3. The game or "battle" is timed with a timer on screen.

    4. The user has a stack of cards from which they'll select one. On the screen you'll see two boxes, one displaying the current card and the other displaying the stack with just "stack" displayed on top of it.

    5. The can see what cards they have in a pop with left and right moving buttons to show them their collection of cards, and they can select one of them to play next.

    6. Biblo's card selection will be random.

    7. Both the user's and Biblo's card selection will be randomly decided. While the user can select the next card to play, Biblo will randomly select a card from its randomly selected collection.

    8. The cards are about popular mythical characters like vampires, werewolves, elves, dragons, pegasuses, goblins, etc. with different stats.

    9. There are 3 group of cards:

      a. "Common": Normal stats, not too high, not too low
      b. "Rare": Underpowered characters, low stats
      c. "Legendary": Overpowered characters, high stats

    NOTE: All the characters stats are balanced

  1. The stats of both the players get balanced out based on differences between their different stats.
  2. If a player has legendary cards, against the other player's non-legendary cards, then their health will increase by a small number (apart from the balancing out between their respective stats)
  3. If a player has a rare card, against the other player's non-rare cards, their health will decrease by a small number (apart from the balancing out between their respective stats)
  4. Common cards have no special effects similar to the legendary and rare cards

Concept art

About

Reading tracker and book recommendation Android application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors