Open Registry of Game Information 

  • Developer's diary

  • All things about Java, JavaScript, HTML, Git, whatever is useful for developers.
All things about Java, JavaScript, HTML, Git, whatever is useful for developers.

Moderators: MZ per X, gene

 #38309  by gene
 27 Oct 2015, 21:23
Summer is over! 8)

I finished the integration of Liquibase some time ago, so we are now ready for the easy expansions of our data model and the corresponding expansion of the database tables.

So what's up next in development? Good question!

I am constantly monitoring the ongoing development of AngularJS Version 2. This will be a complete new Software in comparison to Angular JS V1, which we are using in our Client application up to now. Angular 2 is not finished yet, but it looks like it might be easier to develop a professional client side app with V2 in the long term (so it fits for us I think :-) ).

On the server side there is a new Version of Dropwizard coming (0.9). This includes some changes in authentication, which I must integrate to get it working.

I am also looking more into Docker. Docker is an impressive (relatively) new software for virtualization of Software. It can be very helpful during the development and deployment of software products.

So you may have guessed it: stay tuned ... :D
 #38372  by gene
 07 Sep 2016, 20:33
Wow, no new posts in this thread for nearly one year! :shock:

During the last year I worked on some major changes in our software architecture. Up to now I was using Dropwizard on the server side and AnguarJS on the client side, and my architecture was that of a Single Page App with a REST backend:
Image

As I wrote in this blog post, I began to think if this is the right way to implement our game database. Read the blog post for more details.
Two other things I got more and more excited about are "Mobile First" and "Progressive Enhancement" (read about it [urlhttp://bradfrost.com/blog/web/mobile-first-responsive-web-design/]here[/url]).
But how should I apply these concepts perfectly with a Single Page App? That gave me some headaches.

As mentioned in the blog post above, I was monitoring the Spring Boot project for some time.
Meanwhile the company I am working for published some work on their analysis about the future client architecture that should be used for their internal software.

All in all I decided to turn around with our software architecture: use Spring Boot instead of Dropwizard and create a mobile first ROCA application instead of a Single Page App.

But wait! This will not be a simple migration for another reason:
During my summer holidays I finally managed to get my hand on a book about Domain Driven Design. And what shall I say? I MUST USE IT! :D It has so many things that match my own thoughts so far, so that I am currently going deeper into this topic. I will try to use the concepts behind DDD as soon as possible, and that will lead to a major rework of our data model. I started with the rework here.

Much technical stuff! 8)

But there is already something you can have a look at!
For the developers: take a look at the new Github repository which uses Spring Boot, Thymeleaf and is build with mobile first in mind
For the users: pick up your smartphone (ok, your computer does the job, too) and go to http://dev.oregami.org . There you can see the new prototype in action.

Any opinions about this? :)
 #38380  by gene
 30 Oct 2016, 13:40
Another update from me:

I have continued reading more stuff about Domain Driven Design, CQRS, Event Sourcing, Hexagonal Architecture.

While I don't have the time to write down my insights here now, I suggest the interested reader should have a look at this presentation called "Agile, Architecture, DDD and CQRS".
Much great stuff in there!
 #38405  by gene
 05 Mar 2017, 11:56
I finally had some time to continue with the development of our new prototype, which is based on the prinziples of:
  • Domain Driven Design
  • CQRS
  • Event Sourcing
This means in short:

Domain Driven Design
  • split the domain model in multiple, managable pieces (called "Bounded Contexts" = BC)
  • updates are only allowed for a single BC in one transaction
  • references to other "Aggregates" (entities in a boundes context) are only allowed to the "Aggregate root"
CQRS
  • strictly seperate the conceptual model in two parts: the write model and the read model
  • definition of CQRS can be read here
Event Sourcing
  • "Capture all changes to an application state as a sequence of events."
  • read a definition here

The new prototype source code is available here on github.
It can be seen in action here on dev.oregami.org

I'm very excited! This feels so right in many aspects.
More on that perhaps in a new blog post. I might work out the new prototype a bit more before that.
 #38436  by gene
 25 Jun 2017, 08:51
One very important aspect of our Oregami web application is user authentication and authorization.
What we absolutely need is:
  • user registration
  • login/logout feature
  • allow access to certain pages only for registered users
  • allow certain functions only for special users ("mods")
Two years ago I thought I could implement all this myself. But over time it became clear to me that this is not what I should do.
These functionalities are very crucial on the one hand, but they do not belong to our domain (games), so we better look for a piece of software that does this for us.

And I think now I had success: I found keycloak, which is in short:
Keycloak is an open source Identity and Access Management solution aimed at modern applications and services. It makes it easy to secure applications and services with little to no code.
That is exactly what we need.
Here are some features that look very promising:
  • Single-Sign On and Single-Sign Out for browser applications.
  • Social Login - Enable login with Google, GitHub, Facebook, Twitter, and other social networks.
  • Admin Console for central management of users, roles, role mappings, clients and configuration.+
  • Account Management console that allows users to centrally manage their account.
  • Theme support - Customize all user facing pages to integrate with your applications and branding.
Full list can be seen here.

Technically all you have to do is to download the standalone keycloak server, configure it and use it from your web application.
I also integrates nicely with spring security.

Very very promising!
  • 1
  • 5
  • 6
  • 7
  • 8
  • 9