Giter VIP home page Giter VIP logo

ebet2's Introduction

ebet2

Summary

Ebet2 is a web application which allows you to make safe bets on matches.

Current features:

  • Create leagues and add matches to them.
  • Make, update, delete bets on matches.
  • Automatically update user's score when match result is set.
  • Download matches info from external source.
  • Create user module to register users.
  • API security (JWT tokens)
  • Scheduler to leagues auto-update

Under development:

  • Remove spring

Planned features:

  • CQRS

Frameworks and libraries

  • spring boot, data
  • unirest
  • vavr
  • lombok
  • JOOQ
  • JWT

Postgesql as database

Architecture details

Application is divided into independent modules. All modules are hidden by package-scope and provide facade with operations which other modules can use. When a module requires some other module, he must use his facade. If needed module takes care of IO (database, endpoints) on it own, it doesn't inform world e.g. which database it is using.

Each domain part of the modules is written in pure java. I'm trying to remove dependencies to infrastructure using e.g. repository pattern. This approach allows me to provide different implementation in configuration class. For example: during a test I use 'in memory' version of all modules, without IO, so I don't have to use Mockito to mock database because I provide HashMap-based repository implementation. This is generally faster.

A big advantage of this kind of separation is a possibility to take some module and turn them into micro-service (I heard that it's fashionable).

Modules:

  • League

Provides operation to create, delete etc. operations on leagues and matches.

  • Bet

Provides possibilities to make, update etc. bets on matches.

  • Points

Handle calculating users score in each league.

  • Results

Register future matches into result fetching scheduler.

  • External

Importing data from external source.

  • Users

Register and login users.

Spring

I try to avoid using spring 'magic'. Why? To find another way to build application then @Component and @Autowired. Currently I use spring to put together modules as beans but I believe I could use ratpack and jooq as well.

ebet2's People

Contributors

krasnoludkolo avatar kacperdev avatar

Stargazers

maxpri avatar Susobhan Das avatar  avatar Marcin Chrapkowicz avatar Kevin Segal avatar  avatar Maciej Moscicki avatar

Watchers

James Cloos avatar Hubert avatar  avatar Marcin Chrapkowicz avatar

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.