From 233e4d57f0a2dbefb84f1aaa3132459d49b0187f Mon Sep 17 00:00:00 2001 From: pavel444-byte Date: Tue, 6 Oct 2026 19:24:41 +0500 Subject: [PATCH] Improve MineGeo interface and functionality --- app/about/page.tsx | 48 +- app/auth/reset-password/page.tsx | 22 +- app/dashboard/[id]/page.tsx | 6 +- app/dashboard/page.tsx | 29 +- app/downloads/page.tsx | 103 +-- app/error.tsx | 12 +- app/globals.css | 2 + app/layout.tsx | 45 +- app/leaderboard/loading.tsx | 12 +- app/leaderboard/page.tsx | 101 +-- app/log-in/page.tsx | 6 +- app/moderation/page.tsx | 13 +- app/not-found.tsx | 12 +- app/page.tsx | 133 ++-- app/pair/page.tsx | 6 +- app/polish.css | 220 +++++++ app/servers/[id]/page.tsx | 22 +- app/servers/page.tsx | 19 +- app/settings/page.tsx | 17 +- components/AccountSettings.tsx | 40 +- components/Brand.tsx | 9 +- components/CatalogBrowser.tsx | 21 +- components/ContributionInstructions.tsx | 56 +- components/Dashboard.tsx | 85 ++- components/DraftEditor.tsx | 104 +-- components/Game.tsx | 56 +- components/GuessMap.tsx | 13 +- components/I18nProvider.tsx | 45 ++ components/LanguageSwitcher.tsx | 40 ++ components/Leaderboard.tsx | 80 ++- components/MapAppeal.tsx | 37 +- components/MapCard.tsx | 19 +- components/MapRefresh.tsx | 28 +- components/Moderation.tsx | 77 ++- components/ModeratorSettings.tsx | 83 +++ components/OwnerContributions.tsx | 71 ++- components/Pairing.tsx | 14 +- components/Panorama.tsx | 12 +- components/PanoramaPreview.tsx | 29 +- components/PasswordForm.tsx | 23 +- components/ProcessingProgress.tsx | 19 +- components/ReportContent.tsx | 37 +- components/Results.tsx | 43 +- components/Shell.tsx | 34 +- components/SignIn.tsx | 84 +-- components/SiteNav.tsx | 7 +- components/SiteSettingsProvider.tsx | 84 +++ components/StartGame.tsx | 22 +- docs/vercel-deployment.md | 25 + lib/api.ts | 16 + lib/i18n.ts | 31 + lib/site-settings.ts | 24 + next.config.ts | 1 + package.json | 1 + public/fonts/LICENSE-Monocraft.txt | 93 +++ public/fonts/Monocraft.ttf | Bin 0 -> 210192 bytes scripts/deploy-vercel.mjs | 306 +++++++++ scripts/test-site-settings-sql.mjs | 73 +++ shared/database.ts | 24 + shared/i18n.ts | 75 +++ shared/locales/ru.json | 591 ++++++++++++++++++ shared/site-settings.ts | 7 + .../20261006141532_site_settings.sql | 36 ++ tests/deploy-vercel.test.ts | 190 ++++++ tests/i18n.test.ts | 82 +++ tests/site-settings.test.ts | 19 + tsconfig.tsbuildinfo | 2 +- 67 files changed, 3053 insertions(+), 643 deletions(-) create mode 100644 app/polish.css create mode 100644 components/I18nProvider.tsx create mode 100644 components/LanguageSwitcher.tsx create mode 100644 components/ModeratorSettings.tsx create mode 100644 components/SiteSettingsProvider.tsx create mode 100644 docs/vercel-deployment.md create mode 100644 lib/i18n.ts create mode 100644 lib/site-settings.ts create mode 100644 public/fonts/LICENSE-Monocraft.txt create mode 100644 public/fonts/Monocraft.ttf create mode 100644 scripts/deploy-vercel.mjs create mode 100644 scripts/test-site-settings-sql.mjs create mode 100644 shared/i18n.ts create mode 100644 shared/locales/ru.json create mode 100644 shared/site-settings.ts create mode 100644 supabase/migrations/20261006141532_site_settings.sql create mode 100644 tests/deploy-vercel.test.ts create mode 100644 tests/i18n.test.ts create mode 100644 tests/site-settings.test.ts diff --git a/app/about/page.tsx b/app/about/page.tsx index 212cf25..ff98f8d 100644 --- a/app/about/page.tsx +++ b/app/about/page.tsx @@ -1,45 +1,49 @@ +import { getI18n } from "@/lib/i18n"; import { Header, Footer } from "@/components/Shell"; import Link from "next/link"; -export default function About() { +export default async function About() { + const { t } = await getI18n(); return ( <>
- THE EXPLORER’S FIELD GUIDE + {t("THE EXPLORER’S FIELD GUIDE")}

- You know this place. + {t("You know this place.")}
- Probably. + {t("Probably.")}

- MineGeo drops you into a panorama from a community Minecraft world. - Find out where you are before the clock runs out. + {t( + "MineGeo drops you into a panorama from a community Minecraft world. Find out where you are before the clock runs out.", + )}

-

Look for the little things

+

{t("Look for the little things")}

- Drag to look around. Mountains, shorelines, roofs, and landmarks all - help. You stay in one place throughout a round. + {t( + "Drag to look around. Mountains, shorelines, roofs, and landmarks all help. You stay in one place throughout a round.", + )}

-

Make your guess

+

{t("Make your guess")}

- Expand the map in the bottom-right corner and click to place a pin. - North is up, X increases east, and Z increases south. Move your pin - until you’re ready, then submit. + {t( + "Expand the map in the bottom-right corner and click to place a pin. North is up, X increases east, and Z increases south. Move your pin until you’re ready, then submit.", + )}

-

Five chances to find your way

+

{t("Five chances to find your way")}

- Easy gives you 180 seconds, Normal 90, and Hard 30. Hard disables - zoom. A timed-out round scores zero; you can still finish the - expedition. + {t( + "Easy gives you 180 seconds, Normal 90, and Hard 30. Hard disables zoom. A timed-out round scores zero; you can still finish the expedition.", + )}

-

Closer means better

+

{t("Closer means better")}

- Each round awards up to 5,000 points based on horizontal distance. A - guess within one block earns a perfect score. Compare all five guesses - at the end. + {t( + "Each round awards up to 5,000 points based on horizontal distance. A guess within one block earns a perfect score. Compare all five guesses at the end.", + )}

- Let’s find a world → + {t("Let’s find a world →")}