Skip to content

Reactive news analytics platform with real-time article streaming, sentiment analysis, and readability metrics. Built with Play Framework, Pekko Actors, and WebSockets. Includes CI/CD workflow.

Notifications You must be signed in to change notification settings

luantran/Notilytics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Notilytics (by DNSL)

CI

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.

Application Demo
Application Demo

Key Features

  • 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

Reactive Functionality
Reactive functionality

Technical Highlights

  • 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

codecov

Team Members:

  • Dara Cunningham: Word Stats

  • Nattamon Paiboon: Source website profile

  • Siming Yi: Article Sentiment

  • Luan Tran: Description Readability

Coverage Visualization

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).

Coverage Sunburst

How to use

  1. In command line, execute:
 sbt run
  1. Go to localhost:9000

Homepage screenshot

Figure 1 — Notilytics Homepage
  1. Type in search and select sorting

Search query screenshot

Figure 2 — Entering a search query & selecting sorting.
  1. 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.

Search results screenshot

Figure 3 — Search results (list of articles) with readability and sentiment scores.
  1. Possible actions:
    • View Source Page Information

Source page button screenshot

Figure 4 — Button to view the original source page.

Source page info screenshot

Figure 5 — Source page information view.
  • View stats for article

Stats button screenshot

Figure 6 — Button to open article word statistics.

Word statistics screenshot

Figure 7 — Word frequency & distribution statistics for the selected article.

How to run tests with Jacoco and generate Javadoc (locally)

To run tests with coverage and generate javadoc, open the command line in root directory and run:

sbt clean jacoco doc

How to view Test Results, Coverage and Javadoc (in Github)

Since this repository is private, Javadoc and test reports are stored as GitHub Actions artifacts.

Steps to View the JUnit tests results in Github

  1. Click the Actions tab at the top of this repository.

GitHub Actions tab in repository

Figure 8 — Opening GitHub Actions.

OR

Click the CI badge at the top.

CI badge linking to Actions workflow

Figure 9 — Accessing workflow via CI badge.
  1. Choose the latest run for main.

Selecting latest workflow run

Figure 10 — Choosing the latest CI run.
  1. Open the JUnit Test Results tab

JUnit Test Results tab in Actions

Figure 11 — Viewing JUnit Test Results.
  1. View JUnit test results

JUnit results summary

Figure 12 — JUnit result summary view.

How to view Jacoco Coverage

  1. Scroll to the bottom of the Artifacts section in the *Actions Summary tab

Artifacts list in GitHub Actions

Figure 13 — Locating build artifacts.
  1. Download the artifact named jacoco-html

  2. Unzip and open index.html in your browser.

Jacoco HTML report example

Figure 14 — JaCoCo coverage report.

OR

  1. Click on the Codecov coverage badge

Codecov badge linking to dashboard

Figure 15 — Access coverage through Codecov.
  1. View the codecov dashboard

Codecov UI showing repository coverage

Figure 16 — Codecov dashboard coverage visualization.

How to view Javadoc

  1. Scroll to the bottom of the Artifacts section in the *Actions Summary tab

  2. Download the artifact named javadoc*

  3. Unzip and open index.html in your browser.

Javadoc documentation homepage

Figure 17 — Javadoc documentation page.

About

Reactive news analytics platform with real-time article streaming, sentiment analysis, and readability metrics. Built with Play Framework, Pekko Actors, and WebSockets. Includes CI/CD workflow.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •