Skip to content

lee-gilbert/lightning

Repository files navigation

LightningTalks Demo:

UI Stack

Angular version AngularMaterial version Typescript version Rxjs version jasmine

Backend

Java Spring Boot Spring Spring Security lombok JPA Hibernate PostgreSQL Liquibase log4j2 junit

DevOps & Analytics

Docker ElasticSearch Logstash Kibana

Build Tooling

Maven Npm

**Lighning Talks App ** is composed of three layers:

The App runs inside Docker containers, linked together with Docker Compose. As Analytics framework, the Elastic Stack has been used by sending data of interest to Elastic Search, through Logstash, and querying and analyzing it with Kibana.

Setup With Docker

Linux:

  1. Install docker, docker-compose and git

  2. Clone this repo:

    git clone https://github.com/lee-gilbert/lightning.git 
    cd lightning/

  3. For Java Backend, Run:

    docker-compose -p lightning up -d 

Dev-Mode: Running the Angular UI App

1a) App can be run from command line (Note: node v11 must be installed first.):

cmd> cd ui
Run cmd> npm install to update packages.
Run cmd> ng serve to start a dev server. Navigate to http://localhost:4200/

The UI requires the backend also to be started. Optionally: Follow instructons in .\ltk\readme.md to run in dev without docker locally.

What this App Demo Does

Supports creation of Talk TopicProposals via a Angular Material UI. These can be saved/edited then submitted for Approval. Up to 3 talks can be approved for the next scheduled session which by default occurs on the 1st tuesday of even months. Approved Talk Submissions are then associated with a ScheduledSession object.

Design considerations for use

  • When a new Proposal is created, workflow ensures it must be saved first before it can be submitted for peer review (where it may be selected for a Talk session.) This is intended to avoid hasty submission during edit, and allows the user to revise it before submitting, without having to leave the editor 'open'.

  • A Submitted proposal automatically acquires the next available valid presentation date, without the user having to enter it. (A date selector could be provided if required.)

  • When a Proposal is submitted for talk consideration, the submission is tracked by the serverside-backend as a seperate object. The original Proposal object also remains available for view/edit, until it is deleted. (Retaining the original proposal is an enabler to allow possible incremental new feature support e.g. a revised proposal re-submit for a different presentation date. )

  • Field input data Validation is implemented both on the UI and backend.

  • Development caveats

    • Build env profiles for dev & prod have not yet been implemented.
    • The Table page size of 5 rows was set to make testing easier during dev.
    • The backend currently inserts some data for testing.

Todos

  • Add Security: OAuth2 SSO, JWT & user account registry, and a 'talk approver' group.
  • Add ui view table support for filtering by session date (currently the date selector has no filter logic behind it.)
  • Add ui view table column sort & topic search
  • Make use of Springs Result Paging API (for large results).
  • Migrate to Spring Reactive Flux/Mono Based Restful services.
  • Expand UI test suites to include services mock.
  • DB Race condition detection.
  • Support Kubernaties Cluster Deployment.
  • Migrate to Serverless Stack.
    • Use Secrets Store e.g. Hashicorp Vault.
    • Use Spring Session persistance e.g. Redis.
  • Multilingual support.