NotiLytics is a full-stack reactive web application built with the Play Framework that provides real-time analysis of news articles from the News API. The application leverages modern reactive programming paradigms to deliver live updates and comprehensive analytics.
- Live Article Streaming: Real-time WebSocket-based updates for incoming news articles
- Sentiment Analysis: Automatic detection of article sentiment (happy, sad, or neutral)
- Readability Metrics: Flesch-Kincaid Grade Level and Flesch Reading Ease Score calculations
- Word Statistics: Frequency analysis of unique words across article collections
- Source Profiling: Detailed information and article history for news sources
- Asynchronous Programming: Non-blocking operations using Java CompletableFutures
- Actor-Based Concurrency: Pekko Actors for scalable, concurrent processing
- Reactive Server-Push: WebSocket implementation for real-time client updates
- Comprehensive Testing: 100% code coverage with JUnit and Pekko TestKit
- CI/CD Integration: Automated build validation and testing workflow
- MVC Architecture: Clean separation of concerns following the Model-View-Controller pattern
-
Dara Cunningham: Word Stats
-
Nattamon Paiboon: Source website profile
-
Siming Yi: Article Sentiment
-
Luan Tran: Description Readability
The sunburst is a coverage map of the repo:
- Rings = folder depth (center = repo ⟶ outer rings = packages/files).
- Slice size = code size (lines/instructions in that folder/file).
- Color = coverage (green = high, yellow/orange = moderate, red = low).
- In command line, execute:
sbt run
- Go to
localhost:9000
- Type in search and select sorting
- A list of 10 articles is given for that search query including readability metrics and sentiment.
- The readability metrics were calculated using an in-house function with simple heuristics for counting syllables, words and sentences. Another 3rd party OSS was used as reference for accuracy.
- The sentiment was calculated using lists of happy and sad words and calculating the ratios for each article.
- Possible actions:
- View Source Page Information
- View stats for article
To run tests with coverage and generate javadoc, open the command line in root directory and run:
sbt clean jacoco doc
Since this repository is private, Javadoc and test reports are stored as GitHub Actions artifacts.
- Click the Actions tab at the top of this repository.
OR
Click the CI badge at the top.
Figure 9 — Accessing workflow via CI badge.- Choose the latest run for
main.
- Open the JUnit Test Results tab
- View JUnit test results
- Scroll to the bottom of the Artifacts section in the *Actions Summary tab
-
Download the artifact named
jacoco-html -
Unzip and open
index.htmlin your browser.
OR
- Click on the Codecov coverage badge
- View the codecov dashboard
-
Scroll to the bottom of the Artifacts section in the *Actions Summary tab
-
Download the artifact named
javadoc* -
Unzip and open
index.htmlin your browser.


















