Skip to content

updated demo redirect handling (#164) - #182

Merged
Dargon789 merged 3 commits into
mainfrom
master
May 11, 2026
Merged

updated demo redirect handling (#164)#182
Dargon789 merged 3 commits into
mainfrom
master

Conversation

@Dargon789

@Dargon789 Dargon789 commented May 11, 2026

Copy link
Copy Markdown
Owner

  • Create static.yml (Create static.yml #36)

  • Summary by Sourcery Add a new GitHub Actions workflow to build and deploy static content to GitHub Pages.

CI:

Create .github/workflows/static.yml to trigger deployments on pushes to main and manual dispatch Configure permissions for GITHUB_TOKEN and set concurrency to avoid canceling in-progress runs Define a deploy job that checks out the repo, configures Pages, uploads the site artifact, and deploys to GitHub Pages

Vercel Web Analytics Integration

Successfully configured Vercel Web Analytics for the mempool Angular application.

Changes Made:

1. Created New File:

  • frontend/src/app/services/analytics.service.ts - New Angular service to initialize Vercel Analytics
    • Implements proper environment-aware configuration
    • Uses inject() function from @vercel/analytics package
    • Automatically switches between 'production' and 'development' modes based on environment configuration

2. Modified Files:

  • frontend/src/app/app.module.ts - Added AnalyticsService to the providers array
  • frontend/src/app/components/app/app.component.ts - Injected AnalyticsService into the root component to ensure it initializes on app startup
  • frontend/package.json - Added @vercel/analytics ^2.0.1 to dependencies (was already present, order normalized)
  • frontend/package-lock.json - Updated lock file to reflect dependency tree

Implementation Details:

The implementation follows best practices for Angular applications:

  1. Service-Based Architecture: Created a dedicated AnalyticsService that encapsulates the Vercel Analytics initialization logic
  2. Environment-Aware Configuration: The service automatically detects whether the app is running in production or development mode and configures analytics accordingly
  3. Singleton Pattern: The service uses providedIn: 'root' to ensure a single instance across the application
  4. Early Initialization: The service is injected into the root AppComponent to ensure analytics are initialized as early as possible in the application lifecycle

Technical Approach:

Since Vercel Analytics doesn't have specific Angular instructions in their documentation, I used their vanilla JavaScript/TypeScript approach with the inject() function. This is the recommended pattern for frameworks without dedicated integrations.

The configuration passes a mode parameter to control whether analytics run in development or production mode:

  • Production mode: Full analytics tracking enabled
  • Development mode: Analytics can be tested without affecting production data

Verification:

  • ✅ TypeScript compilation passes without errors
  • ✅ Linter runs successfully with no new errors introduced
  • ✅ Package is properly installed (@vercel/analytics@2.0.1)
  • ✅ Service is properly registered in Angular's dependency injection system

Next Steps:

To enable Web Analytics on Vercel:

  1. Navigate to your Vercel dashboard
  2. Select the project
  3. Go to the Analytics section
  4. Click "Enable" to activate Web Analytics
  5. Deploy the application to see analytics data

The analytics will automatically start tracking page views and web vitals once the application is deployed and the feature is enabled in the Vercel dashboard.


Summary by Sourcery

Integrate Vercel Web Analytics into the Angular frontend and ensure it initializes on app startup.

New Features:

  • Add an Angular AnalyticsService that initializes Vercel Web Analytics with environment-aware configuration.

Enhancements:

  • Register the AnalyticsService in the app module and root component so analytics are started when the application loads.
  • Update frontend dependencies to include the @vercel/analytics package.

* Create cargo.yml (#31)

Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>

* Create web3_defi_gamefi.yml (#33)

Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>

* Create SECURITY.md (#34)

* Create SECURITY.md

Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>

* Update SECURITY.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>

---------

Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Create static.yml (#36)

* Summary by Sourcery
Add a new GitHub Actions workflow to build and deploy static content to GitHub Pages.

CI:

Create .github/workflows/static.yml to trigger deployments on pushes to main and manual dispatch
Configure permissions for GITHUB_TOKEN and set concurrency to avoid canceling in-progress runs
Define a deploy job that checks out the repo, configures Pages, uploads the site artifact, and deploys to GitHub Pages

Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>

* Potential fix for code scanning alert no. 33: Client-side cross-site scripting (#39)

Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 8: Workflow does not contain permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>

* Update .circleci/web3_defi_gamefi.yml

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>

* Potential fix for pull request finding 'CodeQL / Client-side cross-site scripting'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Potential fix for pull request finding 'CodeQL / Replacement of a substring with itself'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Install Vercel Web Analytics (#167)

## Vercel Web Analytics Integration

Successfully configured Vercel Web Analytics for the mempool Angular application.

### Changes Made:

#### 1. Created New File:
- **frontend/src/app/services/analytics.service.ts** - New Angular service to initialize Vercel Analytics
  - Implements proper environment-aware configuration
  - Uses `inject()` function from `@vercel/analytics` package
  - Automatically switches between 'production' and 'development' modes based on environment configuration

#### 2. Modified Files:
- **frontend/src/app/app.module.ts** - Added AnalyticsService to the providers array
- **frontend/src/app/components/app/app.component.ts** - Injected AnalyticsService into the root component to ensure it initializes on app startup
- **frontend/package.json** - Added @vercel/analytics ^2.0.1 to dependencies (was already present, order normalized)
- **frontend/package-lock.json** - Updated lock file to reflect dependency tree

### Implementation Details:

The implementation follows best practices for Angular applications:

1. **Service-Based Architecture**: Created a dedicated `AnalyticsService` that encapsulates the Vercel Analytics initialization logic
2. **Environment-Aware Configuration**: The service automatically detects whether the app is running in production or development mode and configures analytics accordingly
3. **Singleton Pattern**: The service uses `providedIn: 'root'` to ensure a single instance across the application
4. **Early Initialization**: The service is injected into the root `AppComponent` to ensure analytics are initialized as early as possible in the application lifecycle

### Technical Approach:

Since Vercel Analytics doesn't have specific Angular instructions in their documentation, I used their vanilla JavaScript/TypeScript approach with the `inject()` function. This is the recommended pattern for frameworks without dedicated integrations.

The configuration passes a `mode` parameter to control whether analytics run in development or production mode:
- **Production mode**: Full analytics tracking enabled
- **Development mode**: Analytics can be tested without affecting production data

### Verification:

- ✅ TypeScript compilation passes without errors
- ✅ Linter runs successfully with no new errors introduced
- ✅ Package is properly installed (@vercel/analytics@2.0.1)
- ✅ Service is properly registered in Angular's dependency injection system

### Next Steps:

To enable Web Analytics on Vercel:
1. Navigate to your Vercel dashboard
2. Select the project
3. Go to the Analytics section
4. Click "Enable" to activate Web Analytics
5. Deploy the application to see analytics data

The analytics will automatically start tracking page views and web vitals once the application is deployed and the feature is enabled in the Vercel dashboard.

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>

---------

Signed-off-by: AU_gdev_19 <64915515+Dargon789@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>
Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
@vercel

vercel Bot commented May 11, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
mempool Ready Ready Preview, Comment May 11, 2026 7:31am

@sourcery-ai

sourcery-ai Bot commented May 11, 2026

Copy link
Copy Markdown

Reviewer's Guide

Integrates Vercel Web Analytics into the Angular frontend by adding a dedicated AnalyticsService that initializes analytics at app startup, wiring it into the root module/component, and updating dependencies accordingly.

Sequence diagram for Angular app startup with Vercel Analytics initialization

sequenceDiagram
  actor User
  participant Browser
  participant AngularRuntime
  participant AppComponent
  participant AnalyticsService
  participant VercelAnalyticsSDK

  User->>Browser: Load application URL
  Browser->>AngularRuntime: Bootstrap Angular app
  AngularRuntime->>AppComponent: Instantiate root component
  AppComponent->>AnalyticsService: Inject service via constructor
  AnalyticsService->>VercelAnalyticsSDK: inject(mode)
  VercelAnalyticsSDK-->>AnalyticsService: Initialize tracking with mode
  AnalyticsService-->>AppComponent: Service ready
  AppComponent-->>User: Render initial UI
Loading

Updated class diagram for AnalyticsService integration into root app component

classDiagram

  class AnalyticsService {
    +constructor()
  }

  class AppComponent {
    -ThemeService themeService
    -Location location
    -ViewportScroller viewportScroller
    -AnalyticsService analyticsService
    -NgbTooltipConfig tooltipConfig
    -string locale
    +ngOnInit()
  }

  class AppModule {
    +providers any[]
  }

  AppComponent --> AnalyticsService : depends_on
  AppModule ..> AnalyticsService : registers_provider
  AppModule ..> AppComponent : bootstraps
Loading

File-Level Changes

Change Details Files
Add Vercel Analytics integration via an Angular service that initializes on app startup.
  • Create AnalyticsService that calls @vercel/analytics inject with environment-based mode selection
  • Register AnalyticsService in the Angular module providers array
  • Inject AnalyticsService into the root AppComponent constructor to eagerly initialize analytics
frontend/src/app/services/analytics.service.ts
frontend/src/app/app.module.ts
frontend/src/app/components/app/app.component.ts
Update frontend dependencies to include Vercel Analytics and normalize ordering.
  • Add @vercel/analytics dependency to package.json
  • Reorder a couple of existing dependencies/devDependencies for consistency
  • Regenerate package-lock.json to capture the new dependency graph
frontend/package.json
frontend/package-lock.json

Tips and commands

Interacting with Sourcery

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

Customizing Your Experience

Access your dashboard to:

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

Getting Help

@snyk-io

snyk-io Bot commented May 11, 2026

Copy link
Copy Markdown

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
🔚 Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Hey - I've found 1 issue, and left some high level feedback:

  • Since AnalyticsService is already marked with providedIn: 'root', you can remove it from the providers array in AppModule to avoid redundant provider configuration.
  • AppComponent injects AnalyticsService without using it; if the intent is to initialize analytics via DI side effects, consider documenting this or exposing an explicit init() method and calling it to make the behavior clearer.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- Since `AnalyticsService` is already marked with `providedIn: 'root'`, you can remove it from the `providers` array in `AppModule` to avoid redundant provider configuration.
- `AppComponent` injects `AnalyticsService` without using it; if the intent is to initialize analytics via DI side effects, consider documenting this or exposing an explicit `init()` method and calling it to make the behavior clearer.

## Individual Comments

### Comment 1
<location path="frontend/src/app/app.module.ts" line_range="32-35" />
<code_context>
 import { CapAddressPipe } from '@app/shared/pipes/cap-address-pipe/cap-address-pipe';
 import { AppPreloadingStrategy } from '@app/app.preloading-strategy';
 import { ServicesApiServices } from '@app/services/services-api.service';
+import { AnalyticsService } from '@app/services/analytics.service';
 import { DatePipe } from '@angular/common';

</code_context>
<issue_to_address>
**suggestion:** Avoid registering AnalyticsService both via `providedIn: 'root'` and in the module `providers` array.

Because it already uses `providedIn: 'root'`, the extra entry in the module’s `providers` is unnecessary and should be removed to keep provider configuration consistent and easy to reason about.

Suggested implementation:

```typescript
import { CapAddressPipe } from '@app/shared/pipes/cap-address-pipe/cap-address-pipe';
import { AppPreloadingStrategy } from '@app/app.preloading-strategy';
import { ServicesApiServices } from '@app/services/services-api.service';
import { DatePipe } from '@angular/common';

```

```typescript
const providers = [
  AppPreloadingStrategy,
  ServicesApiServices,
  PreloadService,
  { provide: HTTP_INTERCEPTORS, useClass: HttpCacheInterceptor, multi: true },
  { provide: ZONE_SERVICE, useClass: ZoneService },
];

```
</issue_to_address>

Fix all in Cursor


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

Comment thread frontend/src/app/app.module.ts

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

This pull request integrates Vercel Analytics into the application by adding the @vercel/analytics dependency and implementing a new AnalyticsService that is initialized within the AppComponent. Feedback was provided to ensure compatibility with Server-Side Rendering (SSR) by wrapping the analytics initialization in an isPlatformBrowser check and aliasing the inject function to avoid naming conflicts with Angular's native inject utility.

Comment thread frontend/src/app/services/analytics.service.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>
@vercel

This comment was marked as resolved.

@Dargon789
Dargon789 merged commit 577c59a into main May 11, 2026
11 of 15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sequence diagram for Vercel analytics initialization on Angular app startup

2 participants