Comprehensive site update: proxy migration, nav header, 12 portfolio projects, SEO overhaul#8
Conversation
- Rename middleware.ts → proxy.ts and export function middleware → proxy (Next.js 16 deprecated the middleware file convention) - Return NextResponse.next() explicitly instead of undefined for locale-prefixed paths - Add .html to matcher exclusions for static verification files - Fix CSP: frame-ancestors 'self' (was 'none', conflicting with X-Frame-Options: SAMEORIGIN), allow form-action to tally.so https://claude.ai/code/session_01WHVCeDoLZEN6a4qi9kkJ5s
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
PR Review: Migrate middleware to proxy for Next.js 16 compatibilityOverall this is a clean, well-scoped PR with a clear purpose. Changes are minimal and each is explained in the summary. A few notes below. ✅ Looks Good
|
- robots.txt: Add 2025/2026 AI bots (OAI-SearchBot, Meta-ExternalAgent, Deepseekbot, YouBot, cohere-ai, Amazonbot), block bad bots (Bytespider, DotBot, MJ12bot), rate-limit SEO crawlers (AhrefsBot, SemrushBot) - llms.txt: Expand with founder details, location coordinates, tech stack, language availability, product categories, and Dubai Blockchain Center link - site.webmanifest: Split icon purposes into separate entries per spec (one "any", one "maskable"), add scope and orientation fields, add finance and software categories - Structured data: Upgrade Organization schema with legalName, slogan, foundingLocation, image, areaServed, knowsLanguage, contactPoint languages, founder jobTitle. Replace LocalBusiness with ProfessionalService. Add ReadAction to WebPage, logo dimensions to ImageObject - Metadata: Add formatDetection to disable auto-linking of phones/emails - FAQ: Add 5th Q&A about bonuz ID across all 4 locale dictionaries (en, de, ar, zh) and FAQPage schema for better rich snippet coverage - Proxy: Set x-next-pathname header for locale-aware 404 page detection https://claude.ai/code/session_01WHVCeDoLZEN6a4qi9kkJ5s
PR Review: Fix: Migrate middleware to proxy + comprehensive SEO & marketing updateOverall this is a well-structured PR with good SEO intent, but there is one critical correctness issue that needs to be resolved before merging, plus a few other concerns. 🚨 Critical:
|
| Area | Status |
|---|---|
proxy.ts rename |
🚨 Needs verification before merge |
CSP frame-ancestors |
|
| Structured data | ✅ Well done |
| FAQ translations | ✅ Consistent and complete |
| robots.txt | ✅ Reasonable additions |
| site.webmanifest | ✅ Correct per spec |
| Test plan |
- Replace standalone fixed logo with proper <header> containing logo + nav bar with 4 links: What we do, Our work, Founder, Send Request - Header is fixed with glassmorphic backdrop blur, transparent bg - Nav links use existing dictionary translations (all 4 locales) - "Send Request" link styled as subtle CTA button - RTL-aware layout using logical properties (padding-inline-end) - Responsive: smaller on tablet, hidden nav on mobile (<480px) - Language switcher repositioned to align with header height https://claude.ai/code/session_01WHVCeDoLZEN6a4qi9kkJ5s
PR Review: Fix: Migrate middleware to proxy + comprehensive SEO & marketing updateOverall this is a well-structured PR with clear intent. A few issues deserve attention before merging. 🚨 Critical: Verify
|
- bonuz Events (app.bonuz.xyz): Event platform for real-world and digital events, natively integrated with the bonuz ecosystem. Events created via Partner Dashboard surface here for user discovery. - Onchain Chess (onchainchess.com): Fully onchain player-vs-player chess game with blockchain-recorded moves. - Habibi Pass (habibipass.bonuz.xyz): Tourist engagement platform for UAE connecting visitors with local businesses through vouchers and rewards. - All 3 products added to all 4 locale dictionaries (en, de, ar, zh) - Cards use same SpotlightCard style with external links - Schema.org SoftwareApplication structured data added for each (GameApplication, SocialNetworkingApplication, TravelApplication) https://claude.ai/code/session_01WHVCeDoLZEN6a4qi9kkJ5s
PR ReviewOverall this is a solid SEO/content update, but there is one critical bug that would break the site in production. 🔴 Critical:
|
| Severity | Issue |
|---|---|
| 🔴 Critical | proxy.ts rename breaks middleware — revert file/export name |
| 🟡 Medium | Mobile nav hidden with no fallback below 480px |
| 🟡 Low | frame-ancestors 'self' relaxes clickjacking protection |
The middleware rename is a blocker — everything else can ship. Happy to review a revised version once that's addressed.
- Add glassmorphic hamburger menu for mobile (<640px) with same visual style as language switcher: backdrop blur, rounded dropdown, smooth open/close animation, click-outside-to-close - Desktop nav stays as inline links, mobile shows hamburger icon that opens a dropdown with all 4 nav items - Menu renders translated labels for all 4 locales (en/de/ar/zh) - Update llms.txt with 3 new products: bonuz Events, Onchain Chess, Habibi Pass (descriptions, URLs, categories) and updated Links section https://claude.ai/code/session_01WHVCeDoLZEN6a4qi9kkJ5s
PR ReviewOverall this is a well-structured PR with clear SEO, marketing, and UX improvements. A few items need attention before merging — one potentially breaking. 🚨 Critical: Verify
|
| Count | |
|---|---|
| 🚨 Critical (verify before merge) | 1 |
| 4 | |
| ✅ Approved patterns | 8+ |
The middleware rename is the only hard blocker — if confirmed working with the current Next.js version, this PR is otherwise solid with the minor nits addressed.
New projects: - UAE971 (uae971.social): National creator index tracking voices building UAE's global reputation on social media across all 7 Emirates - SkyShield (skyshield.bonuz.tech): Non-profit, open-source research concept exploring commercial FPV drones for community coastal defense. All research published openly — contribution toward a safer world - Kilocorn (kilocorn.com): Trillion-dollar index defining the kilocorn era, tracking companies/assets valued at $1T+ Updates: - Rename "Next Layer" to "bonuz Next Layer" with updated description focused on augmented reality and smart glasses ecosystem integration - Reorder cards: products first, then Kilocorn (3rd last), White-label (2nd last), Consulting (last), bonuz Next Layer at the very end - All 12 cards translated in all 4 locales (en/de/ar/zh) - Schema.org SoftwareApplication data for UAE971 and Kilocorn (SkyShield excluded as non-profit research, not a product) - llms.txt updated with all 3 new projects and links https://claude.ai/code/session_01WHVCeDoLZEN6a4qi9kkJ5s
PR ReviewOverall this PR is a well-structured content and SEO update, but there is one critical bug that will break the application in production. CRITICAL BUG: middleware.ts renamed to proxy.ts breaks locale routingThe PR claims Next.js 16 deprecated the middleware file convention — this is not accurate. Next.js 16 does not deprecate middleware.ts, and there is no proxy convention in Next.js. The framework specifically looks for a file named middleware.ts or middleware.js at the project root. Renaming it to proxy.ts and exporting proxy instead of middleware will completely disable:
The file MUST be named middleware.ts and the export MUST be named middleware for Next.js to pick it up. The other improvements in this PR (returning NextResponse.next() explicitly, setting x-next-pathname, adding .html to the matcher) are good fixes — they just need to stay in middleware.ts. Security: CSP frame-ancestors relaxationframe-ancestors none was changed to frame-ancestors self in next.config.ts. The original none provides stronger clickjacking protection. This change relaxes security without a clear benefit unless the site needs to be embedded in same-origin iframes. Consider keeping none unless there is a specific use case. The form-action addition of tally.so is appropriate given the contact form integration. Minor: Desktop nav duplicates the CTA linkIn components/HomePage.tsx, navLinks has 4 items but the desktop nav iterates navLinks.slice(0, 3) then hardcodes the 4th link separately. The label and href exist in two places, so a future change requires updating both. Consider referencing navLinks[3] directly for the CTA. Minor: Mobile menu missing Escape key handlerThe mobile menu closes on click-outside but has no Escape key handler. Keyboard users expect Escape to close open menus. Adding a keydown listener for Escape in the same useEffect would address this. What is Good
Summary
The SEO, content, and manifest changes are all solid. The blocking issue is the middleware rename — once that is resolved this looks ready to merge. |
Summary
Comprehensive update to the bonuz.tech website covering bug fixes, SEO optimization, navigation, and portfolio expansion.
Bug Fix: Next.js 16 Compatibility
middleware.tstoproxy.ts(Next.js 16 deprecated middleware convention)middlewaretoproxyNextResponse.next()explicitly instead ofundefinedx-next-pathnameheader for locale-aware 404 pages.htmlto matcher exclusions for static verification filesNavigation Header
Portfolio: 12 Project Cards in "Our Work"
SEO & Structured Data
formatDetectionto disable auto-linking, enhanced robots directivesAI Discoverability & Crawlers
robots.txt: Added 10+ AI bots (SearchGPT, Meta-ExternalAgent, DeepSeek, You.com, Cohere, Amazon, Google-InspectionTool). Blocked bad bots (Bytespider, DotBot, MJ12bot). Rate-limited SEO crawlersllms.txt: Expanded from 61 to 100+ lines with all products, founder details, coordinates, tech stack, languagesWeb App & Security
site.webmanifest: Split icon purposes per spec, added scope/orientation/categoriesframe-ancestors 'self'(was'none'), allowtally.soinform-actionFiles Changed (13)
proxy.ts(new, replacesmiddleware.ts)next.config.tsapp/[locale]/layout.tsxapp/globals.csscomponents/HomePage.tsxlib/i18n.tslib/dictionaries/en.tslib/dictionaries/de.tslib/dictionaries/ar.tslib/dictionaries/zh.tspublic/robots.txtpublic/llms.txtpublic/site.webmanifestTest plan
pnpm build— zero warnings, zero errors/en,/de,/ar,/zh)/redirects to/en(307)www.host triggers 301 redirect to non-www/en/nonexistentreturns 404robots.txt,llms.txt,site.webmanifest)https://claude.ai/code/session_01WHVCeDoLZEN6a4qi9kkJ5s