Giter Club home page Giter Club logo

monopoly-mobile-banking's Introduction

Unofficial banking companion app for monopoly board games.

This app replaces the play money in Monopoly board games. Instead, every player can see his money balance on his phone and make transactions through the app easily.

App Showcase Image

A demo is available on monopoly-banking.web.app.

How to use this app:

  1. All players have to open the website (or install the app on their phone).
  2. One player creates a new game.
  3. All players connect to this game.
  4. Now all transactions can be done via the app, e.g. sending a player money or getting money from the bank.
  5. Have fun ๐Ÿ˜€

NOTE: This project is still in the early stages. If you have ideas, find bugs or have suggestions, just open an issue :).

monopoly-mobile-banking's People

Contributors

dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

monopoly-mobile-banking's Issues

Fix bug with wrong name in transaction history

When your name for example is 'Jens' and you got 500.000 $ from 'Evelyn' this is shown in the transaction history item:

'Jens paid you 500.000 $'

But the text should be like this:
'Evelyn paid you 500.000 $'

Let the server manage/make transactions to avoid sync errors

Sometimes multiple transactions take place in a short timeframe. With the current implementation, it can happen that some transactions are 'lost' or overwritten by others because the client manipulates the state of the game instead of the server.

It would be better to store the transactions in a sub collection of the game object in the database. (This would also make it easier to set the timestamp to FieldValue.serverTimeStamp because it is not nested anymore.)
Then a cloud function could detect the creation of new queued transactions and manipulates the player's balance in the game state object accordingly.
When that (the transaction) is done, it can update the status of the transaction and show that in the UI.

Always use network time for timestamps.

Currently, I use a mix of package:ntp and FieldValue.serverTimestamp(), unfortunately though package:ntp does not support flutter web.

The best way would be to use FieldValue.serverTimestamp(), but that's complicated with the nested players and transaction data. PRs are very welcome!

Store results of all played games of a user

Create a GameResults class which can be stored in a list in the users object in the database.

A GameResults object could store information like:

  • game id
  • when the game started
  • duration of the game
  • place of all players

These could be shown on the homepage and be used to calculate statistics like how many games the user played and won in total.

To create these objects we could create a function which converts a Game object into a GameResults object when the game has a winner.

Incorrect thousands separator

Hi @devj3ns, awesome project โœจ ๐Ÿ˜

In the demo I saw that you are using . for the thousands separator, however, that is probably not the correct one for the locale on the device.

The intl package provides ways to do this properly.
See this function for example: https://github.com/simpleclub/math_keyboard/blob/491120508a9b665182dcc7e674323ae26bcc3f2e/math_keyboard/lib/src/widgets/decimal_separator.dart#L12
It uses the intl package to determine the decimal separator and you can use the same method to determine the thousands separator. I think that would be GROUP_SEP (https://pub.dev/documentation/intl/latest/number_symbols/NumberSymbols/GROUP_SEP.html).

However, I think the best way is to use NumberFormat directly instead of doing it manually because that uses the correct number format based on the locale by default.
Maybe you are already doing that, but it seems like it is not properly formatted.

Or, I was tricked by the device locale being de while you are using English strings :D (also possible). In that case, I would force the locale :)

[Web] sign in with google does not work

SignInWithPopup works but SignInWithRedirect not.

Error: [firebase_auth/unknown] An unknown error occurred: TypeError: Cannot read properties of undefined (reading 'isNewUser')

Create wait for players screen

  • Don't allow the connection of new players when the game has started.
  • Set startingTimestamp on game to the time the game actually started and not the time the game was created.

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.