Project overview [OUTDATED]
Table of contents |
---|
Motivation
The “Online Membership System” (often referred to as OMS) is a project started in AEGEE in around 2006. Back then AEGEE wanted to get rid of an old intranet/infrastructure system used since 2000/2001 based on IBM Lotus. In 2008/2009 AEGEE bought the current version of the intranet (only internally called OMS) mainly based on CakePHP, MySQL, and LDAP.
This "first" version of the OMS is now out-of-date, both feature-wise and in regard of the technology it uses. From 2012 on AEGEE's IT compiled a list of features the old OMS was missing. The development of a new OMS ("MyAEGEE") started in 2015. This time the system will be developed by AEGEE internally, as we know much better what exactly we want and can maintain the system afterwards more easily.
More info on the history of the OMS can be found in the history section.
Project description
This project can be adapted by any kind of association that needs a quick and flexible way of managing its members. The project has a modular approach. Everyone can contribute to the existing modules (like core, event-management, user-management, fee-management) or create new modules or extensions to be used with the project.
Project architecture
The project is created on a microservice architecture style (Wikipedia - Microservices), meaning it is made of many different microservices ("modules" would be an everyday-speech representation). This is a very modern approach to serve web applications used by Netflix, Facebook, etc.
In our case each module has a specific area of tasks to serve, like events management, member management, a voting system, and many more. In our approach we use a central microservice called core (OMSCORE), handling the communication between all other microservices using well-defined Interfaces.
A big advantage of microservices is that their internals are completely independent from each other. Each service can be developed in a different programming language, running on a different webserver using a different database. Just the interfaces have to be compatible to each other - to be able to introduce new features easily we use versioning here, meaning that one microservice can handle request of differnent versions (e.g. current, old) of their API.
The reason why we chose this approach compared to other approaches is that it gives us the flexibility of choosing what technology we want to use with every microservice we are developing. By this we have more control and flexibility over what features we want our application to have.
Technologies used in current microservices
As explained in the previous section the backend is different for each microservice.
Currently, the frontend is based on Angular JS and a bootstrap theme named Color Admin v2.
For a more detailed breakdown on the technologies we use or recommend check here: Technologies
Technologies used in the core
The core microservice has its backend based on Laravel PHP framework due to its awesome features and extensions you can find for it. The database can be any kind of relational database but we recommend using PostgreSQL due to it's stability and advanced features.
For a more detailed breakdown on the core check the appropriate confluence space: OMSCORE
Tools used
Development environment
For the development environment we are using an environment based on vagrant + virtualbox. We created a container-based appliance that you can use as the development environment to check your changes live.
The repositories are hosted on github under the team AEGEE: https://github.com/AEGEE/
For the exact repository of each micro service, please check the confluence space for the microservice you are interested in.
Documentation and collaboration
For collaboration we use most of the Atlassian stack (Jira, Confluence). To get in touch with us, you can find us on Slack. In order to start helping, it's as easy as writing us in the chatroom and installing following the installation page link!
Installation
Follow the instruction at the installation page to get started.
Quick links
- Live preview of the new OMS (user: flaviu@glitch.ro, pass: 1234)
- Confluence (Our Wiki to organise knowledge, like this page which is part of it)
- JIRA (Issue tracking system, to request new features, report bugs, provide feedback)
- Slack (to talk to the main developers - if need an invitation find the link on the top left corner, three bars, "chat with developers")
- Github organisation (this is where all our program code is organised)
- Github repository: core (the main module of the new OMS)
- Github repository: events (the events module of the new OMS)
- Github repository: provisioner (a ready-to-use development environment with everything needed to run your own instance of OMS locally)