Skip to content
This repository was archived by the owner on Jun 20, 2026. It is now read-only.

Finalize GEM CYBER platform buildout#56

Merged
support371 merged 1 commit into
mainfrom
claude/analyze-test-coverage-9wv6Y
Mar 7, 2026
Merged

Finalize GEM CYBER platform buildout#56
support371 merged 1 commit into
mainfrom
claude/analyze-test-coverage-9wv6Y

Conversation

@support371

@support371 support371 commented Mar 7, 2026

Copy link
Copy Markdown
Owner

https://claude.ai/code/session_01SBUMqqQjy1X39Pwdg5oZmo


Open with Devin

Summary by Sourcery

Expand the GEM Cyber platform with new public-facing hub, community, assets, and admin experiences for security operations.

New Features:

  • Add a Security Assessments hub page showcasing assessment dashboard metrics, recent engagements, and services with a call-to-action for scheduling.
  • Introduce a Community Leadership page highlighting executive leadership and security operations teams with roles and credentials.
  • Add an Asset Governance page presenting risk-segmented asset metrics, governance policies, and compliance-focused capabilities with scheduling CTA.
  • Create a Community Membership page detailing membership tiers, benefits, and enrollment paths for GEM Cyber services.
  • Extend the admin navigation with links to Intel, Assets, Incidents, and Clients sections.
  • Implement an Admin Clients page summarizing client accounts, tiers, services, and health indicators.
  • Implement an Admin Assets page listing key digital, physical, and financial assets with value, risk, and compliance status.
  • Implement an Admin Incidents page surfacing recent security incidents, status, severity, and SLA metrics.
  • Implement an Admin Intel page aggregating threat intelligence feeds with severity and status tags and summary statistics.

@vercel

vercel Bot commented Mar 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
mymain-emterprise-website Ready Ready Preview Mar 7, 2026 1:46am

@support371
support371 marked this pull request as ready for review March 7, 2026 01:46
@support371
support371 merged commit 8b8995b into main Mar 7, 2026
15 of 19 checks passed
@sourcery-ai

sourcery-ai Bot commented Mar 7, 2026

Copy link
Copy Markdown

Reviewer's Guide

Builds out GEM Cyber marketing and admin surfaces by adding several new hub/community/assets marketing pages and extending the admin console with Intel, Assets, Incidents, and Clients dashboards, plus wiring those sections into the admin navigation.

Class diagram for new GEM Cyber marketing and admin pages

classDiagram
  class AssessmentsPage {
    +metadata
    +assessments Array
    +services Array
    +render_hero_section()
    +render_assessment_dashboard()
    +render_assessment_cards()
    +render_services_grid()
    +render_request_assessment_CTA()
  }

  class LeadershipPage {
    +metadata
    +leadership Array
    +securityTeam Array
    +render_hero_section()
    +render_leadership_team()
    +render_security_operations_team()
    +render_join_our_team_CTA()
  }

  class AssetGovernancePage {
    +metadata
    +policies Array
    +riskCategories Array
    +render_hero_section()
    +render_risk_summary_cards()
    +render_governance_policies()
    +render_features_grid()
    +render_governance_review_CTA()
  }

  class MembershipPage {
    +metadata
    +tiers Array
    +render_hero_section()
    +render_membership_tiers()
    +render_membership_stats()
    +render_contact_sales_CTA()
  }

  class AdminClientsPage {
    +metadata
    +clients Array
    +render_client_stats()
    +render_clients_table()
  }

  class AdminAssetsPage {
    +metadata
    +assets Array
    +render_asset_stats()
    +render_assets_table()
  }

  class AdminIncidentsPage {
    +metadata
    +incidents Array
    +render_incident_stats()
    +render_incident_list()
  }

  class AdminIntelPage {
    +metadata
    +feeds Array
    +render_intel_stats()
    +render_intel_list()
  }

  class AdminLayout {
    +baseNavItems Array
    +render_admin_shell()
  }

  AdminLayout --> AdminClientsPage
  AdminLayout --> AdminAssetsPage
  AdminLayout --> AdminIncidentsPage
  AdminLayout --> AdminIntelPage
Loading

Flow diagram for updated admin navigation and dashboards

flowchart LR
  AdminUser[Admin_user]
  AdminLayout[AdminLayout_nav]
  InboxPage[AdminInboxPage]
  IntelPage[AdminIntelPage]
  AssetsPage[AdminAssetsPage]
  IncidentsPage[AdminIncidentsPage]
  ClientsPage[AdminClientsPage]

  AdminUser --> AdminLayout
  AdminLayout --> InboxPage
  AdminLayout --> IntelPage
  AdminLayout --> AssetsPage
  AdminLayout --> IncidentsPage
  AdminLayout --> ClientsPage
Loading

File-Level Changes

Change Details Files
Extend the admin navigation and add new dashboard pages for Intel, Assets, Incidents, and Clients management.
  • Add new navigation entries for Intel, Assets, Incidents, and Clients in the admin layout nav configuration.
  • Implement an Intel dashboard showing threat feeds, severity/status chips, and high-level intel metrics.
  • Implement an Incidents dashboard listing recent incidents with severity, status, SLA, and summary metrics like MTTR/SLA compliance.
  • Implement an Asset Registry dashboard showing key assets with type, value, risk classification, location, and compliance plus top-line stats.
  • Implement a Client Management dashboard listing clients with tier, status, services, contacts, and basic health and summary stats.
src/app/admin/layout.tsx
src/app/admin/intel/page.tsx
src/app/admin/incidents/page.tsx
src/app/admin/assets/page.tsx
src/app/admin/clients/page.tsx
Add new public-facing hub/community pages for assessments, leadership, membership, and asset governance marketing.
  • Create a Security Assessments landing/dashboard page with static assessment data, findings badges, services grid, and CTA.
  • Create a Leadership page introducing leadership and security operations team members with bios and certifications.
  • Create a Membership page describing membership tiers, benefits, and calls to action, including a highlighted professional tier card.
  • Create an Asset Governance page outlining policies, risk categories, governance features, and a scheduling CTA.
src/app/(tabs)/hub/assessments/page.tsx
src/app/(tabs)/community/leadership/page.tsx
src/app/(tabs)/community/membership/page.tsx
src/app/(tabs)/assets/governance/page.tsx

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai 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.

Hey - I've found 2 issues, and left some high level feedback:

  • There’s a lot of repeated UI patterns (stats grids, severity/status pills, list cards) across the new pages; consider extracting reusable components (e.g., , , ) to reduce duplication and keep styles/logic consistent.
  • The various data structures (assets, incidents, feeds, policies, etc.) are currently implicit objects; defining shared TypeScript types/enums for things like severity, status, and tiers would help prevent typos and make future changes safer.
  • In the threat intel feeds map, you’re using the array index as the React key; prefer a stable unique field (e.g., source + title or an explicit id) to avoid potential rendering issues when the list changes.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- There’s a lot of repeated UI patterns (stats grids, severity/status pills, list cards) across the new pages; consider extracting reusable components (e.g., <StatCard>, <SeverityBadge>, <StatusTag>) to reduce duplication and keep styles/logic consistent.
- The various data structures (assets, incidents, feeds, policies, etc.) are currently implicit objects; defining shared TypeScript types/enums for things like severity, status, and tiers would help prevent typos and make future changes safer.
- In the threat intel feeds map, you’re using the array index as the React key; prefer a stable unique field (e.g., source + title or an explicit id) to avoid potential rendering issues when the list changes.

## Individual Comments

### Comment 1
<location path="src/app/admin/clients/page.tsx" line_range="21-22" />
<code_context>
+          <p className="text-sm text-slate-400">Managed digital, physical, and financial assets with risk classification.</p>
+        </div>
+      </div>
+      <div className="grid grid-cols-4 gap-4 mb-6">
+        {[
+          { label: 'Total Assets', value: '289', color: 'text-white' },
+          { label: 'Total Value', value: '$52.4M', color: 'text-cyan-400' },
</code_context>
<issue_to_address>
**suggestion:** The fixed 4-column stats grid may not degrade well on smaller screens.

`grid-cols-4` will keep four columns even on very small screens, likely making the stats unreadable on mobile. Consider responsive classes (e.g., `grid-cols-2 md:grid-cols-4`) so the layout adapts on smaller viewports.
</issue_to_address>

### Comment 2
<location path="src/app/admin/incidents/page.tsx" line_range="45-50" />
<code_context>
+                <td className="py-3 px-3 text-slate-400">{asset.type}</td>
+                <td className="py-3 px-3 text-cyan-400 font-mono">{asset.value}</td>
+                <td className="py-3 px-3">
+                  <span className={`text-xs font-bold px-2 py-0.5 rounded ${
+                    asset.risk === 'Critical' ? 'bg-red-500/20 text-red-400' :
+                    asset.risk === 'High' ? 'bg-orange-500/20 text-orange-400' :
</code_context>
<issue_to_address>
**suggestion:** Severity/status badge styling logic is duplicated across multiple pages.

Similar ternary chains for these badges appear across multiple admin and non-admin pages (incidents, intel, assets, assessments, etc.). Consider extracting a small reusable `Badge`/`StatusPill` component that maps a type and value to classes to reduce repetition and keep styling and logic consistent as requirements evolve.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment on lines +21 to +22
<div className="grid grid-cols-4 gap-4 mb-6">
{[

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

suggestion: The fixed 4-column stats grid may not degrade well on smaller screens.

grid-cols-4 will keep four columns even on very small screens, likely making the stats unreadable on mobile. Consider responsive classes (e.g., grid-cols-2 md:grid-cols-4) so the layout adapts on smaller viewports.

Comment on lines +45 to +50
<span className={`text-xs font-bold px-2 py-0.5 rounded ${
inc.severity === 'Critical' ? 'bg-red-500/20 text-red-400' :
inc.severity === 'High' ? 'bg-orange-500/20 text-orange-400' :
inc.severity === 'Medium' ? 'bg-yellow-500/20 text-yellow-400' :
'bg-slate-700 text-slate-400'
}`}>{inc.severity}</span>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

suggestion: Severity/status badge styling logic is duplicated across multiple pages.

Similar ternary chains for these badges appear across multiple admin and non-admin pages (incidents, intel, assets, assessments, etc.). Consider extracting a small reusable Badge/StatusPill component that maps a type and value to classes to reduce repetition and keep styling and logic consistent as requirements evolve.

@devin-ai-integration devin-ai-integration 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 4 additional findings.

Open in Devin Review

support371 added a commit that referenced this pull request Mar 8, 2026
Merge pull request #56 from support371/claude/analyze-test-coverage-9…
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants