Giter VIP home page Giter VIP logo

betandruin's Introduction

BetAndRuin - 2022

BetAndRuin is a betting application developed for the Software Engineering (SE) course.


Authors

Josefinators


Instalation

Prerequisites

  • In order to fetch football matches, you have to register in an external Rest API like this one, and use the token provided by the API. Then, add your token to a new TOKEN environment variable.
  • Copy the config file located in the root of the repository to your user.home directory. Otherwise you may have problems connecting to the database and fetching some avatar images.
  • Set environment variables for the email (EMAIL) and password (PASS_EMAIL) used by the MailSender class. If you are using Gmail, remember to activate the "Access to less secure applications" option, otherwise the MailSender class will not be able to send emails.

You can download the latest version here.


Project development

0th Iteration. Project setup

The initial scenario proposed to us is a menu where any user can both create questions and query them.

At this starting point, there is still no distinction between users, there are no use cases defined beyond CreateQuestion and BrowseQuestions. The application is composed by 3 different interfaces, MainMenuGUI, CreateQuestionGUI and BrowseQuesionsGUI.

1st Iteration. Authentication and initial use cases

For this first iteration, we are asked to define the requirements of the application, based on 4 initial use cases:

For each of these use cases, we have to:

  • Create the use case diagram, including flow of events
  • Update the domain model
  • Draw the mockup GUI
  • Implement the use case

List of tasks carried out during iteration:

Compulsory

Optional/Extras


2nd Iteration. Migration to JavaFX and more use cases

With the proposed migration to JavaFX, we have invested much of the time spent on the project in redesign each and every one of the old interfaces using JavaFX instad of Swing.

The end user can now enjoy a UI decorated with a selective color palette and a wide range of new components that facilitate and improve navigation, as well as a set of new utilities and use cases for an optimal application experience.

List of tasks carried out during iteration:

Compulsory

Optional/Extras

  • Custom navigation bar. We have removed the default top bar and designed a bar with a more modern look and more utilities, such has two-way navigation and dynamic language changer. Also, the new bar has a nested sub-bar that will show the buttons to login and register if the user is not logged in, and user's avatar1 as well and a dropdown menu with several utilities if the user is authenticated.
  • Earth globe event searcher. Although it is part of Browse Events GUI redesign, we believe that the new function to search for events is remarkable. The user can now select events by country by clicking on the earth globe on the left side of the interface. Similarly, if the user selects an event from the events table, the ball will automatically rotate to the country where the event takes place.
  • Linking fonts from Google Fonts. In our case, we are using Roboto.
  • Integration of libraries:
    • FontAwesome. An icon library widely used by developers.
    • JFoenix. JavaFX material design library.
  • String input input validation in the new interfaces, now also with the use of observators.

3rd Iteration. Advanced design, dashboards and Rest API

For this latest iteration, we have tried to improve the user and administrator experience as much as possible.

To do this, we have separated the application in terms of a gambler, an administrator and a common area for both of them and anonymous users, the portal for betting and viewing events.

List of tasks carried out during iteration:

Compulsory

Optional/Extras

The administrator can now manage events, quotas and forecasts in a much simpler way. The interfaces are interconnected, so that the administrator can access the queries associated with an event with a single click, just as he can access the forecasts associated with a question with another click. We have aimed to create a simple, but very powerful and intuitive interface, so that the administrator can perform his tasks efficiently. In addition, we offer the administrator an overview of the application, which can let him know at a glance the balance of the last month, the upcoming events...

  • Use cases (user)

    The user now enjoys a pleasant and easy-to-use interface, with a wide range of components and animations that will enhance the experience significantly. The overview offered by the main panel of the allows the user to know his/her track record in the application, the bets placed, the money won and even the fluctuations of his/her wallet over the last month.

  • Redesign and UI creation

    • Admin dashboard. Includes all the aforementioned use cases.
    • User dashboard. Includes all the aforementioned use cases.
    • Plenty of new custom componentes, such as transaction panels, deposit/withdraw money widget, 3d flipping credit card, animated dialogs...
  • Email

    • Email code sender for password change authorization. If the user wants to change his/her password, he/she will receive a 5-digit code in his/her personal e-mail that must be entered in the application to authorize the operation. As an extra, the email is customized with some HTML and CSs, and since it is multipart, the end user can download our logo.
  • Installers

    • Builds. We have generated installers for Windows, MacOS and Linux with the help of GitHub Actions. You can find them here.

Footnotes

  1. Users cannot upload avatar's yet, but the platform is already prepared for that situation.

betandruin's People

Contributors

botxan avatar itsnko avatar juananpe avatar leireinsausti avatar pablobec93 avatar poxito avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

juananpe alaitz19

betandruin's Issues

Withdraw money

As a user, I want to withdraw the money I have earned from my bets.

Sign up /register

As an anonymous user I want to be able to register so I can use all the member-features of Bet&Ruin.

Main menu (User use case)

As a user, I want to access a menu as soon as I log in so that I can search for events and place bets.

User list section

As an administrator I want to have a section where I can see information about registered users.

Browse/Query questions

As an anonymous user I want to browse and query questions so I can be able to see the available queestion, choose one and bet on it.

Results

A Question can have more than one result, so each result will have their own fee.

Set forecast for a question

As a administrator I want to be able to set a forecast for the question so users and I can win (or lose) the fee.

Show (money) movements

As a registered user I want to see my money movents in order to know my expenses and incomes within the application, as well as to prove the integrity and validity of my transactions.

Log-in

As a logged-in user I want to be able to log-in into Bet&Ruin so I can:

  1. Place a bet.
  2. Retract my bet in a timeframe.
  3. See live results.
  4. See current view-rate.
  5. Log-out.
  6. Reclaim my gains.
  7. See my historical bets.
  8. Notify any bug.
  9. Recommend the app and match results to other users.
  10. Add another users to 'friend list' to make collaborative bets.

As a logged-in administrator I want to be able to log-in into Bet&Ruin so I can:

  1. Set fees for a question
  2. Create a new event
  3. Create a new question
  4. Delete questions
  5. Ban users (usually also applies to the ones who are winning too much)
  6. update results
  7. access to the database
  8. Keep in track with the current matches and add them to the calendar
  9. Send messages to logged users (to inform cancelled matches...)
  10. Notify users
  11. Outage maintenance
  12. Set a minimum bet

Remove a bet

As a registered user I want to be able to remove a bet and get my stake back based on the conditions established by the company.

Create a new question

As an administrator I want to be able to create a new question so I can set fees for the question.

Deposit money

As a registered user I want to be able to deposit my money in my account so I can use it for betting.

Two-way history

One way to return to the previous window, and another to go to the next one (if there is a next one).

Browse events (old Browse Questions) - V2

The new window for browsing events will have the following features:

  • A 3D earth globe where the user can click on a country, and events for in that country will be displayed.
  • A date picker to select the event date.

Prerequisites:

  • Mapping between country name and globe coords (x, y).

Remove forecasts

As an administrator I want to be able to delete forecasts in case they are no longer available or have been created wrong by mistake.

Change language

Implement a utility to change the displayed language in every window.

Publish results

As an administrator, I want to publish the results of the events so that users can check their wins and losses.

Remove event

As an administrator, I want to be able to remove events in case they have been cancelled or simply cannot be published for other reasons.

UI Migration (Redesign)

Overview

Since we have migrated to JavaFX, the plan is to move all our GUIs to this new technology. We will track all the redesign from this issue.

Redesigns

  • Welcome page
  • Login
  • Register
  • Navigation bar (Oihan)
  • Admin menu (Leire)
  • User menu (Pablo)
  • Browse events (Browse questions) [Oihan]
  • Create event (Pablo)
  • Create question (Aritz)
  • Create forecast (Aritz)

Whenever you pick a GUI to redesign, add your name next to the feature. When the redesign is finished, mark it as done!

User profile

As a user, I want to check my profile so I can see and modify my account information, such as:

  • Username
  • First name / Last name
  • Password
  • Email
  • Address
  • Avatar

Also, I want to be able to delete my account.

Place a bet

As a registered user I want to be able to place bets in a given question of a given event so I can use the money I have added to my account.

User dashboard

As a user, I would like to have my dashboard where I can perform the most common operations such as:

  • Betting
  • Check my money movements
  • Deposit money
  • Check/Remove my old bets
  • ...

Ban users

As an administrator I want to be able to ban users so I can punnish those users that are not playing legally and respectfully, the users that are winning too much can be also banned.

Cancel bet

As a user, I want to be able to cancel my bets and get my money back.

Delete questions

As an adiministrator I want to be able to delete questions, this way the events won't contain inappropriate questions

Create a new event

As an administrator I want to be able to create a new event so I can add questions to the event

Welcome (initial) window

As an anonymous user, I want to access the application from a welcome page. From there, I want to be able to see the events, and all the questions for each event. Also, I want to have an option to login or register.

Main menu (Administrator)

As an administrator, I want to access a menu as soon as I log in to use all the utilities of a normal user, in addition to being able to create events, questions and add results and fees to a given question.

Administrator dashboard

As an administrator I would like to have a dashboard from where to analyze the status of the application (users, bets, events...) and perform the most common administrator actions:

  • Obtain general information of the application (number of users, events, bets...)
  • Create/delete events/questions/forecasts
  • Ban users
  • Other administrator actions

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.