**Lighning Talks App ** is composed of three layers:
-
Client: UI made using Angular
-
Server: Service Api exposed over http REST made using Spring Boot
-
Database: PostgreSQL
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.
-
Install docker, docker-compose and git
-
Clone this repo:
git clone https://github.com/lee-gilbert/lightning.git
cd lightning/
-
For Java Backend, Run:
docker-compose -p lightning up -d
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.
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.
-
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.
- 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.