Skip to content

gcharters/microprofile-conference

 
 

Repository files navigation

MicroProfile Showcase Application

General information

The application consists of several Microservices and a Web-Application managing a conference :

  • microservice-schedule : Schedule of the conference

  • microservice-session : Sessions of the conference

  • microservice-speaker : Speakers of the conference

  • microservice-vote : Votes for each session

  • web-application : Frontend Angular2 | Bootstrap4

The WebApp is a direct subscriber to the individual Microservices. This means that there is no aggregator / middle-man application. The WebApp itself provides a known relative EndPoint microservice that enables the lookup of URLs to the other services.

The sample is a version of the MicroProfile sample application, designed to run all the services on Open Liberty.

If you would like to participate in the MicroProfile community effort to advance EE then by all means feel free to join us on the following sites:

Microprofile.io - The community landing site.

Google+ Microprofile groups - Public discussion lists (We do not have private lists).

Kanban board - A nice Kanban integration for our GitHub issues.

All source code - Apache Licence V2 project OSS code.

Technologies

  • Java

  • MicroProfile

  • JAX-RS 2.0 / JSON-P 1.0 / CDI 1.1

Quickstart - Run all services and UI in separate runtimes

To run all the services on individual Open Liberty servers:

mvn clean package -P start

To view the Web application, open a browser at http://localhost:8080/

To build each service but not start the individual servers:

mvn package

To clean up the build, including stopping the individual servers:

mvn clean

Common problems/bugs

NPM issues

The web-application project uses the com.github.eirslett:frontend-maven-plugin to download and install all node and npm requirements. Sometimes this may fail if console permissions are not permissive enough.

In such cases you will have to manually install some reqiurements:

  1. Download and install node: https://nodejs.org/en/download/current/

  2. Install npm manually:

cd web-application/src/main/static
npm install npm
npm install typings --global
typings install --global

Original source

This samples is based of the MicroProfile Conference demo at:

Conference API specification

Introduction

The application consists of several Microservices and a Web-Application managing a conference.

Architecture

  • Session service. Manage session descriptions.

  • Session voting service. Vote for the your favorite session

  • Speaker service. Manage speakers, Bios, etc

  • Schedule Service. Service to manage session schedules

  • Front-end application

Speaker Service

Speaker
  - Id (generated)
  - Name
  - Title
  - Organization
  - Biography
  - Picture
  - Twitter handle
APIs
 Speaker add(Speaker)
 void remove(Id)
 Speaker update(Speaker)
 Speaker retrieve(Id)
 List<Speaker> retrieveAll()
 List<Speaker> search(Speaker)

Session Service

Session
  - Id (generated)
  - Code
  - Title
  - Abstract
  - Type (HOL/Session)
Session Speakers
  - Session Id
  - Speaker Id
APIs
  Session add(Session)
  Session update(Session)
  Session retrieve(Id)
  void remove(Id)
  List<Session> search(Session)
  List<Session> sessionsForSpeaker(Speaker Id)
  List<Session> speakersForSession(Session Id)

Session Schedule Service

Schedule
  - Id (generated)
  - Session Id
  - Venue
  - Date
  - Start Time
  - Duration
APIs
  Schedule add(Schedule)
  Schedule update(Schedule)
  Schedule retrieve(Id)
  void remove(Id)
  List<Schedule> allForVenue(venue)
  List<Schedule> activeAtTime(time)
  List<Schedule> allForDay(date)
  List<Schedule> all

Session Voting Service

Attendee
  - Id
  - Name
Session Rating
  - Id
  - Session Id
  - Attendee Id
  - Rating (1-10)
APIs
  Attendee registerAttendee(Attendee)
  Attendee updateAttendee(Attendee)
  SessionRating rateSession(SessionRating)
  SessionRating updateRating(SessionRating)
  List<SessionRating> allSessionVotes(Session Id)
  Double sessionRatingAverage(Session Id)
  List<SessionRating> votesByAttendee(Attendee Id)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 76.2%
  • TypeScript 11.8%
  • HTML 7.3%
  • JavaScript 4.6%
  • Ruby 0.1%