Skip to content

javamodules/javamodules.dev


Java Modules


javamodules.dev

Modular Java Push OpenSSF Best Practices Quality Gate Status OpenSSF Scorecard

This repository provides the web code for the javamodules.dev website and app. More coming soon.

About the App

The Java Modules site is a web-based application which performs the following functions:

  • Basic UI and components
  • Allows browsing the artifacts provided by the JPMS Attic repository
  • Allows browsing Maven artifacts with enhanced metadata indicators
    • Bytecode target for an artifact (minimum and maximum, as applicable)
    • MRJAR functionality, as applicable
    • Automatic module detection
    • Pure module detection
    • Minimum version for automatic module use
    • Minimum version for pure module use
  • Dependency security indicators
    • GPG signatures
    • Fingerprints (MD5, SHA1, SHA256, SHA512)
    • SLSA provenance
    • SBOMs
    • Sigstore signing
    • OVD/OWASP cross-check
    • Last update
    • Last commit
  • Indexed module contents
    • Module identity and top-level open state
    • Exported and opened packages
    • Service Loader usages and provides
  • Reach goals
    • Extended project health metrics
    • Builder: Maven Dependencies
    • Builder: Version Catalog
    • Builder: Gradle Platform

Architecture

The site is structured as a Remix app on Cloudflare Pages. APIs are defined via Buf and interact with Buf Connect. On the backend: structured data is stored in D1, unstructured data in R2, and usage analytics in Analytics Engine. Search is done via Algolia.

On the tooling side: TypeScript, PNPM, Bun, and Wrangler. Vite and esbuild do the actual building (with PostCSS), all wrapped in Turbo.

As for UI: Tailwind, React, and shadcn. Frontend testing happens with Jest, Storybook, and Chromatic.

Backend logic is composed of internal services which run on Workers. Services either communicate as bound services or via queues.

Data Sources

This app makes extensive use of open APIs and data sources to materialize the underlying data. These include:

  • deps.dev The Deps.dev API is used to query information about dependencies, their dependents, and to obtain provenance data.

  • GitHub API The GitHub API and accompanying BigQuery dataset are consulted to fetch commit and information and to query for module-info.java files.

Workers

Coming soon.