Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(seo): add schema org #976

Merged
merged 5 commits into from
Oct 14, 2024
Merged

feat(seo): add schema org #976

merged 5 commits into from
Oct 14, 2024

Conversation

antoinezanardi
Copy link
Owner

@antoinezanardi antoinezanardi commented Oct 14, 2024

Summary by CodeRabbit

Release Notes for Version 1.34.0

  • New Features

    • Enhanced font management with Nuxt font integration.
    • Dynamic game lobby generation for improved gameplay setup.
    • Player feedback submission feature to enhance user engagement.
  • Performance Improvements

    • Optimized fetching of player groups from the API for better data handling.
  • Chores

    • Updated various dependencies to ensure compatibility and improved performance.
  • SEO Enhancements

    • Introduced schema markup capabilities and updated robots configuration to manage web crawler access.
  • Documentation Updates

    • Improved clarity and organization of the README, including installation instructions and environment variables.
    • Added badges for technologies used and expanded the table of contents.

## [1.34.0](v1.33.0...v1.34.0) (2024-10-14)

### 🚀 Features

* **font:** use nuxt font instead of google plugin ([#970](#970)) ([31ab282](31ab282))
* **game-lobby:** generation on server at demand ([#971](#971)) ([252edcd](252edcd))
* **game:** game feedback submitter ([#969](#969)) ([a6458dd](a6458dd))

### ⚡️ Performances

* **game:** player groups in game from api ([#956](#956)) ([766856e](766856e))

### 🧹 Chore

* **deps:** update antoinezanardi/werewolves-assistant-api docker tag to v1.37.0 ([#951](#951)) ([79eb7a0](79eb7a0))
* **deps:** update dependency @nuxt/devtools to ^1.5.2 ([#939](#939)) ([ef565b8](ef565b8))
* **deps:** update dependency @nuxt/devtools to ^1.6.0 ([#968](#968)) ([672df78](672df78))
* **deps:** update dependency @nuxt/image to ^1.8.1 ([#941](#941)) ([aa8a7ce](aa8a7ce))
* **deps:** update dependency @nuxt/test-utils to ^3.14.3 ([#953](#953)) ([fa793a9](fa793a9))
* **deps:** update dependency @primevue/nuxt-module to ^4.1.0 ([#955](#955)) ([758fa27](758fa27))
* **deps:** update dependency @stylistic/eslint-plugin to ^2.9.0 ([#950](#950)) ([1b93cdc](1b93cdc))
* **deps:** update dependency @vitest/eslint-plugin to ^1.1.5 ([#942](#942)) ([26a84dc](26a84dc))
* **deps:** update dependency @vitest/eslint-plugin to ^1.1.6 ([#948](#948)) ([d950878](d950878))
* **deps:** update dependency @vitest/eslint-plugin to ^1.1.7 ([#960](#960)) ([1a66522](1a66522))
* **deps:** update dependency eslint to ^9.12.0 ([#949](#949)) ([8fd12ae](8fd12ae))
* **deps:** update dependency eslint-plugin-import to ^2.31.0 ([#944](#944)) ([2b10420](2b10420))
* **deps:** update dependency eslint-plugin-vue to ^9.29.0 ([#966](#966)) ([3611a44](3611a44))
* **deps:** update dependency msw to ^2.4.10 ([#965](#965)) ([0feb24b](0feb24b))
* **deps:** update dependency msw to ^2.4.11 ([#972](#972)) ([eb488fc](eb488fc))
* **deps:** update dependency ofetch to ^1.4.1 ([#962](#962)) ([07f7ca7](07f7ca7))
* **deps:** update dependency sass to ^1.79.5 ([#964](#964)) ([0a683aa](0a683aa))
* **deps:** update dependency typescript to ^5.6.3 ([#963](#963)) ([7bdc97d](7bdc97d))
* **deps:** update dependency vue to ^3.5.11 ([#945](#945)) ([582287a](582287a))
* **deps:** update dependency vue to ^3.5.12 ([#967](#967)) ([54641ff](54641ff))
* **deps:** update dependency vue-ellipse-progress to ^2.2.0 ([#946](#946)) ([3cd48c2](3cd48c2))
* **deps:** update node.js to >=20.18.0 ([#947](#947)) ([26b6311](26b6311))
* **deps:** update playwright monorepo to ^1.48.0 ([#961](#961)) ([c676c68](c676c68))
* **deps:** update pnpm to v9.12.0 ([#938](#938)) ([48aaaab](48aaaab))
* **deps:** update pnpm to v9.12.1 ([#954](#954)) ([452305c](452305c))
* **deps:** update typescript-eslint monorepo to ^8.8.1 ([#959](#959)) ([c550664](c550664))
* **deps:** update vitest monorepo to ^2.1.2 ([#940](#940)) ([672d869](672d869))
* **eslint:** import plugin is back ([#952](#952)) ([a5a4673](a5a4673))
* **merge:** from main ([d29a383](d29a383))
@antoinezanardi antoinezanardi added the 🚀 feature New feature or request label Oct 14, 2024
@antoinezanardi antoinezanardi self-assigned this Oct 14, 2024
Copy link

coderabbitai bot commented Oct 14, 2024

Walkthrough

The pull request introduces version 1.34.0 of the Werewolves Assistant Web application, featuring enhancements such as improved font management, dynamic game lobby generation, and a new game feedback mechanism. It also includes performance improvements by fetching player groups from the API. Additionally, several dependencies have been updated, and modifications to configuration files enhance SEO capabilities and runtime settings for testing. The createFakeRuntimeConfig function has been removed, along with its related mock imports.

Changes

File Path Change Summary
CHANGELOG.md Updated to include release notes for version 1.34.0, detailing new features, performance improvements, and dependency updates.
config/vitest/vitest.unit-config.ts Enhanced environmentOptions with an overrides property for runtime configuration settings.
nuxt.config.ts Added "nuxt-schema-org" module, updated robots configuration, and expanded schemaOrg settings.
package.json Updated version to 1.34.0 and added new dependency "nuxt-schema-org": "^3.4.0".
README.md Enhanced documentation with new badges, updated installation instructions, and expanded sections for clarity.
app/components/pages/index/IndexFooter.vue Changed contact email link to use a dynamically generated variable instead of a hardcoded value.
tests/unit/utils/factories/composables/nuxt/useRuntimeConfig.factory.ts Removed createFakeRuntimeConfig function used for mocking runtime configuration.
tests/unit/utils/helpers/mock.helpers.ts Removed import and mock function related to createFakeRuntimeConfig.
tests/acceptance/features/home/features/home.feature Updated link for "Contact the creator" to reflect new email address.
tests/acceptance/features/support/hooks.ts Added new environment variable for contact email in testing configuration.
.github/workflows/deploy-to-production.yml Added NUXT_PUBLIC_CONTACT_EMAIL environment variable for Docker deployment jobs.
.github/workflows/push-on-develop.yml Added NUXT_PUBLIC_CONTACT_EMAIL environment variable for pre-production Docker jobs.
env/.env.example Added NUXT_PUBLIC_CONTACT_EMAIL variable to the example environment file.
Dockerfile Added build argument NUXT_PUBLIC_CONTACT_EMAIL for build and production stages.

Possibly related PRs

🐇 In the meadow where we play,
New features bloom, bright as day.
Fonts now load with such delight,
Game lobbies spring up, oh what a sight!
Feedback flows like a gentle stream,
In our Werewolves world, we all can dream! 🌟


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Outside diff range and nitpick comments (1)
config/vitest/vitest.unit-config.ts (1)

10-22: LGTM! Consider adding a comment for clarity.

The changes to environmentOptions look good. They provide a more specific configuration for the Nuxt environment during testing, which aligns with the PR objectives. The default locale and API base URL settings are appropriate for unit testing.

Consider adding a brief comment explaining the purpose of these runtime configurations, especially for other developers who might work on this file in the future. For example:

 environmentOptions: {
   nuxt: {
     rootDir: fileURLToPath(new URL("../../", import.meta.url)),
     overrides: {
+      // Define runtime configurations for consistent test environment
       runtimeConfig: {
         public: {
           defaultLocale: "en",
           werewolvesAssistantApi: { baseUrl: "http://127.0.0.1" },
         },
       },
     },
   },
 },
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 39f4efc and 9ee181d.

⛔ Files ignored due to path filters (21)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • tests/unit/specs/__snapshots__/app.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/about/AboutAvailableRoles/__snapshots__/AboutAvailableRoles.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyAdditionalCardsManager/GameLobbyAdditionalCardsManagerContent/RecipientRoleAdditionalCardsManager/RecipientRoleAdditionalCardsMultiSelect/__snapshots__/RecipientRoleAdditionalCardsMultiSelect.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyFooter/GameLobbyStartGameButton/GameLobbyStartGameConfirmDialog/GameLobbyStartGameConfirmDialogContainer/GameLobbyStartGameConfirmDialogContent/GameLobbyStartGameConfirmDialogActorAdditionalCardsPlaced/__snapshots__/GameLobbyStartGameConfirmDialogActorAdditionalCardsPlaced.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyFooter/GameLobbyStartGameButton/GameLobbyStartGameConfirmDialog/GameLobbyStartGameConfirmDialogContainer/GameLobbyStartGameConfirmDialogContent/GameLobbyStartGameConfirmDialogGameOptionsChanged/__snapshots__/GameLobbyStartGameConfirmDialogGameOptionsChanged.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyFooter/GameLobbyStartGameButton/GameLobbyStartGameConfirmDialog/GameLobbyStartGameConfirmDialogContainer/GameLobbyStartGameConfirmDialogContent/GameLobbyStartGameConfirmDialogPlayersPositioned/__snapshots__/GameLobbyStartGameConfirmDialogPlayersPositioned.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyFooter/GameLobbyStartGameButton/GameLobbyStartGameConfirmDialog/GameLobbyStartGameConfirmDialogContainer/GameLobbyStartGameConfirmDialogContent/GameLobbyStartGameConfirmDialogThiefAdditionalCardsPlaced/__snapshots__/GameLobbyStartGameConfirmDialogThiefAdditionalCardsPlaced.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyFooter/GameLobbyStartGameButton/GameLobbyStartGameConfirmDialog/GameLobbyStartGameConfirmDialogContainer/GameLobbyStartGameConfirmDialogFooter/__snapshots__/GameLobbyStartGameConfirmDialogFooter.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyGroupOrganizer/GameLobbyGroupOrganizerContent/GameLobbyGroupOrganizerGroupNames/GameLobbyGroupOrganizerGroupNameInput/__snapshots__/GameLobbyGroupOrganizerGroupNameInput.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyGroupOrganizer/GameLobbyGroupOrganizerContent/GameLobbyGroupOrganizerPickList/__snapshots__/GameLobbyGroupOrganizerPickList.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyHeader/GameLobbyHeaderSetupButtons/GameLobbyHeaderAdditionalCardsManagerButton/__snapshots__/GameLobbyHeaderAdditionalCardsManagerButton.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyHeader/GameLobbyHeaderSetupButtons/GameLobbyHeaderGroupOrganizerButton/__snapshots__/GameLobbyHeaderGroupOrganizerButton.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyHeader/GameLobbyHeaderSetupButtons/GameLobbyHeaderOptionsButton/__snapshots__/GameLobbyHeaderOptionsButton.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyOptionsHub/GameLobbyOptionsHubTabView/__snapshots__/GameLobbyOptionsHubTabView.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game-lobby/GameLobbyPlayersParty/GameLobbyPlayerCard/__snapshots__/GameLobbyPlayerCard.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game/GameFeedbackSubmitter/GameFeedbackSubmitterFooter/__snapshots__/GameFeedbackSubmitterFooter.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game/GameOver/GameOverActions/GameOverCreateNewGameButton/__snapshots__/GameOverCreateNewGameButton.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game/GameOver/GameOverActions/__snapshots__/GameOverActions.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game/GamePlaying/GameEventsMonitor/GameEventsMonitorFooter/__snapshots__/GameEventsMonitorFooter.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/game/GamePlaying/GamePlayground/GamePlaygroundContent/GameUsePotionsPlayground/WitchUsePotionsTabView/__snapshots__/WitchUsePotionsTabView.nuxt.spec.ts.snap is excluded by !**/*.snap
📒 Files selected for processing (6)
  • CHANGELOG.md (1 hunks)
  • config/vitest/vitest.unit-config.ts (1 hunks)
  • nuxt.config.ts (3 hunks)
  • package.json (3 hunks)
  • tests/unit/utils/factories/composables/nuxt/useRuntimeConfig.factory.ts (0 hunks)
  • tests/unit/utils/helpers/mock.helpers.ts (0 hunks)
💤 Files with no reviewable changes (2)
  • tests/unit/utils/factories/composables/nuxt/useRuntimeConfig.factory.ts
  • tests/unit/utils/helpers/mock.helpers.ts
🧰 Additional context used
🔇 Additional comments (11)
config/vitest/vitest.unit-config.ts (1)

10-22: Verify impact on existing tests and update documentation

The new runtime configurations introduced here may affect how existing tests are executed. It's important to ensure that these changes don't unintentionally break any existing tests and that they're properly documented.

Please run the following script to check for any test failures that might be caused by these changes:

Consider updating the project's testing documentation to reflect these new runtime configurations. This will help other developers understand how the test environment is set up.

package.json (3)

3-3: LGTM: Version bump to 1.34.0

The version update from 1.33.0 to 1.34.0 is appropriate for introducing a new feature (schema.org support for SEO). This minor version bump correctly indicates new functionality without breaking changes.


Line range hint 1-203: Summary of package.json changes

The changes in this file are minimal and focused:

  1. Version bump to 1.34.0, reflecting the addition of a new feature.
  2. Addition of the nuxt-schema-org module for SEO improvements.

These changes align well with the PR objectives and should enhance the SEO capabilities of the application. The isolated nature of these changes minimizes the risk of unintended side effects on other parts of the project.


150-150: Verify integration of nuxt-schema-org module

The addition of "nuxt-schema-org": "^3.4.0" aligns with the PR objective to add schema.org support for SEO improvements. This is a good choice for implementing structured data in a Nuxt.js project.

Please ensure that:

  1. The module is properly configured in your Nuxt config file.
  2. Schema.org markup is correctly implemented for relevant pages.
  3. You've tested the generated JSON-LD output using Google's Structured Data Testing Tool or Schema Markup Validator.

Run the following script to verify the module's integration:

CHANGELOG.md (5)

3-4: LGTM: Version and date are correctly formatted.

The version number and release date are clearly stated and follow a consistent format.


5-9: LGTM: Features section is well-structured and informative.

The Features section clearly outlines three main additions:

  1. Font management improvement
  2. Dynamic game lobby generation
  3. Game feedback mechanism

Each feature is concisely described, providing a clear understanding of the new functionality.


11-13: LGTM: Performance improvement is clearly stated.

The performance improvement regarding fetching player groups from the API is well-described and its benefit is implied.


15-26: LGTM: Chore updates are comprehensive and well-organized.

The Chore Updates section provides a detailed list of dependency updates, including:

  • Docker tag update for the API
  • Various Nuxt-related package updates
  • ESLint and Vitest plugin updates

This level of detail is helpful for developers to understand the exact changes in the project's dependencies.


1-26: LGTM: Changelog is well-structured and informative.

The CHANGELOG.md file for version 1.34.0 is comprehensive, well-organized, and follows best practices for changelog writing. It clearly communicates the new features, performance improvements, and dependency updates, providing valuable information for both developers and users of the Werewolves Assistant Web application.

nuxt.config.ts (2)

18-18: Ensure proper configuration for 'nuxt-schema-org' module

The 'nuxt-schema-org' module has been added to the modules array. Verify that it's properly configured to utilize its features effectively.


231-238: Confirm client-side rendering for game routes

The ssr: false setting disables server-side rendering for the "/game" and "/game/**" routes. Ensure that client-side rendering is appropriate for these routes and that it doesn't introduce any unintended side effects.

nuxt.config.ts Show resolved Hide resolved
nuxt.config.ts Show resolved Hide resolved
nuxt.config.ts Outdated Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Outside diff range and nitpick comments (12)
app/components/pages/index/IndexFooter.vue (2)

33-36: LGTM: Well-implemented dynamic contact email configuration.

The changes effectively implement the dynamic contact email configuration:

  1. Correctly uses useRuntimeConfig() to access runtime configuration.
  2. Properly extracts the contactEmail from the public config.
  3. Constructs the contactButtonHref using a template literal.

These changes align well with Vue 3 and TypeScript best practices.

Consider adding type annotations for improved type safety:

const runtimeConfig = useRuntimeConfig();
const { contactEmail } = runtimeConfig.public as { contactEmail: string };

const contactButtonHref: string = `mailto:${contactEmail}`;

7-11: Enhance accessibility with aria-label.

To improve accessibility for screen reader users, consider adding an aria-label attribute to the contact button. This will provide more context about the button's purpose.

Here's a suggested modification:

 <a
   id="contact-button"
   class="p-button p-button-secondary"
   :href="contactButtonHref"
+  :aria-label="$t('components.IndexFooter.contactAriaLabel')"
 >

Don't forget to add the corresponding translation key in your localization files.

tests/acceptance/features/support/hooks.ts (1)

Line range hint 22-27: Consider grouping related configuration values

The file contains several configuration values spread across environment variables and runtime config. To improve readability and maintenance, consider grouping related values together.

You could create an object to hold all the test-specific configuration values:

const TEST_CONFIG = {
  API_BASE_URL: WEREWOLVES_ASSISTANT_SANDBOX_API_BASE_URL,
  LOCALE: I18N_TEST_LOCALE,
  CONTACT_EMAIL: "test-contact@your-domain.com",
  SITE_URL: "http://127.0.0.1:4000",
  SITE_NAME: "Werewolves Assistant",
  SITE_ENV: "test",
  SITE_DESCRIPTION: "The perfect tool for game masters of the Werewolves of Miller's Hollow™",
};

Then use this object to set both environment variables and runtime config:

env: {
  NUXT_PUBLIC_WEREWOLVES_ASSISTANT_API_BASE_URL: TEST_CONFIG.API_BASE_URL,
  NUXT_PUBLIC_DEFAULT_LOCALE: TEST_CONFIG.LOCALE,
  NUXT_PUBLIC_CONTACT_EMAIL: TEST_CONFIG.CONTACT_EMAIL,
  NUXT_SITE_URL: TEST_CONFIG.SITE_URL,
  NUXT_SITE_NAME: TEST_CONFIG.SITE_NAME,
  NUXT_SITE_ENV: TEST_CONFIG.SITE_ENV,
  NUXT_SITE_DESCRIPTION: TEST_CONFIG.SITE_DESCRIPTION,
},

// ...

runtimeConfig: {
  public: {
    defaultLocale: TEST_CONFIG.LOCALE,
    werewolvesAssistantApi: { baseUrl: TEST_CONFIG.API_BASE_URL },
    contactEmail: TEST_CONFIG.CONTACT_EMAIL,
  },
},

This approach would centralize all test-specific configuration, making it easier to manage and update in the future.

Also applies to: 41-41

.github/workflows/deploy-to-production.yml (3)

17-17: LGTM! Consider email protection.

Adding a contact email is good for SEO and user communication. However, be aware that exposing an email address publicly may lead to potential spam issues.

Consider using a contact form or an obfuscated email address to protect against spam bots.


33-33: LGTM! Consider using a different email for local environments.

The contact email is consistently applied across different environment configurations. However, for local production environments, it might be beneficial to use a different email address to distinguish between actual production and local testing.

Consider using a placeholder or test email for local environments to avoid confusion and potential accidental communications.


17-17: Overall implementation of contact email is well-executed.

The addition of the NUXT_PUBLIC_CONTACT_EMAIL variable is consistent across all configurations and properly integrated into the build process. This change enhances the application's SEO and communication capabilities.

However, consider the following recommendations:

  1. Implement email protection measures to prevent potential spam issues.
  2. Use different email addresses for production and local/testing environments to avoid confusion.
  3. Ensure that exposing this email as a public environment variable aligns with your security policies.

Before merging, it might be worthwhile to discuss with the team whether this email should be configurable through a more secure method, such as a server-side environment variable or a configuration management system, rather than being hard-coded in the workflow file.

Also applies to: 25-25, 33-33, 41-41, 72-72

.github/workflows/push-on-develop.yml (3)

22-22: LGTM! Consider using a secret for the email address.

The addition of the NUXT_PUBLIC_CONTACT_EMAIL environment variable is a good practice for configuration management. However, since this is a public email address, you might want to consider storing it as a GitHub secret for added flexibility and security.

You could update the line to use a secret like this:

NUXT_PUBLIC_CONTACT_EMAIL: ${{ secrets.NUXT_PUBLIC_CONTACT_EMAIL }}

This would allow you to easily update the email address without changing the workflow file.


71-71: LGTM! Consider aligning the new variable with others for readability.

The addition of NUXT_PUBLIC_CONTACT_EMAIL to the build-args section is correct and necessary to pass this new environment variable to the Docker build process.

For consistency and improved readability, consider aligning the new variable with the others in the build-args section:

build-args: |
  NUXT_PUBLIC_WEREWOLVES_ASSISTANT_API_BASE_URL=${{ matrix.NUXT_PUBLIC_WEREWOLVES_ASSISTANT_API_BASE_URL }}
  NUXT_PUBLIC_DEFAULT_LOCALE=${{ matrix.NUXT_PUBLIC_DEFAULT_LOCALE }}
  NUXT_PUBLIC_CONTACT_EMAIL=${{ matrix.NUXT_PUBLIC_CONTACT_EMAIL }}
  NUXT_SITE_URL=${{ matrix.NUXT_SITE_URL }}
  NUXT_SITE_NAME=${{ matrix.NUXT_SITE_NAME }}
  NUXT_SITE_ENV=${{ matrix.NUXT_SITE_ENV }}
  NUXT_SITE_DESCRIPTION=${{ matrix.NUXT_SITE_DESCRIPTION }}

Line range hint 22-71: Overall, the changes look good with room for minor improvements.

The addition of NUXT_PUBLIC_CONTACT_EMAIL across all environments and its integration into the Docker build process is well-implemented and consistent. This change improves the configuration management of the project by allowing a configurable contact email.

To further enhance this implementation, consider the following suggestions:

  1. Use a GitHub secret for the email address to improve flexibility and security.
  2. Align the new variable in the build-args section for better readability.

These minor improvements will make the configuration more maintainable and secure in the long run.

README.md (3)

Line range hint 61-67: LGTM with a minor suggestion.

This section effectively explains the purpose of the app and its context as a "next" version. The link to the "about" page is a good addition for those seeking more information.

Consider adding a brief mention of the key features or improvements in this "next" version compared to the current one. This could provide more immediate value to readers without requiring them to navigate away from the README.


Line range hint 100-306: LGTM with a suggestion for improvement.

The screenshots section is comprehensive and well-organized, providing a thorough visual overview of the app's various pages and features. The use of collapsible sections keeps the README clean and easy to navigate.

Suggestion: Consider adding a brief description or caption for each screenshot to provide context and highlight key features visible in the image. This would enhance the value of the screenshots, especially for new users or potential contributors.


Line range hint 411-564: LGTM with a minor suggestion.

The Tests, Env variables, and Code analysis sections are comprehensive and well-documented. They provide clear instructions for running tests, configuring the application, and maintaining code quality.

Suggestion: In the Env variables section, consider grouping related variables or adding subheadings to improve readability, especially as the list of variables grows.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 9ee181d and e604558.

⛔ Files ignored due to path filters (2)
  • tests/unit/specs/__snapshots__/app.nuxt.spec.ts.snap is excluded by !**/*.snap
  • tests/unit/specs/components/pages/index/__snapshots__/IndexFooter.nuxt.spec.ts.snap is excluded by !**/*.snap
📒 Files selected for processing (9)
  • .github/workflows/deploy-to-production.yml (2 hunks)
  • .github/workflows/push-on-develop.yml (2 hunks)
  • README.md (1 hunks)
  • app/components/pages/index/IndexFooter.vue (2 hunks)
  • config/vitest/vitest.unit-config.ts (1 hunks)
  • env/.env.example (1 hunks)
  • nuxt.config.ts (2 hunks)
  • tests/acceptance/features/home/features/home.feature (1 hunks)
  • tests/acceptance/features/support/hooks.ts (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • config/vitest/vitest.unit-config.ts
🧰 Additional context used
🔇 Additional comments (15)
app/components/pages/index/IndexFooter.vue (1)

10-10: LGTM: Improved flexibility for contact email.

The change from a hardcoded email to a dynamic contactButtonHref enhances the component's flexibility and maintainability. This approach allows for easier configuration of the contact email without modifying the component's code.

.github/workflows/deploy-to-production.yml (2)

25-25: LGTM! Consistent with previous configuration.

The contact email is consistently applied across different language configurations, which is good for maintaining uniformity in the deployment process.


41-41: LGTM! Proper integration of the new environment variable.

The contact email is consistently added to all configurations, including the English local production environment. Additionally, the variable is correctly added to the Docker build arguments, ensuring it's available in the application environment.

Also applies to: 72-72

.github/workflows/push-on-develop.yml (3)

30-30: LGTM! Consistent with the previous change.

The addition of the NUXT_PUBLIC_CONTACT_EMAIL for the preprod-en tag is consistent with the change made for the preprod-fr tag. This ensures that both language versions use the same contact email.

Please refer to the previous comment regarding the use of a GitHub secret for the email address.


38-38: LGTM! Consistent with previous changes.

The addition of the NUXT_PUBLIC_CONTACT_EMAIL for the local-preprod-fr tag is consistent with the changes made for the other tags. This ensures that the local preprod environment uses the same contact email.

Please refer to the previous comments regarding the use of a GitHub secret for the email address.


46-46: LGTM! Consistent across all environments.

The addition of the NUXT_PUBLIC_CONTACT_EMAIL for the local-preprod-en tag completes the consistent application of this variable across all environments and language versions.

Please refer to the previous comments regarding the use of a GitHub secret for the email address.

README.md (8)

Line range hint 1-40: LGTM: Comprehensive project overview and status badges.

The header section provides a clear and visually appealing introduction to the project. The inclusion of various badges for build status, code quality, and test coverage gives potential contributors and users a quick overview of the project's health.


Line range hint 42-59: LGTM: Well-structured table of contents.

The table of contents is comprehensive and well-organized, providing easy navigation through the document. All major sections are included and properly linked.


Line range hint 69-85: LGTM: Clear distinction between production and development environments.

This section provides valuable information about the different environments, including links to both the web app and API for each. The explanation of when each environment is updated is particularly useful for contributors and users.


Line range hint 87-98: LGTM: Visually appealing presentation of available roles.

The table of available roles is well-formatted and visually engaging. The use of images alongside role names provides a quick and attractive overview of the game's characters.


Line range hint 308-332: LGTM: Clear and concise installation instructions.

The installation section provides clear instructions, including required tools and step-by-step commands. The note about using npm as an alternative to pnpm is helpful for users who might not have pnpm installed.


Line range hint 334-409: LGTM: Comprehensive build and Docker instructions.

The Build section provides a clear command for building the app for production. The Docker section is particularly well-detailed, explaining the various tags available and their specific uses. The inclusion of commands for running the project in different environments using Docker is very helpful for users and contributors.


Line range hint 566-735: LGTM: Comprehensive project management and contribution information.

The final sections of the README provide valuable information on releases, automated workflows, additional development commands, licensing, and contributors. The detailed explanation of GitHub Actions workflows is particularly helpful for understanding the project's CI/CD processes. The inclusion of misc commands and clear attribution to contributors demonstrates good project management and community engagement.


Line range hint 1-735: Excellent README: Comprehensive, well-structured, and informative.

This README is exemplary in its coverage of all aspects of the Werewolves Assistant Web project. It provides clear instructions for setup, development, testing, and deployment, while also offering insights into the project's structure, quality measures, and contribution processes. The use of badges, images, and collapsible sections enhances readability and makes the document both informative and visually appealing.

The minor suggestions provided in previous comments (such as adding brief descriptions to screenshots and grouping environment variables) are small improvements to an already strong document. This README serves as an excellent introduction and reference for both users and potential contributors to the project.

nuxt.config.ts (1)

18-18: Addition of 'nuxt-schema-org' module

The inclusion of the "nuxt-schema-org" module enhances the application's SEO capabilities by enabling structured data integration. Good work on adding this module.

env/.env.example Show resolved Hide resolved
tests/acceptance/features/support/hooks.ts Show resolved Hide resolved
tests/acceptance/features/support/hooks.ts Show resolved Hide resolved
nuxt.config.ts Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (2)
Dockerfile (2)

9-9: LGTM! Consider updating documentation.

The addition of NUXT_PUBLIC_CONTACT_EMAIL as a build argument is consistent with the existing pattern and doesn't affect the build process. This new environment variable will likely be used for contact email purposes in the application.

Consider updating the project's documentation to reflect this new environment variable and its purpose.


Line range hint 1-67: Summary: Minor enhancement to configuration options

The changes to the Dockerfile are minimal and well-implemented. They add a new environment variable NUXT_PUBLIC_CONTACT_EMAIL to both the build and production stages, enhancing the configuration options for the application. This change:

  1. Is consistent with existing patterns in the Dockerfile.
  2. Doesn't introduce any risks to the existing build or production processes.
  3. Likely supports a new feature or improvement related to contact functionality or SEO enhancements.

To fully leverage this change:

  1. Ensure that the NUXT_PUBLIC_CONTACT_EMAIL is properly utilized in the application code.
  2. Update any relevant documentation or README files to include information about this new configuration option.
  3. Consider adding a default value or error handling if the environment variable is not provided during the build process.
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between e604558 and a154db7.

📒 Files selected for processing (4)
  • Dockerfile (2 hunks)
  • app/components/pages/index/IndexFooter.vue (2 hunks)
  • tests/acceptance/features/home/features/home.feature (1 hunks)
  • tests/acceptance/features/support/helpers/hooks.helpers.ts (0 hunks)
💤 Files with no reviewable changes (1)
  • tests/acceptance/features/support/helpers/hooks.helpers.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • app/components/pages/index/IndexFooter.vue
  • tests/acceptance/features/home/features/home.feature
🧰 Additional context used
🔇 Additional comments (1)
Dockerfile (1)

45-45: LGTM! Verify environment variable usage.

The addition of NUXT_PUBLIC_CONTACT_EMAIL in the production stage is consistent with the build stage, ensuring the environment variable is available in production.

To ensure proper usage of this new environment variable, run the following script:

This will help confirm that the new environment variable is being used correctly in the application.

✅ Verification successful

LGTM! Environment variable usage confirmed.

The NUXT_PUBLIC_CONTACT_EMAIL environment variable is properly defined in the Dockerfile and utilized within nuxt.config.ts and the test hooks. No issues detected with its implementation.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of NUXT_PUBLIC_CONTACT_EMAIL in the codebase

# Search for usage of NUXT_PUBLIC_CONTACT_EMAIL
echo "Searching for NUXT_PUBLIC_CONTACT_EMAIL usage:"
rg --type vue --type ts --type js 'NUXT_PUBLIC_CONTACT_EMAIL' -C 3

# Check if the variable is defined in any configuration files
echo "Checking configuration files:"
rg --type yaml --type json 'NUXT_PUBLIC_CONTACT_EMAIL' -C 3

Length of output: 326


Script:

#!/bin/bash
# Description: Verify the usage of NUXT_PUBLIC_CONTACT_EMAIL in the codebase using glob patterns

# Search for usage of NUXT_PUBLIC_CONTACT_EMAIL in .vue, .ts, and .js files
echo "Searching for NUXT_PUBLIC_CONTACT_EMAIL usage in .vue, .ts, and .js files:"
rg 'NUXT_PUBLIC_CONTACT_EMAIL' -g "*.vue" -g "*.ts" -g "*.js" -C 3

# Check if the variable is defined in any configuration files (.yaml, .json)
echo "Checking configuration files for NUXT_PUBLIC_CONTACT_EMAIL:"
rg 'NUXT_PUBLIC_CONTACT_EMAIL' -g "*.yaml" -g "*.yml" -g "*.json" -C 3

Length of output: 1340

Copy link

sonarcloud bot commented Oct 14, 2024

@antoinezanardi antoinezanardi merged commit 13f9eb6 into develop Oct 14, 2024
20 checks passed
@antoinezanardi antoinezanardi deleted the feat/schema-org branch October 14, 2024 12:11
antoinezanardi pushed a commit that referenced this pull request Oct 14, 2024
## [1.35.0](v1.34.0...v1.35.0) (2024-10-14)

### 🚀 Features

* **home:** better seo and new style ([#974](#974)) ([a522cf6](a522cf6))
* **seo:** add schema org ([#976](#976)) ([13f9eb6](13f9eb6))

### 🐛 Bug Fixes

* **game-lobby:** hydration mismatches ([#980](#980)) ([bb9cdf3](bb9cdf3))

### 🎨 Styles

* **scrollbar:** unified styled scrollbars ([#978](#978)) ([bf87ac8](bf87ac8))

### 🧹 Chore

* **deps:** update typescript-eslint monorepo to ^8.9.0 ([#979](#979)) ([54c78d6](54c78d6))
* **deps:** update vitest monorepo to ^2.1.3 ([#977](#977)) ([6ce54b0](6ce54b0))
@antoinezanardi
Copy link
Owner Author

🎉 This PR is included in version 1.35.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🚀 feature New feature or request released
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants