Skip to content

Update README.md#47

Merged
simonforsberg merged 10 commits into
mainfrom
feature/readme-update
Apr 28, 2026
Merged

Update README.md#47
simonforsberg merged 10 commits into
mainfrom
feature/readme-update

Conversation

@simonforsberg

@simonforsberg simonforsberg commented Apr 27, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • Documentation
    • Major README rewrite: detailed reporting workflows (anonymous/authenticated), ticket lifecycle and statuses, comment visibility and audit logging, full tech stack, JWT auth guidance, RBAC/access controls, CI/CD, architecture, DB/storage setup, and local MinIO instructions.
  • Configuration
    • Updated local MinIO/S3 access credentials in configuration.
  • Tests
    • Integration tests adjusted to remove CSRF handling from relevant POST requests.

…s, tech stack, and role-based access control documentation.
…feature descriptions, security details, ticket lifecycle, role-based access control, and demo setup instructions.
…tions, improved security details, detailed architecture insights, and demo setup updates.
@coderabbitai

coderabbitai Bot commented Apr 27, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The PR rewrites and expands README.md into full project documentation (auth, RBAC, JWT, MinIO, H2, CI/CD, ticket lifecycle, audit logging), updates MinIO credentials in application.properties, and removes CSRF usage from MockMvc calls in TicketControllerIT integration tests.

Changes

Cohort / File(s) Summary
Documentation
README.md
Full rewrite: detailed authentication (anonymous/authenticated), JWT behavior (cookie vs bearer, DB role reloads, JWT_SECRET), RBAC and endpoint/method protections, ticket lifecycle/statuses/assignments/comments, audit-logged actions, tech stack, CI/CD, architecture, H2 JDBC URL, and updated MinIO quick-start and curl examples.
Configuration
src/main/resources/application.properties
MinIO/S3 credentials changed from minio/minio123 to minioadmin/minioadmin. No other configuration edits. Review for environment consistency.
Integration tests
src/test/java/org/example/alfs/integration/TicketControllerIT.java
Removed CSRF helper usage and import; all .with(csrf()) calls deleted from MockMvc POST requests. Verify tests still align with security config changes.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~15 minutes

Possibly related PRs

Suggested reviewers

  • FionaSprinkles
  • addee1

Poem

🐇 In the burrow I hopped through README light,
Pages grown full in the hush of the night.
Tokens and tickets, a secure little song,
MinIO and H2 hum along—
Hooray for the patch, the docs feel right! ✨

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title is vague and overly generic—it states only 'Update README.md' without conveying the substantial nature of the changes, which include comprehensive documentation rewrite covering features, security, tech stack, architecture, RBAC, JWT authentication, and MinIO setup. Revise the title to reflect the main objective, such as 'Add comprehensive documentation for features, security, architecture, and setup' or 'Document security, RBAC, JWT auth, and MinIO configuration'.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/readme-update

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
README.md (2)

10-10: Minor: Consider hyphenating compound adjective.

The phrase "S3 compatible" should be hyphenated when used as a compound adjective: "S3-compatible storage."

📝 Suggested fix
-- **Secure Storage**: File attachments managed via MinIO/S3 compatible storage.
+- **Secure Storage**: File attachments managed via MinIO/S3-compatible storage.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` at line 10, The README contains the phrase "S3 compatible storage"
which should be hyphenated as a compound adjective; update the text (the line
containing "**Secure Storage**: File attachments managed via S3 compatible
storage.") to read "S3-compatible storage" so the compound adjective is
grammatically correct.

103-105: Optional: Vary sentence structure for better readability.

Three consecutive user flow items start with "Login at /login". Consider varying the phrasing for smoother reading.

✍️ Suggested improvement
 2. **As an Authenticated Reporter**: Login at `/login`, then go to `/tickets/my` to see and track your submitted reports.
-3. **As an Admin**: Login at `/login` (user: `admin`), then go to `/admin/tickets` to see all reports and assign them to investigators.
-4. **As an Investigator**: Login at `/login`, then check `/tickets/assigned` for cases assigned to you.
+3. **As an Admin**: After logging in with user `admin`, visit `/admin/tickets` to see all reports and assign them to investigators.
+4. **As an Investigator**: Once authenticated, check `/tickets/assigned` for cases assigned to you.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 103 - 105, The three role bullets repeatedly begin
with "Login at `/login`"; update the three lines for "As an Authenticated
Reporter", "As an Admin", and "As an Investigator" to vary sentence structure
while keeping the same routes and intent—e.g., use alternatives like "Sign in
via `/login`, then go to `/tickets/my`...", "Authenticate at `/login` (user:
`admin`), then visit `/admin/tickets`...", or "After signing in at `/login`,
check `/tickets/assigned`..."—ensuring `/login`, `/tickets/my`,
`/admin/tickets`, and `/tickets/assigned` remain referenced and the role names
stay unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@README.md`:
- Line 112: The README contains a duplicated word in the sentence "MinIO enables
S3-compatible storage without without requiring a cloud provider"; edit that
line (the README entry containing that phrase) to remove the duplicate so it
reads "MinIO enables S3-compatible storage without requiring a cloud provider"
(or rephrase similarly) to fix the typo.
- Around line 225-226: The README shows MinIO credentials as
`storage.s3.accessKey=minio` and `storage.s3.secretKey=minio123` which don't
match the hardcoded values in the app config; update the README entries to match
the actual keys used in the codebase by replacing those lines with
`storage.s3.accessKey=minioadmin` and `storage.s3.secretKey=minioadmin` so the
documented values align with the values in application.properties (the
storage.s3.accessKey and storage.s3.secretKey settings).

---

Nitpick comments:
In `@README.md`:
- Line 10: The README contains the phrase "S3 compatible storage" which should
be hyphenated as a compound adjective; update the text (the line containing
"**Secure Storage**: File attachments managed via S3 compatible storage.") to
read "S3-compatible storage" so the compound adjective is grammatically correct.
- Around line 103-105: The three role bullets repeatedly begin with "Login at
`/login`"; update the three lines for "As an Authenticated Reporter", "As an
Admin", and "As an Investigator" to vary sentence structure while keeping the
same routes and intent—e.g., use alternatives like "Sign in via `/login`, then
go to `/tickets/my`...", "Authenticate at `/login` (user: `admin`), then visit
`/admin/tickets`...", or "After signing in at `/login`, check
`/tickets/assigned`..."—ensuring `/login`, `/tickets/my`, `/admin/tickets`, and
`/tickets/assigned` remain referenced and the role names stay unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b0472108-4207-48fa-bacf-7c83e26b8c35

📥 Commits

Reviewing files that changed from the base of the PR and between fc2bb43 and 25dbca2.

📒 Files selected for processing (1)
  • README.md

Comment thread README.md Outdated
Comment thread README.md Outdated
…`README.md` to reflect CSRF protection changes.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
README.md (1)

164-173: Optional wording polish in JWT section.

Line 167 ("the system remains stateless by storing the JWT in a cookie") slightly conflates concepts — statelessness comes from not keeping server-side session state, not from where the token is stored. Consider rephrasing to: "Even though the UI is server-rendered, the backend remains stateless: no HTTP session is kept; the JWT is simply transported via a cookie for browser convenience and via the Authorization header for API clients."

Also worth confirming: Line 172 says production must set JWT_SECRET. This relies on Spring Boot's relaxed env-var binding (JWT_SECRETjwt.secret). That mapping is correct, but it may be worth noting it explicitly for newcomers, or documenting an alternative (-Djwt.secret=...).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 164 - 173, Update the JWT section wording to avoid
conflating statelessness with cookie storage: rephrase the sentence about
server-rendered UI to something like “Even though the UI is server-rendered, the
backend remains stateless: no HTTP session is kept; the JWT is simply
transported via a cookie for browser convenience and via the Authorization:
Bearer <token> header for API clients.” Also clarify the production secret
requirement by noting that the JWT_SECRET environment variable binds to Spring
property jwt.secret (or can be provided via JVM system property
-Djwt.secret=...), referencing the JWT, JWT_SECRET and jwt.secret names so
readers know the exact configuration keys to use.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@README.md`:
- Around line 164-173: Update the JWT section wording to avoid conflating
statelessness with cookie storage: rephrase the sentence about server-rendered
UI to something like “Even though the UI is server-rendered, the backend remains
stateless: no HTTP session is kept; the JWT is simply transported via a cookie
for browser convenience and via the Authorization: Bearer <token> header for API
clients.” Also clarify the production secret requirement by noting that the
JWT_SECRET environment variable binds to Spring property jwt.secret (or can be
provided via JVM system property -Djwt.secret=...), referencing the JWT,
JWT_SECRET and jwt.secret names so readers know the exact configuration keys to
use.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: fc570150-c845-48eb-951c-de5be1eeda4b

📥 Commits

Reviewing files that changed from the base of the PR and between 25dbca2 and d2d9836.

📒 Files selected for processing (3)
  • README.md
  • src/main/resources/application.properties
  • src/test/java/org/example/alfs/integration/TicketControllerIT.java
✅ Files skipped from review due to trivial changes (1)
  • src/main/resources/application.properties

@simonforsberg
simonforsberg merged commit e907240 into main Apr 28, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants