feat: add ereputation - #343

Merged
coodos merged 3 commits into
mainfrom
feat/add-erep
Oct 24, 2025
Merged

feat: add ereputation#343
coodos merged 3 commits into
mainfrom
feat/add-erep

Conversation

@sosweetham

@sosweethamsosweetham commented Sep 2, 2025

Copy link
Copy Markdown
Member

Description of change

adds basic frontend and backend code for ereputation

Issue Number

n/a

Type of change

  • New (a change which implements a new feature)

How the change has been tested

n/a

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features
    • Added complete authentication system with email/password login and registration
    • Introduced reputation calculation engine for self and peer evaluation
    • Built reference management system with file attachments and digital signatures
    • Created activity tracking dashboard with real-time updates
    • Added search functionality for users, groups, and platforms
    • Implemented reputation scoring with confidence metrics and historical tracking
    • Enabled reference revocation and status management

@coderabbitai

coderabbitaiBot commented Sep 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

New eReputation platform implementation adding a complete full-stack application with React/TypeScript frontend, Node.js/Express backend, TypeORM database integration, comprehensive UI component library, authentication system, reputation calculation service, and reference management with digital signatures and file uploads.

Changes

Cohort / File(s)Summary
Frontend UI Components
client/src/components/ui/{accordion,alert,alert-dialog,aspect-ratio,avatar,badge,breadcrumb,button,calendar,card,carousel,chart,checkbox,collapsible,command,context-menu,dialog,drawer,dropdown-menu,file-upload,form,hover-card,input-otp,input,label,menubar,navigation-menu,pagination,popover,progress,radio-group,resizable,scroll-area,select,separator,sheet,sidebar,skeleton,slider,switch,table,tabs,textarea,toast,toaster,toggle-group,toggle,tooltip}.tsx
Comprehensive shadcn/ui-style component library (50+ components) providing accessibility-focused UI primitives built on Radix UI and Tailwind CSS, supporting variants, forwarded refs, and consistent styling patterns.
Authentication Pages & Modals
client/src/pages/auth-page.tsx, client/src/pages/landing.tsx
Authentication and landing pages with login/registration forms, email-password flows, and styled branding interface.
Reputation & Reference Features
client/src/components/modals/{other-calculation-modal,self-calculation-modal,view-reputation-modal}.tsx
client/src/pages/{dashboard,references}.tsx
Core feature pages and modals for self/other reputation calculations, reference viewing, dashboard analytics with activity feeds, and reference management workflows with digital signatures.
Reference Management
client/src/components/modals/{reference-modal,reference-view-modal}.tsx
Reference submission and viewing modals with target type selection, content validation, file attachments, and digital signature display.
Client Hooks & Utilities
client/src/hooks/{use-mobile,use-toast,useAuth}.ts
client/src/lib/{authUtils,queryClient,utils}.ts
Custom React hooks for authentication state, toast notifications, mobile detection; utility functions for API requests, class name merging, and error handling.
Frontend Configuration & Setup
client/index.html, client/src/{main,App,index.css}.tsx
vite.config.ts, tailwind.config.ts, postcss.config.js, tsconfig.json, components.json
React entry point, root app component with routing guards, Tailwind color tokens and animations, Vite bundling, TypeScript configuration, and shadcn UI tooling setup.
Backend Authentication
server/auth.ts, server/replitAuth.ts
Email/password session-based authentication with bcrypt hashing and PostgreSQL session store; alternative Replit OpenID Connect auth with multi-domain support and token refresh.
Backend Core Services
server/services/{reputation,openai}.ts
server/storage.ts, server/typeorm-db.ts
ReputationService for calculation orchestration and activity history; OpenAI integration for analysis; DatabaseStorage interface with TypeORM repository abstractions.
Backend API Routes & Server
server/{routes,vite,index}.ts
HTTP route definitions for reputation calculations, references, file uploads, search, and dashboard endpoints; Vite dev server integration and Express middleware setup.
Database & ORM
server/{typeorm.config,migrate-data}.ts
shared/entities.ts, shared/schema.ts, shared/schema-backup.ts
TypeORM DataSource configuration with PostgreSQL; entity definitions (User, ReputationCalculation, Reference, FileUpload, Session); Drizzle schema backup with insert validators.
Database Setup
server/db.ts, drizzle.config.ts
Neon serverless pool configuration with WebSocket support; Drizzle Kit migration settings targeting PostgreSQL.
Project Configuration
package.json, .gitignore, README.md
Root package metadata with scripts, dependencies, devDependencies; build artifact and IDE ignore patterns; comprehensive platform documentation with architecture and migration notes.

Sequence Diagram(s)

sequenceDiagram
actor User
participant Client as React Client
participant Auth as Auth Route
participant DB as Database
participant Reputation as Reputation Service
User->>Client: Navigate to Dashboard
Client->>Auth: GET /api/auth/user
Auth->>DB: Query user session
DB-->>Auth: User data
Auth-->>Client: 200 User authenticated
Client->>Client: Show Dashboard
User->>Client: Click "Calculate Reputation"
Client->>Client: Open SelfCalculationModal
User->>Client: Click "Calculate eReputation"
Client->>Reputation: POST /api/reputation/calculate
Reputation->>Reputation: Generate calculation record
Reputation->>Reputation: Compute score/confidence
Reputation->>DB: Save ReputationCalculation
DB-->>Reputation: Calculation complete
Reputation-->>Client: { score, confidence, analysis }
Client->>Client: Display ViewReputationModal with results
Client->>Client: Refetch dashboard queries
Loading
sequenceDiagram
actor User
participant Client as React Client
participant Reference as Reference API
participant Storage as Storage/DB
participant Files as File System
User->>Client: Open ReferenceModal
Client->>Client: Show target type selector
User->>Client: Select target & write reference
User->>Client: Attach files
Client->>Reference: POST /api/references (FormData)
Reference->>Storage: Create Reference entity
Reference->>Storage: Create FileUpload records
Reference->>Reference: Generate digital signature
Reference->>Files: Save uploaded files
Files-->>Reference: File paths
Reference->>Storage: Update Reference with signature
Storage-->>Reference: Success
Reference-->>Client: 201 Reference created
Client->>Client: Close modal & show toast
Client->>Client: Invalidate references query
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

The PR introduces a substantial, multi-layered application with heterogeneous components spanning frontend UI (50+ components with varied patterns), feature-specific logic (authentication, reputation calculations, reference management), backend services (repositories, API routes, external integrations), and infrastructure (database, ORM, migrations, tooling). While many UI components follow repetitive wrapper patterns around Radix primitives, the business logic in modals, pages, services, and database layers demands individual reasoning. The breadth and depth of changes—affecting React/TypeScript frontend, Node.js backend, PostgreSQL database schema, authentication flows, API design, and configuration—require careful cross-system validation.

Possibly related PRs

  • feat: setup-metagram #121: Introduces identical cn class-name merging utility (clsx + twMerge) for UI component styling, indicating shared helper infrastructure patterns across platforms.

Suggested reviewers

  • sosweetham

Poem

🐰 A warren of components, carefully laid,
From buttons to sidebars, UI's grand trade.
Reputation calculated with digital flair,
References stored with cryptographic care.
Full-stack precision, from client to DB—
The eReputation platform, hop-worthy to see! 🎩✨

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/add-erep

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d4b458e and a08cfec.

⛔ Files ignored due to path filters (1)
  • platforms/eReputation/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (92)
  • platforms/eReputation/.gitignore (1 hunks)
  • platforms/eReputation/README.md (1 hunks)
  • platforms/eReputation/client/index.html (1 hunks)
  • platforms/eReputation/client/src/App.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-view-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/self-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/view-reputation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/accordion.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert-dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/aspect-ratio.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/avatar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/badge.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/breadcrumb.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/button.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/calendar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/carousel.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/chart.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/checkbox.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/collapsible.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/command.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/context-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/drawer.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dropdown-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/file-upload.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/form.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/hover-card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input-otp.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/label.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/menubar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/navigation-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/pagination.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/popover.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/progress.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/radio-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/resizable.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/scroll-area.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/select.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/separator.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sheet.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sidebar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/skeleton.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/slider.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/switch.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/table.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tabs.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/textarea.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toast.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toaster.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tooltip.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-mobile.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-toast.ts (1 hunks)
  • platforms/eReputation/client/src/hooks/useAuth.ts (1 hunks)
  • platforms/eReputation/client/src/index.css (1 hunks)
  • platforms/eReputation/client/src/lib/authUtils.ts (1 hunks)
  • platforms/eReputation/client/src/lib/queryClient.ts (1 hunks)
  • platforms/eReputation/client/src/lib/utils.ts (1 hunks)
  • platforms/eReputation/client/src/main.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/auth-page.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/dashboard.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/landing.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/not-found.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/references.tsx (1 hunks)
  • platforms/eReputation/components.json (1 hunks)
  • platforms/eReputation/drizzle.config.ts (1 hunks)
  • platforms/eReputation/package.json (1 hunks)
  • platforms/eReputation/postcss.config.js (1 hunks)
  • platforms/eReputation/server/auth.ts (1 hunks)
  • platforms/eReputation/server/db.ts (1 hunks)
  • platforms/eReputation/server/index.ts (1 hunks)
  • platforms/eReputation/server/migrate-data.ts (1 hunks)
  • platforms/eReputation/server/replitAuth.ts (1 hunks)
  • platforms/eReputation/server/routes.ts (1 hunks)
  • platforms/eReputation/server/services/openai.ts (1 hunks)
  • platforms/eReputation/server/services/reputation.ts (1 hunks)
  • platforms/eReputation/server/storage.ts (1 hunks)
  • platforms/eReputation/server/typeorm-db.ts (1 hunks)
  • platforms/eReputation/server/typeorm.config.ts (1 hunks)
  • platforms/eReputation/server/vite.ts (1 hunks)
  • platforms/eReputation/shared/entities.ts (1 hunks)
  • platforms/eReputation/shared/schema-backup.ts (1 hunks)
  • platforms/eReputation/shared/schema.ts (1 hunks)
  • platforms/eReputation/tailwind.config.ts (1 hunks)
  • platforms/eReputation/tsconfig.json (1 hunks)
  • platforms/eReputation/vite.config.ts (1 hunks)

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.

@coodos
coodos marked this pull request as ready for review October 24, 2025 13:50
@coodos
coodos self-requested a review as a code ownerOctober 24, 2025 13:50
@coodos
coodos merged commit 837446d into mainOct 24, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/add-erep branch October 24, 2025 13:51
coodos pushed a commit that referenced this pull request Nov 4, 2025
* feat: add erep
* fix: add readme
* fix: platform path
Sign up for freeto 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

@sosweetham@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat: add ereputation - #343

Merged
coodos merged 3 commits into
mainfrom
feat/add-erep
Oct 24, 2025
Merged

feat: add ereputation#343
coodos merged 3 commits into
mainfrom
feat/add-erep

Conversation

@sosweetham

@sosweethamsosweetham commented Sep 2, 2025

Copy link
Copy Markdown
Member

Description of change

adds basic frontend and backend code for ereputation

Issue Number

n/a

Type of change

  • New (a change which implements a new feature)

How the change has been tested

n/a

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features
    • Added complete authentication system with email/password login and registration
    • Introduced reputation calculation engine for self and peer evaluation
    • Built reference management system with file attachments and digital signatures
    • Created activity tracking dashboard with real-time updates
    • Added search functionality for users, groups, and platforms
    • Implemented reputation scoring with confidence metrics and historical tracking
    • Enabled reference revocation and status management

@coderabbitai

coderabbitaiBot commented Sep 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

New eReputation platform implementation adding a complete full-stack application with React/TypeScript frontend, Node.js/Express backend, TypeORM database integration, comprehensive UI component library, authentication system, reputation calculation service, and reference management with digital signatures and file uploads.

Changes

Cohort / File(s)Summary
Frontend UI Components
client/src/components/ui/{accordion,alert,alert-dialog,aspect-ratio,avatar,badge,breadcrumb,button,calendar,card,carousel,chart,checkbox,collapsible,command,context-menu,dialog,drawer,dropdown-menu,file-upload,form,hover-card,input-otp,input,label,menubar,navigation-menu,pagination,popover,progress,radio-group,resizable,scroll-area,select,separator,sheet,sidebar,skeleton,slider,switch,table,tabs,textarea,toast,toaster,toggle-group,toggle,tooltip}.tsx
Comprehensive shadcn/ui-style component library (50+ components) providing accessibility-focused UI primitives built on Radix UI and Tailwind CSS, supporting variants, forwarded refs, and consistent styling patterns.
Authentication Pages & Modals
client/src/pages/auth-page.tsx, client/src/pages/landing.tsx
Authentication and landing pages with login/registration forms, email-password flows, and styled branding interface.
Reputation & Reference Features
client/src/components/modals/{other-calculation-modal,self-calculation-modal,view-reputation-modal}.tsx
client/src/pages/{dashboard,references}.tsx
Core feature pages and modals for self/other reputation calculations, reference viewing, dashboard analytics with activity feeds, and reference management workflows with digital signatures.
Reference Management
client/src/components/modals/{reference-modal,reference-view-modal}.tsx
Reference submission and viewing modals with target type selection, content validation, file attachments, and digital signature display.
Client Hooks & Utilities
client/src/hooks/{use-mobile,use-toast,useAuth}.ts
client/src/lib/{authUtils,queryClient,utils}.ts
Custom React hooks for authentication state, toast notifications, mobile detection; utility functions for API requests, class name merging, and error handling.
Frontend Configuration & Setup
client/index.html, client/src/{main,App,index.css}.tsx
vite.config.ts, tailwind.config.ts, postcss.config.js, tsconfig.json, components.json
React entry point, root app component with routing guards, Tailwind color tokens and animations, Vite bundling, TypeScript configuration, and shadcn UI tooling setup.
Backend Authentication
server/auth.ts, server/replitAuth.ts
Email/password session-based authentication with bcrypt hashing and PostgreSQL session store; alternative Replit OpenID Connect auth with multi-domain support and token refresh.
Backend Core Services
server/services/{reputation,openai}.ts
server/storage.ts, server/typeorm-db.ts
ReputationService for calculation orchestration and activity history; OpenAI integration for analysis; DatabaseStorage interface with TypeORM repository abstractions.
Backend API Routes & Server
server/{routes,vite,index}.ts
HTTP route definitions for reputation calculations, references, file uploads, search, and dashboard endpoints; Vite dev server integration and Express middleware setup.
Database & ORM
server/{typeorm.config,migrate-data}.ts
shared/entities.ts, shared/schema.ts, shared/schema-backup.ts
TypeORM DataSource configuration with PostgreSQL; entity definitions (User, ReputationCalculation, Reference, FileUpload, Session); Drizzle schema backup with insert validators.
Database Setup
server/db.ts, drizzle.config.ts
Neon serverless pool configuration with WebSocket support; Drizzle Kit migration settings targeting PostgreSQL.
Project Configuration
package.json, .gitignore, README.md
Root package metadata with scripts, dependencies, devDependencies; build artifact and IDE ignore patterns; comprehensive platform documentation with architecture and migration notes.

Sequence Diagram(s)

sequenceDiagram
actor User
participant Client as React Client
participant Auth as Auth Route
participant DB as Database
participant Reputation as Reputation Service
User->>Client: Navigate to Dashboard
Client->>Auth: GET /api/auth/user
Auth->>DB: Query user session
DB-->>Auth: User data
Auth-->>Client: 200 User authenticated
Client->>Client: Show Dashboard
User->>Client: Click "Calculate Reputation"
Client->>Client: Open SelfCalculationModal
User->>Client: Click "Calculate eReputation"
Client->>Reputation: POST /api/reputation/calculate
Reputation->>Reputation: Generate calculation record
Reputation->>Reputation: Compute score/confidence
Reputation->>DB: Save ReputationCalculation
DB-->>Reputation: Calculation complete
Reputation-->>Client: { score, confidence, analysis }
Client->>Client: Display ViewReputationModal with results
Client->>Client: Refetch dashboard queries
Loading
sequenceDiagram
actor User
participant Client as React Client
participant Reference as Reference API
participant Storage as Storage/DB
participant Files as File System
User->>Client: Open ReferenceModal
Client->>Client: Show target type selector
User->>Client: Select target & write reference
User->>Client: Attach files
Client->>Reference: POST /api/references (FormData)
Reference->>Storage: Create Reference entity
Reference->>Storage: Create FileUpload records
Reference->>Reference: Generate digital signature
Reference->>Files: Save uploaded files
Files-->>Reference: File paths
Reference->>Storage: Update Reference with signature
Storage-->>Reference: Success
Reference-->>Client: 201 Reference created
Client->>Client: Close modal & show toast
Client->>Client: Invalidate references query
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

The PR introduces a substantial, multi-layered application with heterogeneous components spanning frontend UI (50+ components with varied patterns), feature-specific logic (authentication, reputation calculations, reference management), backend services (repositories, API routes, external integrations), and infrastructure (database, ORM, migrations, tooling). While many UI components follow repetitive wrapper patterns around Radix primitives, the business logic in modals, pages, services, and database layers demands individual reasoning. The breadth and depth of changes—affecting React/TypeScript frontend, Node.js backend, PostgreSQL database schema, authentication flows, API design, and configuration—require careful cross-system validation.

Possibly related PRs

  • feat: setup-metagram #121: Introduces identical cn class-name merging utility (clsx + twMerge) for UI component styling, indicating shared helper infrastructure patterns across platforms.

Suggested reviewers

  • sosweetham

Poem

🐰 A warren of components, carefully laid,
From buttons to sidebars, UI's grand trade.
Reputation calculated with digital flair,
References stored with cryptographic care.
Full-stack precision, from client to DB—
The eReputation platform, hop-worthy to see! 🎩✨

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/add-erep

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d4b458e and a08cfec.

⛔ Files ignored due to path filters (1)
  • platforms/eReputation/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (92)
  • platforms/eReputation/.gitignore (1 hunks)
  • platforms/eReputation/README.md (1 hunks)
  • platforms/eReputation/client/index.html (1 hunks)
  • platforms/eReputation/client/src/App.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-view-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/self-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/view-reputation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/accordion.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert-dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/aspect-ratio.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/avatar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/badge.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/breadcrumb.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/button.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/calendar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/carousel.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/chart.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/checkbox.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/collapsible.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/command.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/context-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/drawer.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dropdown-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/file-upload.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/form.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/hover-card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input-otp.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/label.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/menubar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/navigation-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/pagination.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/popover.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/progress.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/radio-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/resizable.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/scroll-area.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/select.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/separator.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sheet.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sidebar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/skeleton.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/slider.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/switch.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/table.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tabs.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/textarea.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toast.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toaster.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tooltip.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-mobile.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-toast.ts (1 hunks)
  • platforms/eReputation/client/src/hooks/useAuth.ts (1 hunks)
  • platforms/eReputation/client/src/index.css (1 hunks)
  • platforms/eReputation/client/src/lib/authUtils.ts (1 hunks)
  • platforms/eReputation/client/src/lib/queryClient.ts (1 hunks)
  • platforms/eReputation/client/src/lib/utils.ts (1 hunks)
  • platforms/eReputation/client/src/main.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/auth-page.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/dashboard.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/landing.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/not-found.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/references.tsx (1 hunks)
  • platforms/eReputation/components.json (1 hunks)
  • platforms/eReputation/drizzle.config.ts (1 hunks)
  • platforms/eReputation/package.json (1 hunks)
  • platforms/eReputation/postcss.config.js (1 hunks)
  • platforms/eReputation/server/auth.ts (1 hunks)
  • platforms/eReputation/server/db.ts (1 hunks)
  • platforms/eReputation/server/index.ts (1 hunks)
  • platforms/eReputation/server/migrate-data.ts (1 hunks)
  • platforms/eReputation/server/replitAuth.ts (1 hunks)
  • platforms/eReputation/server/routes.ts (1 hunks)
  • platforms/eReputation/server/services/openai.ts (1 hunks)
  • platforms/eReputation/server/services/reputation.ts (1 hunks)
  • platforms/eReputation/server/storage.ts (1 hunks)
  • platforms/eReputation/server/typeorm-db.ts (1 hunks)
  • platforms/eReputation/server/typeorm.config.ts (1 hunks)
  • platforms/eReputation/server/vite.ts (1 hunks)
  • platforms/eReputation/shared/entities.ts (1 hunks)
  • platforms/eReputation/shared/schema-backup.ts (1 hunks)
  • platforms/eReputation/shared/schema.ts (1 hunks)
  • platforms/eReputation/tailwind.config.ts (1 hunks)
  • platforms/eReputation/tsconfig.json (1 hunks)
  • platforms/eReputation/vite.config.ts (1 hunks)

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.

@coodos
coodos marked this pull request as ready for review October 24, 2025 13:50
@coodos
coodos self-requested a review as a code ownerOctober 24, 2025 13:50
@coodos
coodos merged commit 837446d into mainOct 24, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/add-erep branch October 24, 2025 13:51
coodos pushed a commit that referenced this pull request Nov 4, 2025
* feat: add erep
* fix: add readme
* fix: platform path
Sign up for freeto 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

@sosweetham@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add ereputation - #343

Merged
coodos merged 3 commits into
mainfrom
feat/add-erep
Oct 24, 2025
Merged

feat: add ereputation#343
coodos merged 3 commits into
mainfrom
feat/add-erep

Conversation

@sosweetham

@sosweethamsosweetham commented Sep 2, 2025

Copy link
Copy Markdown
Member

Description of change

adds basic frontend and backend code for ereputation

Issue Number

n/a

Type of change

  • New (a change which implements a new feature)

How the change has been tested

n/a

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features
    • Added complete authentication system with email/password login and registration
    • Introduced reputation calculation engine for self and peer evaluation
    • Built reference management system with file attachments and digital signatures
    • Created activity tracking dashboard with real-time updates
    • Added search functionality for users, groups, and platforms
    • Implemented reputation scoring with confidence metrics and historical tracking
    • Enabled reference revocation and status management

@coderabbitai

coderabbitaiBot commented Sep 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

New eReputation platform implementation adding a complete full-stack application with React/TypeScript frontend, Node.js/Express backend, TypeORM database integration, comprehensive UI component library, authentication system, reputation calculation service, and reference management with digital signatures and file uploads.

Changes

Cohort / File(s)Summary
Frontend UI Components
client/src/components/ui/{accordion,alert,alert-dialog,aspect-ratio,avatar,badge,breadcrumb,button,calendar,card,carousel,chart,checkbox,collapsible,command,context-menu,dialog,drawer,dropdown-menu,file-upload,form,hover-card,input-otp,input,label,menubar,navigation-menu,pagination,popover,progress,radio-group,resizable,scroll-area,select,separator,sheet,sidebar,skeleton,slider,switch,table,tabs,textarea,toast,toaster,toggle-group,toggle,tooltip}.tsx
Comprehensive shadcn/ui-style component library (50+ components) providing accessibility-focused UI primitives built on Radix UI and Tailwind CSS, supporting variants, forwarded refs, and consistent styling patterns.
Authentication Pages & Modals
client/src/pages/auth-page.tsx, client/src/pages/landing.tsx
Authentication and landing pages with login/registration forms, email-password flows, and styled branding interface.
Reputation & Reference Features
client/src/components/modals/{other-calculation-modal,self-calculation-modal,view-reputation-modal}.tsx
client/src/pages/{dashboard,references}.tsx
Core feature pages and modals for self/other reputation calculations, reference viewing, dashboard analytics with activity feeds, and reference management workflows with digital signatures.
Reference Management
client/src/components/modals/{reference-modal,reference-view-modal}.tsx
Reference submission and viewing modals with target type selection, content validation, file attachments, and digital signature display.
Client Hooks & Utilities
client/src/hooks/{use-mobile,use-toast,useAuth}.ts
client/src/lib/{authUtils,queryClient,utils}.ts
Custom React hooks for authentication state, toast notifications, mobile detection; utility functions for API requests, class name merging, and error handling.
Frontend Configuration & Setup
client/index.html, client/src/{main,App,index.css}.tsx
vite.config.ts, tailwind.config.ts, postcss.config.js, tsconfig.json, components.json
React entry point, root app component with routing guards, Tailwind color tokens and animations, Vite bundling, TypeScript configuration, and shadcn UI tooling setup.
Backend Authentication
server/auth.ts, server/replitAuth.ts
Email/password session-based authentication with bcrypt hashing and PostgreSQL session store; alternative Replit OpenID Connect auth with multi-domain support and token refresh.
Backend Core Services
server/services/{reputation,openai}.ts
server/storage.ts, server/typeorm-db.ts
ReputationService for calculation orchestration and activity history; OpenAI integration for analysis; DatabaseStorage interface with TypeORM repository abstractions.
Backend API Routes & Server
server/{routes,vite,index}.ts
HTTP route definitions for reputation calculations, references, file uploads, search, and dashboard endpoints; Vite dev server integration and Express middleware setup.
Database & ORM
server/{typeorm.config,migrate-data}.ts
shared/entities.ts, shared/schema.ts, shared/schema-backup.ts
TypeORM DataSource configuration with PostgreSQL; entity definitions (User, ReputationCalculation, Reference, FileUpload, Session); Drizzle schema backup with insert validators.
Database Setup
server/db.ts, drizzle.config.ts
Neon serverless pool configuration with WebSocket support; Drizzle Kit migration settings targeting PostgreSQL.
Project Configuration
package.json, .gitignore, README.md
Root package metadata with scripts, dependencies, devDependencies; build artifact and IDE ignore patterns; comprehensive platform documentation with architecture and migration notes.

Sequence Diagram(s)

sequenceDiagram
actor User
participant Client as React Client
participant Auth as Auth Route
participant DB as Database
participant Reputation as Reputation Service
User->>Client: Navigate to Dashboard
Client->>Auth: GET /api/auth/user
Auth->>DB: Query user session
DB-->>Auth: User data
Auth-->>Client: 200 User authenticated
Client->>Client: Show Dashboard
User->>Client: Click "Calculate Reputation"
Client->>Client: Open SelfCalculationModal
User->>Client: Click "Calculate eReputation"
Client->>Reputation: POST /api/reputation/calculate
Reputation->>Reputation: Generate calculation record
Reputation->>Reputation: Compute score/confidence
Reputation->>DB: Save ReputationCalculation
DB-->>Reputation: Calculation complete
Reputation-->>Client: { score, confidence, analysis }
Client->>Client: Display ViewReputationModal with results
Client->>Client: Refetch dashboard queries
Loading
sequenceDiagram
actor User
participant Client as React Client
participant Reference as Reference API
participant Storage as Storage/DB
participant Files as File System
User->>Client: Open ReferenceModal
Client->>Client: Show target type selector
User->>Client: Select target & write reference
User->>Client: Attach files
Client->>Reference: POST /api/references (FormData)
Reference->>Storage: Create Reference entity
Reference->>Storage: Create FileUpload records
Reference->>Reference: Generate digital signature
Reference->>Files: Save uploaded files
Files-->>Reference: File paths
Reference->>Storage: Update Reference with signature
Storage-->>Reference: Success
Reference-->>Client: 201 Reference created
Client->>Client: Close modal & show toast
Client->>Client: Invalidate references query
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

The PR introduces a substantial, multi-layered application with heterogeneous components spanning frontend UI (50+ components with varied patterns), feature-specific logic (authentication, reputation calculations, reference management), backend services (repositories, API routes, external integrations), and infrastructure (database, ORM, migrations, tooling). While many UI components follow repetitive wrapper patterns around Radix primitives, the business logic in modals, pages, services, and database layers demands individual reasoning. The breadth and depth of changes—affecting React/TypeScript frontend, Node.js backend, PostgreSQL database schema, authentication flows, API design, and configuration—require careful cross-system validation.

Possibly related PRs

  • feat: setup-metagram #121: Introduces identical cn class-name merging utility (clsx + twMerge) for UI component styling, indicating shared helper infrastructure patterns across platforms.

Suggested reviewers

  • sosweetham

Poem

🐰 A warren of components, carefully laid,
From buttons to sidebars, UI's grand trade.
Reputation calculated with digital flair,
References stored with cryptographic care.
Full-stack precision, from client to DB—
The eReputation platform, hop-worthy to see! 🎩✨

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/add-erep

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d4b458e and a08cfec.

⛔ Files ignored due to path filters (1)
  • platforms/eReputation/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (92)
  • platforms/eReputation/.gitignore (1 hunks)
  • platforms/eReputation/README.md (1 hunks)
  • platforms/eReputation/client/index.html (1 hunks)
  • platforms/eReputation/client/src/App.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-view-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/self-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/view-reputation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/accordion.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert-dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/aspect-ratio.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/avatar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/badge.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/breadcrumb.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/button.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/calendar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/carousel.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/chart.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/checkbox.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/collapsible.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/command.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/context-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/drawer.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dropdown-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/file-upload.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/form.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/hover-card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input-otp.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/label.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/menubar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/navigation-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/pagination.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/popover.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/progress.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/radio-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/resizable.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/scroll-area.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/select.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/separator.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sheet.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sidebar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/skeleton.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/slider.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/switch.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/table.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tabs.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/textarea.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toast.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toaster.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tooltip.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-mobile.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-toast.ts (1 hunks)
  • platforms/eReputation/client/src/hooks/useAuth.ts (1 hunks)
  • platforms/eReputation/client/src/index.css (1 hunks)
  • platforms/eReputation/client/src/lib/authUtils.ts (1 hunks)
  • platforms/eReputation/client/src/lib/queryClient.ts (1 hunks)
  • platforms/eReputation/client/src/lib/utils.ts (1 hunks)
  • platforms/eReputation/client/src/main.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/auth-page.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/dashboard.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/landing.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/not-found.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/references.tsx (1 hunks)
  • platforms/eReputation/components.json (1 hunks)
  • platforms/eReputation/drizzle.config.ts (1 hunks)
  • platforms/eReputation/package.json (1 hunks)
  • platforms/eReputation/postcss.config.js (1 hunks)
  • platforms/eReputation/server/auth.ts (1 hunks)
  • platforms/eReputation/server/db.ts (1 hunks)
  • platforms/eReputation/server/index.ts (1 hunks)
  • platforms/eReputation/server/migrate-data.ts (1 hunks)
  • platforms/eReputation/server/replitAuth.ts (1 hunks)
  • platforms/eReputation/server/routes.ts (1 hunks)
  • platforms/eReputation/server/services/openai.ts (1 hunks)
  • platforms/eReputation/server/services/reputation.ts (1 hunks)
  • platforms/eReputation/server/storage.ts (1 hunks)
  • platforms/eReputation/server/typeorm-db.ts (1 hunks)
  • platforms/eReputation/server/typeorm.config.ts (1 hunks)
  • platforms/eReputation/server/vite.ts (1 hunks)
  • platforms/eReputation/shared/entities.ts (1 hunks)
  • platforms/eReputation/shared/schema-backup.ts (1 hunks)
  • platforms/eReputation/shared/schema.ts (1 hunks)
  • platforms/eReputation/tailwind.config.ts (1 hunks)
  • platforms/eReputation/tsconfig.json (1 hunks)
  • platforms/eReputation/vite.config.ts (1 hunks)

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.

@coodos
coodos marked this pull request as ready for review October 24, 2025 13:50
@coodos
coodos self-requested a review as a code ownerOctober 24, 2025 13:50
@coodos
coodos merged commit 837446d into mainOct 24, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/add-erep branch October 24, 2025 13:51
coodos pushed a commit that referenced this pull request Nov 4, 2025
* feat: add erep
* fix: add readme
* fix: platform path
Sign up for freeto 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

@sosweetham@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add ereputation - #343

Merged
coodos merged 3 commits into
mainfrom
feat/add-erep
Oct 24, 2025
Merged

feat: add ereputation#343
coodos merged 3 commits into
mainfrom
feat/add-erep

Conversation

@sosweetham

@sosweethamsosweetham commented Sep 2, 2025

Copy link
Copy Markdown
Member

Description of change

adds basic frontend and backend code for ereputation

Issue Number

n/a

Type of change

  • New (a change which implements a new feature)

How the change has been tested

n/a

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features
    • Added complete authentication system with email/password login and registration
    • Introduced reputation calculation engine for self and peer evaluation
    • Built reference management system with file attachments and digital signatures
    • Created activity tracking dashboard with real-time updates
    • Added search functionality for users, groups, and platforms
    • Implemented reputation scoring with confidence metrics and historical tracking
    • Enabled reference revocation and status management

@coderabbitai

coderabbitaiBot commented Sep 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

New eReputation platform implementation adding a complete full-stack application with React/TypeScript frontend, Node.js/Express backend, TypeORM database integration, comprehensive UI component library, authentication system, reputation calculation service, and reference management with digital signatures and file uploads.

Changes

Cohort / File(s)Summary
Frontend UI Components
client/src/components/ui/{accordion,alert,alert-dialog,aspect-ratio,avatar,badge,breadcrumb,button,calendar,card,carousel,chart,checkbox,collapsible,command,context-menu,dialog,drawer,dropdown-menu,file-upload,form,hover-card,input-otp,input,label,menubar,navigation-menu,pagination,popover,progress,radio-group,resizable,scroll-area,select,separator,sheet,sidebar,skeleton,slider,switch,table,tabs,textarea,toast,toaster,toggle-group,toggle,tooltip}.tsx
Comprehensive shadcn/ui-style component library (50+ components) providing accessibility-focused UI primitives built on Radix UI and Tailwind CSS, supporting variants, forwarded refs, and consistent styling patterns.
Authentication Pages & Modals
client/src/pages/auth-page.tsx, client/src/pages/landing.tsx
Authentication and landing pages with login/registration forms, email-password flows, and styled branding interface.
Reputation & Reference Features
client/src/components/modals/{other-calculation-modal,self-calculation-modal,view-reputation-modal}.tsx
client/src/pages/{dashboard,references}.tsx
Core feature pages and modals for self/other reputation calculations, reference viewing, dashboard analytics with activity feeds, and reference management workflows with digital signatures.
Reference Management
client/src/components/modals/{reference-modal,reference-view-modal}.tsx
Reference submission and viewing modals with target type selection, content validation, file attachments, and digital signature display.
Client Hooks & Utilities
client/src/hooks/{use-mobile,use-toast,useAuth}.ts
client/src/lib/{authUtils,queryClient,utils}.ts
Custom React hooks for authentication state, toast notifications, mobile detection; utility functions for API requests, class name merging, and error handling.
Frontend Configuration & Setup
client/index.html, client/src/{main,App,index.css}.tsx
vite.config.ts, tailwind.config.ts, postcss.config.js, tsconfig.json, components.json
React entry point, root app component with routing guards, Tailwind color tokens and animations, Vite bundling, TypeScript configuration, and shadcn UI tooling setup.
Backend Authentication
server/auth.ts, server/replitAuth.ts
Email/password session-based authentication with bcrypt hashing and PostgreSQL session store; alternative Replit OpenID Connect auth with multi-domain support and token refresh.
Backend Core Services
server/services/{reputation,openai}.ts
server/storage.ts, server/typeorm-db.ts
ReputationService for calculation orchestration and activity history; OpenAI integration for analysis; DatabaseStorage interface with TypeORM repository abstractions.
Backend API Routes & Server
server/{routes,vite,index}.ts
HTTP route definitions for reputation calculations, references, file uploads, search, and dashboard endpoints; Vite dev server integration and Express middleware setup.
Database & ORM
server/{typeorm.config,migrate-data}.ts
shared/entities.ts, shared/schema.ts, shared/schema-backup.ts
TypeORM DataSource configuration with PostgreSQL; entity definitions (User, ReputationCalculation, Reference, FileUpload, Session); Drizzle schema backup with insert validators.
Database Setup
server/db.ts, drizzle.config.ts
Neon serverless pool configuration with WebSocket support; Drizzle Kit migration settings targeting PostgreSQL.
Project Configuration
package.json, .gitignore, README.md
Root package metadata with scripts, dependencies, devDependencies; build artifact and IDE ignore patterns; comprehensive platform documentation with architecture and migration notes.

Sequence Diagram(s)

sequenceDiagram
actor User
participant Client as React Client
participant Auth as Auth Route
participant DB as Database
participant Reputation as Reputation Service
User->>Client: Navigate to Dashboard
Client->>Auth: GET /api/auth/user
Auth->>DB: Query user session
DB-->>Auth: User data
Auth-->>Client: 200 User authenticated
Client->>Client: Show Dashboard
User->>Client: Click "Calculate Reputation"
Client->>Client: Open SelfCalculationModal
User->>Client: Click "Calculate eReputation"
Client->>Reputation: POST /api/reputation/calculate
Reputation->>Reputation: Generate calculation record
Reputation->>Reputation: Compute score/confidence
Reputation->>DB: Save ReputationCalculation
DB-->>Reputation: Calculation complete
Reputation-->>Client: { score, confidence, analysis }
Client->>Client: Display ViewReputationModal with results
Client->>Client: Refetch dashboard queries
Loading
sequenceDiagram
actor User
participant Client as React Client
participant Reference as Reference API
participant Storage as Storage/DB
participant Files as File System
User->>Client: Open ReferenceModal
Client->>Client: Show target type selector
User->>Client: Select target & write reference
User->>Client: Attach files
Client->>Reference: POST /api/references (FormData)
Reference->>Storage: Create Reference entity
Reference->>Storage: Create FileUpload records
Reference->>Reference: Generate digital signature
Reference->>Files: Save uploaded files
Files-->>Reference: File paths
Reference->>Storage: Update Reference with signature
Storage-->>Reference: Success
Reference-->>Client: 201 Reference created
Client->>Client: Close modal & show toast
Client->>Client: Invalidate references query
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

The PR introduces a substantial, multi-layered application with heterogeneous components spanning frontend UI (50+ components with varied patterns), feature-specific logic (authentication, reputation calculations, reference management), backend services (repositories, API routes, external integrations), and infrastructure (database, ORM, migrations, tooling). While many UI components follow repetitive wrapper patterns around Radix primitives, the business logic in modals, pages, services, and database layers demands individual reasoning. The breadth and depth of changes—affecting React/TypeScript frontend, Node.js backend, PostgreSQL database schema, authentication flows, API design, and configuration—require careful cross-system validation.

Possibly related PRs

  • feat: setup-metagram #121: Introduces identical cn class-name merging utility (clsx + twMerge) for UI component styling, indicating shared helper infrastructure patterns across platforms.

Suggested reviewers

  • sosweetham

Poem

🐰 A warren of components, carefully laid,
From buttons to sidebars, UI's grand trade.
Reputation calculated with digital flair,
References stored with cryptographic care.
Full-stack precision, from client to DB—
The eReputation platform, hop-worthy to see! 🎩✨

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/add-erep

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d4b458e and a08cfec.

⛔ Files ignored due to path filters (1)
  • platforms/eReputation/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (92)
  • platforms/eReputation/.gitignore (1 hunks)
  • platforms/eReputation/README.md (1 hunks)
  • platforms/eReputation/client/index.html (1 hunks)
  • platforms/eReputation/client/src/App.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-view-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/self-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/view-reputation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/accordion.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert-dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/aspect-ratio.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/avatar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/badge.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/breadcrumb.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/button.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/calendar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/carousel.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/chart.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/checkbox.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/collapsible.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/command.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/context-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/drawer.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dropdown-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/file-upload.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/form.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/hover-card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input-otp.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/label.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/menubar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/navigation-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/pagination.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/popover.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/progress.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/radio-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/resizable.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/scroll-area.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/select.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/separator.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sheet.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sidebar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/skeleton.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/slider.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/switch.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/table.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tabs.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/textarea.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toast.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toaster.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tooltip.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-mobile.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-toast.ts (1 hunks)
  • platforms/eReputation/client/src/hooks/useAuth.ts (1 hunks)
  • platforms/eReputation/client/src/index.css (1 hunks)
  • platforms/eReputation/client/src/lib/authUtils.ts (1 hunks)
  • platforms/eReputation/client/src/lib/queryClient.ts (1 hunks)
  • platforms/eReputation/client/src/lib/utils.ts (1 hunks)
  • platforms/eReputation/client/src/main.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/auth-page.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/dashboard.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/landing.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/not-found.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/references.tsx (1 hunks)
  • platforms/eReputation/components.json (1 hunks)
  • platforms/eReputation/drizzle.config.ts (1 hunks)
  • platforms/eReputation/package.json (1 hunks)
  • platforms/eReputation/postcss.config.js (1 hunks)
  • platforms/eReputation/server/auth.ts (1 hunks)
  • platforms/eReputation/server/db.ts (1 hunks)
  • platforms/eReputation/server/index.ts (1 hunks)
  • platforms/eReputation/server/migrate-data.ts (1 hunks)
  • platforms/eReputation/server/replitAuth.ts (1 hunks)
  • platforms/eReputation/server/routes.ts (1 hunks)
  • platforms/eReputation/server/services/openai.ts (1 hunks)
  • platforms/eReputation/server/services/reputation.ts (1 hunks)
  • platforms/eReputation/server/storage.ts (1 hunks)
  • platforms/eReputation/server/typeorm-db.ts (1 hunks)
  • platforms/eReputation/server/typeorm.config.ts (1 hunks)
  • platforms/eReputation/server/vite.ts (1 hunks)
  • platforms/eReputation/shared/entities.ts (1 hunks)
  • platforms/eReputation/shared/schema-backup.ts (1 hunks)
  • platforms/eReputation/shared/schema.ts (1 hunks)
  • platforms/eReputation/tailwind.config.ts (1 hunks)
  • platforms/eReputation/tsconfig.json (1 hunks)
  • platforms/eReputation/vite.config.ts (1 hunks)

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.

@coodos
coodos marked this pull request as ready for review October 24, 2025 13:50
@coodos
coodos self-requested a review as a code ownerOctober 24, 2025 13:50
@coodos
coodos merged commit 837446d into mainOct 24, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/add-erep branch October 24, 2025 13:51
coodos pushed a commit that referenced this pull request Nov 4, 2025
* feat: add erep
* fix: add readme
* fix: platform path
Sign up for freeto 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

@sosweetham@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat: add ereputation - #343

Merged
coodos merged 3 commits into
mainfrom
feat/add-erep
Oct 24, 2025
Merged

feat: add ereputation#343
coodos merged 3 commits into
mainfrom
feat/add-erep

Conversation

@sosweetham

@sosweethamsosweetham commented Sep 2, 2025

Copy link
Copy Markdown
Member

Description of change

adds basic frontend and backend code for ereputation

Issue Number

n/a

Type of change

  • New (a change which implements a new feature)

How the change has been tested

n/a

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features
    • Added complete authentication system with email/password login and registration
    • Introduced reputation calculation engine for self and peer evaluation
    • Built reference management system with file attachments and digital signatures
    • Created activity tracking dashboard with real-time updates
    • Added search functionality for users, groups, and platforms
    • Implemented reputation scoring with confidence metrics and historical tracking
    • Enabled reference revocation and status management

@coderabbitai

coderabbitaiBot commented Sep 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

New eReputation platform implementation adding a complete full-stack application with React/TypeScript frontend, Node.js/Express backend, TypeORM database integration, comprehensive UI component library, authentication system, reputation calculation service, and reference management with digital signatures and file uploads.

Changes

Cohort / File(s)Summary
Frontend UI Components
client/src/components/ui/{accordion,alert,alert-dialog,aspect-ratio,avatar,badge,breadcrumb,button,calendar,card,carousel,chart,checkbox,collapsible,command,context-menu,dialog,drawer,dropdown-menu,file-upload,form,hover-card,input-otp,input,label,menubar,navigation-menu,pagination,popover,progress,radio-group,resizable,scroll-area,select,separator,sheet,sidebar,skeleton,slider,switch,table,tabs,textarea,toast,toaster,toggle-group,toggle,tooltip}.tsx
Comprehensive shadcn/ui-style component library (50+ components) providing accessibility-focused UI primitives built on Radix UI and Tailwind CSS, supporting variants, forwarded refs, and consistent styling patterns.
Authentication Pages & Modals
client/src/pages/auth-page.tsx, client/src/pages/landing.tsx
Authentication and landing pages with login/registration forms, email-password flows, and styled branding interface.
Reputation & Reference Features
client/src/components/modals/{other-calculation-modal,self-calculation-modal,view-reputation-modal}.tsx
client/src/pages/{dashboard,references}.tsx
Core feature pages and modals for self/other reputation calculations, reference viewing, dashboard analytics with activity feeds, and reference management workflows with digital signatures.
Reference Management
client/src/components/modals/{reference-modal,reference-view-modal}.tsx
Reference submission and viewing modals with target type selection, content validation, file attachments, and digital signature display.
Client Hooks & Utilities
client/src/hooks/{use-mobile,use-toast,useAuth}.ts
client/src/lib/{authUtils,queryClient,utils}.ts
Custom React hooks for authentication state, toast notifications, mobile detection; utility functions for API requests, class name merging, and error handling.
Frontend Configuration & Setup
client/index.html, client/src/{main,App,index.css}.tsx
vite.config.ts, tailwind.config.ts, postcss.config.js, tsconfig.json, components.json
React entry point, root app component with routing guards, Tailwind color tokens and animations, Vite bundling, TypeScript configuration, and shadcn UI tooling setup.
Backend Authentication
server/auth.ts, server/replitAuth.ts
Email/password session-based authentication with bcrypt hashing and PostgreSQL session store; alternative Replit OpenID Connect auth with multi-domain support and token refresh.
Backend Core Services
server/services/{reputation,openai}.ts
server/storage.ts, server/typeorm-db.ts
ReputationService for calculation orchestration and activity history; OpenAI integration for analysis; DatabaseStorage interface with TypeORM repository abstractions.
Backend API Routes & Server
server/{routes,vite,index}.ts
HTTP route definitions for reputation calculations, references, file uploads, search, and dashboard endpoints; Vite dev server integration and Express middleware setup.
Database & ORM
server/{typeorm.config,migrate-data}.ts
shared/entities.ts, shared/schema.ts, shared/schema-backup.ts
TypeORM DataSource configuration with PostgreSQL; entity definitions (User, ReputationCalculation, Reference, FileUpload, Session); Drizzle schema backup with insert validators.
Database Setup
server/db.ts, drizzle.config.ts
Neon serverless pool configuration with WebSocket support; Drizzle Kit migration settings targeting PostgreSQL.
Project Configuration
package.json, .gitignore, README.md
Root package metadata with scripts, dependencies, devDependencies; build artifact and IDE ignore patterns; comprehensive platform documentation with architecture and migration notes.

Sequence Diagram(s)

sequenceDiagram
actor User
participant Client as React Client
participant Auth as Auth Route
participant DB as Database
participant Reputation as Reputation Service
User->>Client: Navigate to Dashboard
Client->>Auth: GET /api/auth/user
Auth->>DB: Query user session
DB-->>Auth: User data
Auth-->>Client: 200 User authenticated
Client->>Client: Show Dashboard
User->>Client: Click "Calculate Reputation"
Client->>Client: Open SelfCalculationModal
User->>Client: Click "Calculate eReputation"
Client->>Reputation: POST /api/reputation/calculate
Reputation->>Reputation: Generate calculation record
Reputation->>Reputation: Compute score/confidence
Reputation->>DB: Save ReputationCalculation
DB-->>Reputation: Calculation complete
Reputation-->>Client: { score, confidence, analysis }
Client->>Client: Display ViewReputationModal with results
Client->>Client: Refetch dashboard queries
Loading
sequenceDiagram
actor User
participant Client as React Client
participant Reference as Reference API
participant Storage as Storage/DB
participant Files as File System
User->>Client: Open ReferenceModal
Client->>Client: Show target type selector
User->>Client: Select target & write reference
User->>Client: Attach files
Client->>Reference: POST /api/references (FormData)
Reference->>Storage: Create Reference entity
Reference->>Storage: Create FileUpload records
Reference->>Reference: Generate digital signature
Reference->>Files: Save uploaded files
Files-->>Reference: File paths
Reference->>Storage: Update Reference with signature
Storage-->>Reference: Success
Reference-->>Client: 201 Reference created
Client->>Client: Close modal & show toast
Client->>Client: Invalidate references query
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

The PR introduces a substantial, multi-layered application with heterogeneous components spanning frontend UI (50+ components with varied patterns), feature-specific logic (authentication, reputation calculations, reference management), backend services (repositories, API routes, external integrations), and infrastructure (database, ORM, migrations, tooling). While many UI components follow repetitive wrapper patterns around Radix primitives, the business logic in modals, pages, services, and database layers demands individual reasoning. The breadth and depth of changes—affecting React/TypeScript frontend, Node.js backend, PostgreSQL database schema, authentication flows, API design, and configuration—require careful cross-system validation.

Possibly related PRs

  • feat: setup-metagram #121: Introduces identical cn class-name merging utility (clsx + twMerge) for UI component styling, indicating shared helper infrastructure patterns across platforms.

Suggested reviewers

  • sosweetham

Poem

🐰 A warren of components, carefully laid,
From buttons to sidebars, UI's grand trade.
Reputation calculated with digital flair,
References stored with cryptographic care.
Full-stack precision, from client to DB—
The eReputation platform, hop-worthy to see! 🎩✨

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/add-erep

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d4b458e and a08cfec.

⛔ Files ignored due to path filters (1)
  • platforms/eReputation/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (92)
  • platforms/eReputation/.gitignore (1 hunks)
  • platforms/eReputation/README.md (1 hunks)
  • platforms/eReputation/client/index.html (1 hunks)
  • platforms/eReputation/client/src/App.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-view-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/self-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/view-reputation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/accordion.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert-dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/aspect-ratio.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/avatar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/badge.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/breadcrumb.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/button.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/calendar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/carousel.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/chart.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/checkbox.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/collapsible.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/command.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/context-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/drawer.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dropdown-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/file-upload.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/form.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/hover-card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input-otp.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/label.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/menubar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/navigation-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/pagination.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/popover.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/progress.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/radio-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/resizable.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/scroll-area.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/select.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/separator.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sheet.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sidebar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/skeleton.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/slider.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/switch.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/table.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tabs.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/textarea.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toast.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toaster.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tooltip.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-mobile.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-toast.ts (1 hunks)
  • platforms/eReputation/client/src/hooks/useAuth.ts (1 hunks)
  • platforms/eReputation/client/src/index.css (1 hunks)
  • platforms/eReputation/client/src/lib/authUtils.ts (1 hunks)
  • platforms/eReputation/client/src/lib/queryClient.ts (1 hunks)
  • platforms/eReputation/client/src/lib/utils.ts (1 hunks)
  • platforms/eReputation/client/src/main.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/auth-page.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/dashboard.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/landing.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/not-found.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/references.tsx (1 hunks)
  • platforms/eReputation/components.json (1 hunks)
  • platforms/eReputation/drizzle.config.ts (1 hunks)
  • platforms/eReputation/package.json (1 hunks)
  • platforms/eReputation/postcss.config.js (1 hunks)
  • platforms/eReputation/server/auth.ts (1 hunks)
  • platforms/eReputation/server/db.ts (1 hunks)
  • platforms/eReputation/server/index.ts (1 hunks)
  • platforms/eReputation/server/migrate-data.ts (1 hunks)
  • platforms/eReputation/server/replitAuth.ts (1 hunks)
  • platforms/eReputation/server/routes.ts (1 hunks)
  • platforms/eReputation/server/services/openai.ts (1 hunks)
  • platforms/eReputation/server/services/reputation.ts (1 hunks)
  • platforms/eReputation/server/storage.ts (1 hunks)
  • platforms/eReputation/server/typeorm-db.ts (1 hunks)
  • platforms/eReputation/server/typeorm.config.ts (1 hunks)
  • platforms/eReputation/server/vite.ts (1 hunks)
  • platforms/eReputation/shared/entities.ts (1 hunks)
  • platforms/eReputation/shared/schema-backup.ts (1 hunks)
  • platforms/eReputation/shared/schema.ts (1 hunks)
  • platforms/eReputation/tailwind.config.ts (1 hunks)
  • platforms/eReputation/tsconfig.json (1 hunks)
  • platforms/eReputation/vite.config.ts (1 hunks)

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.

@coodos
coodos marked this pull request as ready for review October 24, 2025 13:50
@coodos
coodos self-requested a review as a code ownerOctober 24, 2025 13:50
@coodos
coodos merged commit 837446d into mainOct 24, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/add-erep branch October 24, 2025 13:51
coodos pushed a commit that referenced this pull request Nov 4, 2025
* feat: add erep
* fix: add readme
* fix: platform path
Sign up for freeto 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

@sosweetham@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add ereputation - #343

Merged
coodos merged 3 commits into
mainfrom
feat/add-erep
Oct 24, 2025
Merged

feat: add ereputation#343
coodos merged 3 commits into
mainfrom
feat/add-erep

Conversation

@sosweetham

@sosweethamsosweetham commented Sep 2, 2025

Copy link
Copy Markdown
Member

Description of change

adds basic frontend and backend code for ereputation

Issue Number

n/a

Type of change

  • New (a change which implements a new feature)

How the change has been tested

n/a

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features
    • Added complete authentication system with email/password login and registration
    • Introduced reputation calculation engine for self and peer evaluation
    • Built reference management system with file attachments and digital signatures
    • Created activity tracking dashboard with real-time updates
    • Added search functionality for users, groups, and platforms
    • Implemented reputation scoring with confidence metrics and historical tracking
    • Enabled reference revocation and status management

@coderabbitai

coderabbitaiBot commented Sep 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

New eReputation platform implementation adding a complete full-stack application with React/TypeScript frontend, Node.js/Express backend, TypeORM database integration, comprehensive UI component library, authentication system, reputation calculation service, and reference management with digital signatures and file uploads.

Changes

Cohort / File(s)Summary
Frontend UI Components
client/src/components/ui/{accordion,alert,alert-dialog,aspect-ratio,avatar,badge,breadcrumb,button,calendar,card,carousel,chart,checkbox,collapsible,command,context-menu,dialog,drawer,dropdown-menu,file-upload,form,hover-card,input-otp,input,label,menubar,navigation-menu,pagination,popover,progress,radio-group,resizable,scroll-area,select,separator,sheet,sidebar,skeleton,slider,switch,table,tabs,textarea,toast,toaster,toggle-group,toggle,tooltip}.tsx
Comprehensive shadcn/ui-style component library (50+ components) providing accessibility-focused UI primitives built on Radix UI and Tailwind CSS, supporting variants, forwarded refs, and consistent styling patterns.
Authentication Pages & Modals
client/src/pages/auth-page.tsx, client/src/pages/landing.tsx
Authentication and landing pages with login/registration forms, email-password flows, and styled branding interface.
Reputation & Reference Features
client/src/components/modals/{other-calculation-modal,self-calculation-modal,view-reputation-modal}.tsx
client/src/pages/{dashboard,references}.tsx
Core feature pages and modals for self/other reputation calculations, reference viewing, dashboard analytics with activity feeds, and reference management workflows with digital signatures.
Reference Management
client/src/components/modals/{reference-modal,reference-view-modal}.tsx
Reference submission and viewing modals with target type selection, content validation, file attachments, and digital signature display.
Client Hooks & Utilities
client/src/hooks/{use-mobile,use-toast,useAuth}.ts
client/src/lib/{authUtils,queryClient,utils}.ts
Custom React hooks for authentication state, toast notifications, mobile detection; utility functions for API requests, class name merging, and error handling.
Frontend Configuration & Setup
client/index.html, client/src/{main,App,index.css}.tsx
vite.config.ts, tailwind.config.ts, postcss.config.js, tsconfig.json, components.json
React entry point, root app component with routing guards, Tailwind color tokens and animations, Vite bundling, TypeScript configuration, and shadcn UI tooling setup.
Backend Authentication
server/auth.ts, server/replitAuth.ts
Email/password session-based authentication with bcrypt hashing and PostgreSQL session store; alternative Replit OpenID Connect auth with multi-domain support and token refresh.
Backend Core Services
server/services/{reputation,openai}.ts
server/storage.ts, server/typeorm-db.ts
ReputationService for calculation orchestration and activity history; OpenAI integration for analysis; DatabaseStorage interface with TypeORM repository abstractions.
Backend API Routes & Server
server/{routes,vite,index}.ts
HTTP route definitions for reputation calculations, references, file uploads, search, and dashboard endpoints; Vite dev server integration and Express middleware setup.
Database & ORM
server/{typeorm.config,migrate-data}.ts
shared/entities.ts, shared/schema.ts, shared/schema-backup.ts
TypeORM DataSource configuration with PostgreSQL; entity definitions (User, ReputationCalculation, Reference, FileUpload, Session); Drizzle schema backup with insert validators.
Database Setup
server/db.ts, drizzle.config.ts
Neon serverless pool configuration with WebSocket support; Drizzle Kit migration settings targeting PostgreSQL.
Project Configuration
package.json, .gitignore, README.md
Root package metadata with scripts, dependencies, devDependencies; build artifact and IDE ignore patterns; comprehensive platform documentation with architecture and migration notes.

Sequence Diagram(s)

sequenceDiagram
actor User
participant Client as React Client
participant Auth as Auth Route
participant DB as Database
participant Reputation as Reputation Service
User->>Client: Navigate to Dashboard
Client->>Auth: GET /api/auth/user
Auth->>DB: Query user session
DB-->>Auth: User data
Auth-->>Client: 200 User authenticated
Client->>Client: Show Dashboard
User->>Client: Click "Calculate Reputation"
Client->>Client: Open SelfCalculationModal
User->>Client: Click "Calculate eReputation"
Client->>Reputation: POST /api/reputation/calculate
Reputation->>Reputation: Generate calculation record
Reputation->>Reputation: Compute score/confidence
Reputation->>DB: Save ReputationCalculation
DB-->>Reputation: Calculation complete
Reputation-->>Client: { score, confidence, analysis }
Client->>Client: Display ViewReputationModal with results
Client->>Client: Refetch dashboard queries
Loading
sequenceDiagram
actor User
participant Client as React Client
participant Reference as Reference API
participant Storage as Storage/DB
participant Files as File System
User->>Client: Open ReferenceModal
Client->>Client: Show target type selector
User->>Client: Select target & write reference
User->>Client: Attach files
Client->>Reference: POST /api/references (FormData)
Reference->>Storage: Create Reference entity
Reference->>Storage: Create FileUpload records
Reference->>Reference: Generate digital signature
Reference->>Files: Save uploaded files
Files-->>Reference: File paths
Reference->>Storage: Update Reference with signature
Storage-->>Reference: Success
Reference-->>Client: 201 Reference created
Client->>Client: Close modal & show toast
Client->>Client: Invalidate references query
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

The PR introduces a substantial, multi-layered application with heterogeneous components spanning frontend UI (50+ components with varied patterns), feature-specific logic (authentication, reputation calculations, reference management), backend services (repositories, API routes, external integrations), and infrastructure (database, ORM, migrations, tooling). While many UI components follow repetitive wrapper patterns around Radix primitives, the business logic in modals, pages, services, and database layers demands individual reasoning. The breadth and depth of changes—affecting React/TypeScript frontend, Node.js backend, PostgreSQL database schema, authentication flows, API design, and configuration—require careful cross-system validation.

Possibly related PRs

  • feat: setup-metagram #121: Introduces identical cn class-name merging utility (clsx + twMerge) for UI component styling, indicating shared helper infrastructure patterns across platforms.

Suggested reviewers

  • sosweetham

Poem

🐰 A warren of components, carefully laid,
From buttons to sidebars, UI's grand trade.
Reputation calculated with digital flair,
References stored with cryptographic care.
Full-stack precision, from client to DB—
The eReputation platform, hop-worthy to see! 🎩✨

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/add-erep

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d4b458e and a08cfec.

⛔ Files ignored due to path filters (1)
  • platforms/eReputation/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (92)
  • platforms/eReputation/.gitignore (1 hunks)
  • platforms/eReputation/README.md (1 hunks)
  • platforms/eReputation/client/index.html (1 hunks)
  • platforms/eReputation/client/src/App.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-view-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/self-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/view-reputation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/accordion.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert-dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/aspect-ratio.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/avatar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/badge.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/breadcrumb.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/button.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/calendar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/carousel.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/chart.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/checkbox.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/collapsible.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/command.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/context-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/drawer.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dropdown-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/file-upload.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/form.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/hover-card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input-otp.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/label.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/menubar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/navigation-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/pagination.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/popover.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/progress.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/radio-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/resizable.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/scroll-area.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/select.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/separator.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sheet.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sidebar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/skeleton.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/slider.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/switch.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/table.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tabs.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/textarea.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toast.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toaster.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tooltip.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-mobile.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-toast.ts (1 hunks)
  • platforms/eReputation/client/src/hooks/useAuth.ts (1 hunks)
  • platforms/eReputation/client/src/index.css (1 hunks)
  • platforms/eReputation/client/src/lib/authUtils.ts (1 hunks)
  • platforms/eReputation/client/src/lib/queryClient.ts (1 hunks)
  • platforms/eReputation/client/src/lib/utils.ts (1 hunks)
  • platforms/eReputation/client/src/main.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/auth-page.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/dashboard.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/landing.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/not-found.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/references.tsx (1 hunks)
  • platforms/eReputation/components.json (1 hunks)
  • platforms/eReputation/drizzle.config.ts (1 hunks)
  • platforms/eReputation/package.json (1 hunks)
  • platforms/eReputation/postcss.config.js (1 hunks)
  • platforms/eReputation/server/auth.ts (1 hunks)
  • platforms/eReputation/server/db.ts (1 hunks)
  • platforms/eReputation/server/index.ts (1 hunks)
  • platforms/eReputation/server/migrate-data.ts (1 hunks)
  • platforms/eReputation/server/replitAuth.ts (1 hunks)
  • platforms/eReputation/server/routes.ts (1 hunks)
  • platforms/eReputation/server/services/openai.ts (1 hunks)
  • platforms/eReputation/server/services/reputation.ts (1 hunks)
  • platforms/eReputation/server/storage.ts (1 hunks)
  • platforms/eReputation/server/typeorm-db.ts (1 hunks)
  • platforms/eReputation/server/typeorm.config.ts (1 hunks)
  • platforms/eReputation/server/vite.ts (1 hunks)
  • platforms/eReputation/shared/entities.ts (1 hunks)
  • platforms/eReputation/shared/schema-backup.ts (1 hunks)
  • platforms/eReputation/shared/schema.ts (1 hunks)
  • platforms/eReputation/tailwind.config.ts (1 hunks)
  • platforms/eReputation/tsconfig.json (1 hunks)
  • platforms/eReputation/vite.config.ts (1 hunks)

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.

@coodos
coodos marked this pull request as ready for review October 24, 2025 13:50
@coodos
coodos self-requested a review as a code ownerOctober 24, 2025 13:50
@coodos
coodos merged commit 837446d into mainOct 24, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/add-erep branch October 24, 2025 13:51
coodos pushed a commit that referenced this pull request Nov 4, 2025
* feat: add erep
* fix: add readme
* fix: platform path
Sign up for freeto 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

@sosweetham@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add ereputation - #343

Merged
coodos merged 3 commits into
mainfrom
feat/add-erep
Oct 24, 2025
Merged

feat: add ereputation#343
coodos merged 3 commits into
mainfrom
feat/add-erep

Conversation

@sosweetham

@sosweethamsosweetham commented Sep 2, 2025

Copy link
Copy Markdown
Member

Description of change

adds basic frontend and backend code for ereputation

Issue Number

n/a

Type of change

  • New (a change which implements a new feature)

How the change has been tested

n/a

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features
    • Added complete authentication system with email/password login and registration
    • Introduced reputation calculation engine for self and peer evaluation
    • Built reference management system with file attachments and digital signatures
    • Created activity tracking dashboard with real-time updates
    • Added search functionality for users, groups, and platforms
    • Implemented reputation scoring with confidence metrics and historical tracking
    • Enabled reference revocation and status management

@coderabbitai

coderabbitaiBot commented Sep 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

New eReputation platform implementation adding a complete full-stack application with React/TypeScript frontend, Node.js/Express backend, TypeORM database integration, comprehensive UI component library, authentication system, reputation calculation service, and reference management with digital signatures and file uploads.

Changes

Cohort / File(s)Summary
Frontend UI Components
client/src/components/ui/{accordion,alert,alert-dialog,aspect-ratio,avatar,badge,breadcrumb,button,calendar,card,carousel,chart,checkbox,collapsible,command,context-menu,dialog,drawer,dropdown-menu,file-upload,form,hover-card,input-otp,input,label,menubar,navigation-menu,pagination,popover,progress,radio-group,resizable,scroll-area,select,separator,sheet,sidebar,skeleton,slider,switch,table,tabs,textarea,toast,toaster,toggle-group,toggle,tooltip}.tsx
Comprehensive shadcn/ui-style component library (50+ components) providing accessibility-focused UI primitives built on Radix UI and Tailwind CSS, supporting variants, forwarded refs, and consistent styling patterns.
Authentication Pages & Modals
client/src/pages/auth-page.tsx, client/src/pages/landing.tsx
Authentication and landing pages with login/registration forms, email-password flows, and styled branding interface.
Reputation & Reference Features
client/src/components/modals/{other-calculation-modal,self-calculation-modal,view-reputation-modal}.tsx
client/src/pages/{dashboard,references}.tsx
Core feature pages and modals for self/other reputation calculations, reference viewing, dashboard analytics with activity feeds, and reference management workflows with digital signatures.
Reference Management
client/src/components/modals/{reference-modal,reference-view-modal}.tsx
Reference submission and viewing modals with target type selection, content validation, file attachments, and digital signature display.
Client Hooks & Utilities
client/src/hooks/{use-mobile,use-toast,useAuth}.ts
client/src/lib/{authUtils,queryClient,utils}.ts
Custom React hooks for authentication state, toast notifications, mobile detection; utility functions for API requests, class name merging, and error handling.
Frontend Configuration & Setup
client/index.html, client/src/{main,App,index.css}.tsx
vite.config.ts, tailwind.config.ts, postcss.config.js, tsconfig.json, components.json
React entry point, root app component with routing guards, Tailwind color tokens and animations, Vite bundling, TypeScript configuration, and shadcn UI tooling setup.
Backend Authentication
server/auth.ts, server/replitAuth.ts
Email/password session-based authentication with bcrypt hashing and PostgreSQL session store; alternative Replit OpenID Connect auth with multi-domain support and token refresh.
Backend Core Services
server/services/{reputation,openai}.ts
server/storage.ts, server/typeorm-db.ts
ReputationService for calculation orchestration and activity history; OpenAI integration for analysis; DatabaseStorage interface with TypeORM repository abstractions.
Backend API Routes & Server
server/{routes,vite,index}.ts
HTTP route definitions for reputation calculations, references, file uploads, search, and dashboard endpoints; Vite dev server integration and Express middleware setup.
Database & ORM
server/{typeorm.config,migrate-data}.ts
shared/entities.ts, shared/schema.ts, shared/schema-backup.ts
TypeORM DataSource configuration with PostgreSQL; entity definitions (User, ReputationCalculation, Reference, FileUpload, Session); Drizzle schema backup with insert validators.
Database Setup
server/db.ts, drizzle.config.ts
Neon serverless pool configuration with WebSocket support; Drizzle Kit migration settings targeting PostgreSQL.
Project Configuration
package.json, .gitignore, README.md
Root package metadata with scripts, dependencies, devDependencies; build artifact and IDE ignore patterns; comprehensive platform documentation with architecture and migration notes.

Sequence Diagram(s)

sequenceDiagram
actor User
participant Client as React Client
participant Auth as Auth Route
participant DB as Database
participant Reputation as Reputation Service
User->>Client: Navigate to Dashboard
Client->>Auth: GET /api/auth/user
Auth->>DB: Query user session
DB-->>Auth: User data
Auth-->>Client: 200 User authenticated
Client->>Client: Show Dashboard
User->>Client: Click "Calculate Reputation"
Client->>Client: Open SelfCalculationModal
User->>Client: Click "Calculate eReputation"
Client->>Reputation: POST /api/reputation/calculate
Reputation->>Reputation: Generate calculation record
Reputation->>Reputation: Compute score/confidence
Reputation->>DB: Save ReputationCalculation
DB-->>Reputation: Calculation complete
Reputation-->>Client: { score, confidence, analysis }
Client->>Client: Display ViewReputationModal with results
Client->>Client: Refetch dashboard queries
Loading
sequenceDiagram
actor User
participant Client as React Client
participant Reference as Reference API
participant Storage as Storage/DB
participant Files as File System
User->>Client: Open ReferenceModal
Client->>Client: Show target type selector
User->>Client: Select target & write reference
User->>Client: Attach files
Client->>Reference: POST /api/references (FormData)
Reference->>Storage: Create Reference entity
Reference->>Storage: Create FileUpload records
Reference->>Reference: Generate digital signature
Reference->>Files: Save uploaded files
Files-->>Reference: File paths
Reference->>Storage: Update Reference with signature
Storage-->>Reference: Success
Reference-->>Client: 201 Reference created
Client->>Client: Close modal & show toast
Client->>Client: Invalidate references query
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

The PR introduces a substantial, multi-layered application with heterogeneous components spanning frontend UI (50+ components with varied patterns), feature-specific logic (authentication, reputation calculations, reference management), backend services (repositories, API routes, external integrations), and infrastructure (database, ORM, migrations, tooling). While many UI components follow repetitive wrapper patterns around Radix primitives, the business logic in modals, pages, services, and database layers demands individual reasoning. The breadth and depth of changes—affecting React/TypeScript frontend, Node.js backend, PostgreSQL database schema, authentication flows, API design, and configuration—require careful cross-system validation.

Possibly related PRs

  • feat: setup-metagram #121: Introduces identical cn class-name merging utility (clsx + twMerge) for UI component styling, indicating shared helper infrastructure patterns across platforms.

Suggested reviewers

  • sosweetham

Poem

🐰 A warren of components, carefully laid,
From buttons to sidebars, UI's grand trade.
Reputation calculated with digital flair,
References stored with cryptographic care.
Full-stack precision, from client to DB—
The eReputation platform, hop-worthy to see! 🎩✨

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/add-erep

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d4b458e and a08cfec.

⛔ Files ignored due to path filters (1)
  • platforms/eReputation/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (92)
  • platforms/eReputation/.gitignore (1 hunks)
  • platforms/eReputation/README.md (1 hunks)
  • platforms/eReputation/client/index.html (1 hunks)
  • platforms/eReputation/client/src/App.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-view-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/self-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/view-reputation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/accordion.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert-dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/aspect-ratio.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/avatar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/badge.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/breadcrumb.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/button.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/calendar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/carousel.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/chart.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/checkbox.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/collapsible.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/command.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/context-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/drawer.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dropdown-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/file-upload.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/form.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/hover-card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input-otp.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/label.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/menubar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/navigation-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/pagination.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/popover.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/progress.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/radio-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/resizable.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/scroll-area.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/select.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/separator.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sheet.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sidebar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/skeleton.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/slider.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/switch.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/table.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tabs.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/textarea.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toast.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toaster.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tooltip.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-mobile.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-toast.ts (1 hunks)
  • platforms/eReputation/client/src/hooks/useAuth.ts (1 hunks)
  • platforms/eReputation/client/src/index.css (1 hunks)
  • platforms/eReputation/client/src/lib/authUtils.ts (1 hunks)
  • platforms/eReputation/client/src/lib/queryClient.ts (1 hunks)
  • platforms/eReputation/client/src/lib/utils.ts (1 hunks)
  • platforms/eReputation/client/src/main.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/auth-page.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/dashboard.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/landing.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/not-found.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/references.tsx (1 hunks)
  • platforms/eReputation/components.json (1 hunks)
  • platforms/eReputation/drizzle.config.ts (1 hunks)
  • platforms/eReputation/package.json (1 hunks)
  • platforms/eReputation/postcss.config.js (1 hunks)
  • platforms/eReputation/server/auth.ts (1 hunks)
  • platforms/eReputation/server/db.ts (1 hunks)
  • platforms/eReputation/server/index.ts (1 hunks)
  • platforms/eReputation/server/migrate-data.ts (1 hunks)
  • platforms/eReputation/server/replitAuth.ts (1 hunks)
  • platforms/eReputation/server/routes.ts (1 hunks)
  • platforms/eReputation/server/services/openai.ts (1 hunks)
  • platforms/eReputation/server/services/reputation.ts (1 hunks)
  • platforms/eReputation/server/storage.ts (1 hunks)
  • platforms/eReputation/server/typeorm-db.ts (1 hunks)
  • platforms/eReputation/server/typeorm.config.ts (1 hunks)
  • platforms/eReputation/server/vite.ts (1 hunks)
  • platforms/eReputation/shared/entities.ts (1 hunks)
  • platforms/eReputation/shared/schema-backup.ts (1 hunks)
  • platforms/eReputation/shared/schema.ts (1 hunks)
  • platforms/eReputation/tailwind.config.ts (1 hunks)
  • platforms/eReputation/tsconfig.json (1 hunks)
  • platforms/eReputation/vite.config.ts (1 hunks)

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.

@coodos
coodos marked this pull request as ready for review October 24, 2025 13:50
@coodos
coodos self-requested a review as a code ownerOctober 24, 2025 13:50
@coodos
coodos merged commit 837446d into mainOct 24, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/add-erep branch October 24, 2025 13:51
coodos pushed a commit that referenced this pull request Nov 4, 2025
* feat: add erep
* fix: add readme
* fix: platform path
Sign up for freeto 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

@sosweetham@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat: add ereputation - #343

Merged
coodos merged 3 commits into
mainfrom
feat/add-erep
Oct 24, 2025
Merged

feat: add ereputation#343
coodos merged 3 commits into
mainfrom
feat/add-erep

Conversation

@sosweetham

@sosweethamsosweetham commented Sep 2, 2025

Copy link
Copy Markdown
Member

Description of change

adds basic frontend and backend code for ereputation

Issue Number

n/a

Type of change

  • New (a change which implements a new feature)

How the change has been tested

n/a

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features
    • Added complete authentication system with email/password login and registration
    • Introduced reputation calculation engine for self and peer evaluation
    • Built reference management system with file attachments and digital signatures
    • Created activity tracking dashboard with real-time updates
    • Added search functionality for users, groups, and platforms
    • Implemented reputation scoring with confidence metrics and historical tracking
    • Enabled reference revocation and status management

@coderabbitai

coderabbitaiBot commented Sep 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

New eReputation platform implementation adding a complete full-stack application with React/TypeScript frontend, Node.js/Express backend, TypeORM database integration, comprehensive UI component library, authentication system, reputation calculation service, and reference management with digital signatures and file uploads.

Changes

Cohort / File(s)Summary
Frontend UI Components
client/src/components/ui/{accordion,alert,alert-dialog,aspect-ratio,avatar,badge,breadcrumb,button,calendar,card,carousel,chart,checkbox,collapsible,command,context-menu,dialog,drawer,dropdown-menu,file-upload,form,hover-card,input-otp,input,label,menubar,navigation-menu,pagination,popover,progress,radio-group,resizable,scroll-area,select,separator,sheet,sidebar,skeleton,slider,switch,table,tabs,textarea,toast,toaster,toggle-group,toggle,tooltip}.tsx
Comprehensive shadcn/ui-style component library (50+ components) providing accessibility-focused UI primitives built on Radix UI and Tailwind CSS, supporting variants, forwarded refs, and consistent styling patterns.
Authentication Pages & Modals
client/src/pages/auth-page.tsx, client/src/pages/landing.tsx
Authentication and landing pages with login/registration forms, email-password flows, and styled branding interface.
Reputation & Reference Features
client/src/components/modals/{other-calculation-modal,self-calculation-modal,view-reputation-modal}.tsx
client/src/pages/{dashboard,references}.tsx
Core feature pages and modals for self/other reputation calculations, reference viewing, dashboard analytics with activity feeds, and reference management workflows with digital signatures.
Reference Management
client/src/components/modals/{reference-modal,reference-view-modal}.tsx
Reference submission and viewing modals with target type selection, content validation, file attachments, and digital signature display.
Client Hooks & Utilities
client/src/hooks/{use-mobile,use-toast,useAuth}.ts
client/src/lib/{authUtils,queryClient,utils}.ts
Custom React hooks for authentication state, toast notifications, mobile detection; utility functions for API requests, class name merging, and error handling.
Frontend Configuration & Setup
client/index.html, client/src/{main,App,index.css}.tsx
vite.config.ts, tailwind.config.ts, postcss.config.js, tsconfig.json, components.json
React entry point, root app component with routing guards, Tailwind color tokens and animations, Vite bundling, TypeScript configuration, and shadcn UI tooling setup.
Backend Authentication
server/auth.ts, server/replitAuth.ts
Email/password session-based authentication with bcrypt hashing and PostgreSQL session store; alternative Replit OpenID Connect auth with multi-domain support and token refresh.
Backend Core Services
server/services/{reputation,openai}.ts
server/storage.ts, server/typeorm-db.ts
ReputationService for calculation orchestration and activity history; OpenAI integration for analysis; DatabaseStorage interface with TypeORM repository abstractions.
Backend API Routes & Server
server/{routes,vite,index}.ts
HTTP route definitions for reputation calculations, references, file uploads, search, and dashboard endpoints; Vite dev server integration and Express middleware setup.
Database & ORM
server/{typeorm.config,migrate-data}.ts
shared/entities.ts, shared/schema.ts, shared/schema-backup.ts
TypeORM DataSource configuration with PostgreSQL; entity definitions (User, ReputationCalculation, Reference, FileUpload, Session); Drizzle schema backup with insert validators.
Database Setup
server/db.ts, drizzle.config.ts
Neon serverless pool configuration with WebSocket support; Drizzle Kit migration settings targeting PostgreSQL.
Project Configuration
package.json, .gitignore, README.md
Root package metadata with scripts, dependencies, devDependencies; build artifact and IDE ignore patterns; comprehensive platform documentation with architecture and migration notes.

Sequence Diagram(s)

sequenceDiagram
actor User
participant Client as React Client
participant Auth as Auth Route
participant DB as Database
participant Reputation as Reputation Service
User->>Client: Navigate to Dashboard
Client->>Auth: GET /api/auth/user
Auth->>DB: Query user session
DB-->>Auth: User data
Auth-->>Client: 200 User authenticated
Client->>Client: Show Dashboard
User->>Client: Click "Calculate Reputation"
Client->>Client: Open SelfCalculationModal
User->>Client: Click "Calculate eReputation"
Client->>Reputation: POST /api/reputation/calculate
Reputation->>Reputation: Generate calculation record
Reputation->>Reputation: Compute score/confidence
Reputation->>DB: Save ReputationCalculation
DB-->>Reputation: Calculation complete
Reputation-->>Client: { score, confidence, analysis }
Client->>Client: Display ViewReputationModal with results
Client->>Client: Refetch dashboard queries
Loading
sequenceDiagram
actor User
participant Client as React Client
participant Reference as Reference API
participant Storage as Storage/DB
participant Files as File System
User->>Client: Open ReferenceModal
Client->>Client: Show target type selector
User->>Client: Select target & write reference
User->>Client: Attach files
Client->>Reference: POST /api/references (FormData)
Reference->>Storage: Create Reference entity
Reference->>Storage: Create FileUpload records
Reference->>Reference: Generate digital signature
Reference->>Files: Save uploaded files
Files-->>Reference: File paths
Reference->>Storage: Update Reference with signature
Storage-->>Reference: Success
Reference-->>Client: 201 Reference created
Client->>Client: Close modal & show toast
Client->>Client: Invalidate references query
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

The PR introduces a substantial, multi-layered application with heterogeneous components spanning frontend UI (50+ components with varied patterns), feature-specific logic (authentication, reputation calculations, reference management), backend services (repositories, API routes, external integrations), and infrastructure (database, ORM, migrations, tooling). While many UI components follow repetitive wrapper patterns around Radix primitives, the business logic in modals, pages, services, and database layers demands individual reasoning. The breadth and depth of changes—affecting React/TypeScript frontend, Node.js backend, PostgreSQL database schema, authentication flows, API design, and configuration—require careful cross-system validation.

Possibly related PRs

  • feat: setup-metagram #121: Introduces identical cn class-name merging utility (clsx + twMerge) for UI component styling, indicating shared helper infrastructure patterns across platforms.

Suggested reviewers

  • sosweetham

Poem

🐰 A warren of components, carefully laid,
From buttons to sidebars, UI's grand trade.
Reputation calculated with digital flair,
References stored with cryptographic care.
Full-stack precision, from client to DB—
The eReputation platform, hop-worthy to see! 🎩✨

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/add-erep

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d4b458e and a08cfec.

⛔ Files ignored due to path filters (1)
  • platforms/eReputation/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (92)
  • platforms/eReputation/.gitignore (1 hunks)
  • platforms/eReputation/README.md (1 hunks)
  • platforms/eReputation/client/index.html (1 hunks)
  • platforms/eReputation/client/src/App.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/other-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/reference-view-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/self-calculation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/modals/view-reputation-modal.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/accordion.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert-dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/alert.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/aspect-ratio.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/avatar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/badge.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/breadcrumb.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/button.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/calendar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/carousel.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/chart.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/checkbox.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/collapsible.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/command.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/context-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dialog.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/drawer.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/dropdown-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/file-upload.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/form.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/hover-card.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input-otp.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/input.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/label.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/menubar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/navigation-menu.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/pagination.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/popover.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/progress.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/radio-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/resizable.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/scroll-area.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/select.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/separator.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sheet.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/sidebar.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/skeleton.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/slider.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/switch.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/table.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tabs.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/textarea.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toast.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toaster.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle-group.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/toggle.tsx (1 hunks)
  • platforms/eReputation/client/src/components/ui/tooltip.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-mobile.tsx (1 hunks)
  • platforms/eReputation/client/src/hooks/use-toast.ts (1 hunks)
  • platforms/eReputation/client/src/hooks/useAuth.ts (1 hunks)
  • platforms/eReputation/client/src/index.css (1 hunks)
  • platforms/eReputation/client/src/lib/authUtils.ts (1 hunks)
  • platforms/eReputation/client/src/lib/queryClient.ts (1 hunks)
  • platforms/eReputation/client/src/lib/utils.ts (1 hunks)
  • platforms/eReputation/client/src/main.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/auth-page.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/dashboard.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/landing.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/not-found.tsx (1 hunks)
  • platforms/eReputation/client/src/pages/references.tsx (1 hunks)
  • platforms/eReputation/components.json (1 hunks)
  • platforms/eReputation/drizzle.config.ts (1 hunks)
  • platforms/eReputation/package.json (1 hunks)
  • platforms/eReputation/postcss.config.js (1 hunks)
  • platforms/eReputation/server/auth.ts (1 hunks)
  • platforms/eReputation/server/db.ts (1 hunks)
  • platforms/eReputation/server/index.ts (1 hunks)
  • platforms/eReputation/server/migrate-data.ts (1 hunks)
  • platforms/eReputation/server/replitAuth.ts (1 hunks)
  • platforms/eReputation/server/routes.ts (1 hunks)
  • platforms/eReputation/server/services/openai.ts (1 hunks)
  • platforms/eReputation/server/services/reputation.ts (1 hunks)
  • platforms/eReputation/server/storage.ts (1 hunks)
  • platforms/eReputation/server/typeorm-db.ts (1 hunks)
  • platforms/eReputation/server/typeorm.config.ts (1 hunks)
  • platforms/eReputation/server/vite.ts (1 hunks)
  • platforms/eReputation/shared/entities.ts (1 hunks)
  • platforms/eReputation/shared/schema-backup.ts (1 hunks)
  • platforms/eReputation/shared/schema.ts (1 hunks)
  • platforms/eReputation/tailwind.config.ts (1 hunks)
  • platforms/eReputation/tsconfig.json (1 hunks)
  • platforms/eReputation/vite.config.ts (1 hunks)

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.

@coodos
coodos marked this pull request as ready for review October 24, 2025 13:50
@coodos
coodos self-requested a review as a code ownerOctober 24, 2025 13:50
@coodos
coodos merged commit 837446d into mainOct 24, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/add-erep branch October 24, 2025 13:51
coodos pushed a commit that referenced this pull request Nov 4, 2025
* feat: add erep
* fix: add readme
* fix: platform path
Sign up for freeto 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

@sosweetham@coodos