Skip to content

Conversation

@crespofer
Copy link

@crespofer crespofer commented Feb 12, 2026

Why

A lot of routes were missing metadata or were using the same metadata banner

What

Issue(s): #337

Added mostly metadata titles and description through repo (mainly blade)
Added images for metadata banners as well if missing

Test Plan

Visited every page to ensure correct title was displayed
Ran format, lint, typecheck, build

Checklist

  • Database: No schema changes, OR I have contacted the Development Lead to run db:push before merging
  • Environment Variables: No environment variables changed, OR I have contacted the Development Lead to modify them on Coolify BEFORE merging.

Summary by CodeRabbit

Release Notes

  • New Features

    • Added SEO metadata and Open Graph support across admin, hacker, judge, and member pages for improved search visibility and social media sharing.
    • Form pages now display dynamic titles based on the form name.
    • Enhanced social sharing with preview images and descriptions.
  • Bug Fixes

    • Corrected typo in Hackathon Results page title.

@crespofer crespofer self-assigned this Feb 12, 2026
@crespofer crespofer added Minor Small change - 1 reviewer required Global Change modifies code for the entire repository labels Feb 12, 2026
@coderabbitai
Copy link

coderabbitai bot commented Feb 12, 2026

📝 Walkthrough

Walkthrough

This PR adds Next.js page metadata exports to multiple pages across Blade, Club, and Guild applications. Most pages receive static metadata with title and description fields. One dynamic form page uses an async generateMetadata function to fetch form data. The PR also corrects a typo in the judge results page metadata and augments OpenGraph metadata across sponsor and layout files with image entries.

Changes

Cohort / File(s) Summary
Blade Admin & Application Pages (Static Metadata)
apps/blade/src/app/admin/banquet-raffle/page.tsx, apps/blade/src/app/admin/forms/[slug]/page.tsx, apps/blade/src/app/admin/hackathon/control-room/page.tsx, apps/blade/src/app/admin/roles/configure/page.tsx, apps/blade/src/app/admin/roles/manage/page.tsx, apps/blade/src/app/hacker/application/[hackathon-id]/page.tsx, apps/blade/src/app/judge/dashboard/page.tsx, apps/blade/src/app/member/application/page.tsx
Added static metadata exports with page titles and descriptions for SEO purposes. Each adds Metadata type import and exports a constant with title and description properties.
Blade Form Page (Dynamic Metadata)
apps/blade/src/app/forms/[formName]/page.tsx
Added async generateMetadata() function that fetches form details via API and dynamically sets the page title. Returns "Blade | Form Not Found" on API failure for graceful fallback.
Blade Judge Results (Typo Fix)
apps/blade/src/app/judge/results/page.tsx
Corrected metadata title from "Blade | Hackthon Results" to "Blade | Hackathon Results".
OpenGraph Enhancements
apps/blade/src/app/sponsor/page.tsx, apps/club/src/app/layout.tsx, apps/guild/src/app/layout.tsx
Enhanced OpenGraph metadata with images array and properties (title, description, url, siteName) across sponsor and layout files for better social media sharing.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested labels

Blade, Guild, Major

🚥 Pre-merge checks | ✅ 5 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title '[#337] Add metadata across apps' includes the required issue number in brackets, follows the specified format, is under 72 characters (31 chars), and accurately describes the main change—adding metadata across multiple applications.
No Hardcoded Secrets ✅ Passed PR contains only metadata additions (titles, descriptions, Open Graph data, public URLs) for SEO and social sharing. No hardcoded API keys, passwords, tokens, or sensitive credentials found.
Validated Env Access ✅ Passed None of the thirteen modified files contain direct process.env usage; all use static Next.js metadata declarations with the Metadata type from 'next'.
No Typescript Escape Hatches ✅ Passed No TypeScript escape hatches (any, @ts-ignore, @ts-expect-error, or non-null assertions) detected in the modified metadata files.

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

✨ 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 repo/add-metadata

No actionable comments were generated in the recent review. 🎉

Tip

Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord.


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

@crespofer crespofer added the Onboarding Good first issue for onboarding Developers label Feb 12, 2026
@crespofer crespofer requested a review from a team February 12, 2026 02:10
Copy link
Contributor

@alexanderpaolini alexanderpaolini left a comment

Choose a reason for hiding this comment

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

We don't really need nor want SEO or metadata on admin/judge pages. Best to leave that out.

Im curious how it looks in embeds when it's just ${form.title}. I feel like we might want to do Blade | ${form.title} for consistency. If you could include pictures of embeds of either type (or another I missed), I'd appreciate that a lot. There are sites online that'll let you preview metadata -- I think they're good enough for this purpose.

Overall solid; The Open Graph is big 🔥 I'm dying laughing at that typo you fixed

@crespofer
Copy link
Author

We don't really need nor want SEO or metadata on admin/judge pages. Best to leave that out.

Im curious how it looks in embeds when it's just ${form.title}. I feel like we might want to do Blade | ${form.title} for consistency. If you could include pictures of embeds of either type (or another I missed), I'd appreciate that a lot. There are sites online that'll let you preview metadata -- I think they're good enough for this purpose.

Overall solid; The Open Graph is big 🔥 I'm dying laughing at that typo you fixed

Sounds good. Some judge pages already had metadata before I added it like judges/results, should I remove those or keep it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Global Change modifies code for the entire repository Minor Small change - 1 reviewer required Onboarding Good first issue for onboarding Developers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants