1515
1616### Backend
1717
18- - ** Language:** Java 11 (compatible up to Java 17)
18+ - ** Language:** Java 11
1919- ** Build System:** Gradle
2020- ** Key Dependencies:**
2121 - Gson 2.9.0 (JSON serialization/deserialization)
3535 - Vue 3
3636 - Vue Router
3737 - Vuex (State management)
38+ - Zod (Runtime schema validation for JSON report files)
3839 - ESLint and Stylelint (Linting)
3940 - Cypress (E2E testing)
4041 - Highlight.js (Code highlighting)
4142 - Markdown-it (Markdown parsing)
43+ - FontAwesome (Icons)
44+ - JSZip (ZIP archive handling)
45+ - Minimatch (Glob pattern matching)
4246
4347### DevOps & Documentation
4448
@@ -69,9 +73,11 @@ RepoSense/
6973│ │ ├── views/ # Page-level components
7074│ │ ├── router/ # Vue Router configuration
7175│ │ ├── store/ # Vuex store
72- │ │ ├── types/ # TypeScript types
76+ │ │ ├── types/ # TypeScript types (includes Zod schemas)
7377│ │ ├── utils/ # Utility functions
78+ │ │ ├── mixin/ # Vue mixins for shared logic
7479│ │ └── main.ts # Entry point
80+ │ ├── config-wizard/ # Standalone YAML configuration wizard app
7581│ ├── cypress/ # E2E tests
7682│ └── package.json
7783├── docs/
@@ -82,7 +88,13 @@ RepoSense/
8288│ ├── author-config.csv # Author configuration template
8389│ ├── repo-config.csv # Repository configuration template
8490│ ├── group-config.csv # Group configuration template
85- │ └── report-config.yaml # Report metadata
91+ │ ├── report-config.yaml # Report metadata
92+ │ ├── author-blurbs.md # Per-author blurb descriptions
93+ │ ├── repo-blurbs.md # Per-repo blurb descriptions
94+ │ ├── chart-blurbs.md # Per-chart blurb descriptions
95+ │ ├── checks/ # CI check scripts
96+ │ ├── checkstyle/ # Checkstyle configuration
97+ │ └── gh-actions/ # GitHub Actions helper scripts
8698├── build.gradle # Gradle build configuration
8799└── .github/ # GitHub workflows and templates
88100```
@@ -98,7 +110,10 @@ RepoSense follows a modular architecture with clear separation of concerns:
98110 - ` ArgsParser ` : Parses CLI arguments into ` CliArguments ` object
99111 - ` CsvParser ` : Abstract parser for CSV configuration files (author, group, repo configs)
100112 - ` JsonParser ` : Abstract parser for JSON configuration files
113+ - ` YamlParser ` : Abstract parser for YAML configuration files
101114 - ` StandaloneConfigJsonParser ` : Parses ` _reposense/config.json `
115+ - ` ReportConfigYamlParser ` : Parses ` report-config.yaml `
116+ - ` BlurbMarkdownParser ` and subtypes (` AuthorBlurbMarkdownParser ` , ` RepoBlurbMarkdownParser ` , ` ChartBlurbMarkdownParser ` ): Parse blurb Markdown files
102117
1031182 . ** Git Layer** (` git/ ` package)
104119
@@ -211,6 +226,7 @@ RepoSense follows a modular architecture with clear separation of concerns:
211226./gradlew test # Unit tests
212227./gradlew systemtest # System tests
213228./gradlew test systemtest # Both
229+ ./gradlew testFrontend # Run Cypress E2E frontend tests (headless)
214230```
215231
216232** Code Quality:**
@@ -241,8 +257,11 @@ npm run lintfix # Auto-fix frontend lint errors (in frontend/)
241257** Testing Frontend:**
242258
243259``` bash
244- # Run E2E tests with Cypress
245- ./gradlew frontendTest
260+ # Run E2E tests with Cypress (headless)
261+ ./gradlew testFrontend
262+
263+ # Run Cypress GUI (headed browser)
264+ ./gradlew cypress
246265
247266# Write tests in: frontend/cypress/tests/
248267# Support file: frontend/cypress/support.js
@@ -282,6 +301,9 @@ When generating code, ensure:
282301- ` CliArguments ` : Parsed command-line arguments
283302- ` RepoConfiguration ` : Per-repository analysis configuration
284303- ` FileTypeManager ` : File formats and custom groups
304+ - ` BlurbMap ` and subtypes (` AuthorBlurbMap ` , ` RepoBlurbMap ` , ` ChartBlurbMap ` ): Maps of blurb descriptions
305+ - ` RunConfiguration ` / ` CliRunConfiguration ` / ` ConfigRunConfiguration ` : Run configuration hierarchy
306+ - ` reportconfig/ ` : Sub-package for report configuration models (` ReportConfiguration ` , ` ReportRepoConfiguration ` , etc.)
285307
286308** Commits Analysis** (` reposense/commits/ ` )
287309
@@ -313,23 +335,26 @@ When generating code, ensure:
313335
314336** Key Directories:**
315337
316- - ` components/ ` : Reusable UI components (c-ramp, c-segment, etc.)
317- - ` views/ ` : Page-level components (c-home, c-widget, c-summary, c-authorship, c-zoom)
338+ - ` components/ ` : Reusable UI components (c-ramp, c-segment, c-summary-charts, c-file-type-checkboxes, etc.)
339+ - ` views/ ` : Page-level components (c-home, c-widget, c-summary, c-summary-portfolio, c- authorship, c-zoom, c-global-file-browser )
318340- ` router/ ` : Vue Router configuration
319341- ` store/ ` : Vuex state management (accessed via ` window.REPOS ` )
320- - ` types/ ` : TypeScript interfaces and types
342+ - ` types/ ` : TypeScript interfaces, types, and Zod schemas (under ` types/zod/ ` )
321343- ` utils/ ` : Utility functions including ` api.ts ` (data loader)
322344- ` mixin/ ` : Vue mixins for shared logic
345+ - ` ../config-wizard/ ` : Separate standalone app for generating YAML configuration files
323346
324347** Core Files:**
325348
326349- ` main.ts ` : Sets up plugins and 3rd party components
327350- ` app.vue ` : Renders ` router-view ` , main application entry point
328- - ` api.ts ` : Loads and parses JSON report files (summary.json, commits.json, authorship.json)
351+ - ` api.ts ` : Loads and parses JSON report files (summary.json, commits.json, authorship.json) with Zod schema validation
329352- ` c-home.vue ` : Renders main report (resizer, summary, authorship, zoom)
330353- ` c-summary.vue ` : Loads ramp charts from commits.json
354+ - ` c-summary-portfolio.vue ` : Portfolio mode variant of summary view
331355- ` c-authorship.vue ` : Displays file-level authorship from authorship.json
332356- ` c-zoom.vue ` : Filters and displays commits from selected ramp range
357+ - ` c-global-file-browser.vue ` : Global search panel for browsing files across repos
333358
334359** Frontend Data Flow:**
335360
@@ -345,7 +370,7 @@ When generating code, ensure:
345370** CSV Configuration Files** (in ` config/ ` by default):
346371
347372- ` author-config.csv ` : Maps git emails to author names and display names
348- - ` repo-config.csv ` : Specifies repositories to analyze, branches, date ranges
373+ - ` repo-config.csv ` : Specifies repositories to analyze, branches, date ranges (supports datetime for ` since ` / ` until ` )
349374- ` group-config.csv ` : Groups files by custom categories
350375
351376** JSON Configuration** (` _reposense/config.json ` ):
@@ -356,9 +381,20 @@ When generating code, ensure:
356381
357382** Report Configuration** (` report-config.yaml ` ):
358383
359- - Report title and metadata
384+ - Report title, metadata, and per-repo time period overrides
360385- Standalone configuration
361386
387+ ** Blurb Files** (Markdown, optional):
388+
389+ - ` author-blurbs.md ` : Custom descriptions shown per author
390+ - ` repo-blurbs.md ` : Custom descriptions shown per repository
391+ - ` chart-blurbs.md ` : Custom descriptions shown per chart
392+
393+ ** YAML Configuration Wizard** (` frontend/config-wizard/ ` ):
394+
395+ - Standalone web app for interactively generating ` report-config.yaml `
396+ - Built separately with Vite, served via ` npm run serveConfigWizard `
397+
362398### Multi-threading
363399
364400- ** Cloning:** Default 4 threads (configurable with ` --cloning-threads ` )
@@ -493,7 +529,7 @@ Refer to these essential developer guides located in `docs/dg/`:
493529- Use JUnit 5 (Jupiter API) with appropriate assertions and parametrized tests
494530- Mock external Git operations in unit tests to avoid slow I/O
495531- All tests run via GitHub Actions CI/CD on Ubuntu, macOS, and Windows
496- - Frontend tests run on separate Cypress job for parallel execution
532+ - Frontend tests run on separate Cypress job for parallel execution ( ` gradlew testFrontend ` )
497533
498534## Implementation Patterns by Component
499535
@@ -563,7 +599,9 @@ CommitContributionSummary summary = aggregator.aggregate(results);
563599
564600- ** Integration (` integration.yml ` ):** Runs unit tests, system tests, and frontend tests on JDK 11 (Ubuntu/macOS/Windows)
565601- ** Frontend Tests (` cypress ` ):** Separate Cypress job for parallel E2E test execution
566- - ** Surge.sh Previews:** Automatically deploys report and docs previews for pull requests
602+ - ** Surge.sh Pending Build (` pending.yml ` ):** Collects PR info and marks previews as pending
603+ - ** Surge.sh Build Preview (` surge.yml ` ):** Deploys report and docs previews for pull requests
604+ - ** Clear Deployments (` delete-deploy.yml ` ):** Clears GitHub environments and posts preview links after PRs close
567605- ** GitHub Pages (` gh-pages.yml ` ):** Auto-deploys MarkBind docs to GitHub Pages on master commits
568606- ** Stale PRs (` stale.yml ` ):** Auto-closes inactive pull requests
569607
@@ -578,7 +616,7 @@ CommitContributionSummary summary = aggregator.aggregate(results);
5786162 . ** Testing:**
579617
580618 - ` gradlew test systemtest ` - All backend tests must pass
581- - ` gradlew frontendTest ` - Frontend tests must pass
619+ - ` gradlew testFrontend ` - Frontend tests must pass
582620 - Coverage tracked via Codecov
583621
5846223 . ** Build Validation:**
@@ -622,5 +660,5 @@ For critical bugs found in production:
622660
623661---
624662
625- ** Last Updated:** January 2025
663+ ** Last Updated:** April 2026
626664** Project:** RepoSense - Contribution Analysis Tool
0 commit comments