Lexiverse
Lexiverse - AI contextual reading engine for English learners. Your next article is your next review.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗FlagForge is a fast, offline-first interactive world atlas, vexillology quiz arena, and nation demographic comparison platform. Master world geography, national flags, capitals, and geopolitical statistics through real-time quizzes, daily global challenges, and side-by-side data visualizations.
FlagForge uses a unidirectional, typed architecture leveraging Next.js 15 App Router, React 19 Server & Client Components, TanStack Query, and Zustand stores with versioned LocalStorage persistence.
flowchart TD
subgraph DataSources["External APIs & Offline Dataset"]
RC["REST Countries v3.1 (Batch 1 & 2)"]
Wiki["Wikipedia REST Summary API"]
Meteo["Open-Meteo Weather API"]
Fallback["Embedded Fallback Dataset (30 Nations)"]
end
subgraph ServiceWorker["PWA & Service Worker (/public/sw.js)"]
SW["Service Worker Routing Engine"]
CacheFlags["flagforge-v1-flags (Cache-First)"]
CacheAPI["flagforge-v1-data (Stale-While-Revalidate)"]
CachePages["flagforge-v1-pages (Network-First Fallback)"]
end
subgraph StateLayer["Client State & Persistence"]
Query["TanStack React Query Cache"]
ProgStore["useProgressStore (flagforge-progress v2)"]
FavStore["useFavoritesStore (flagforge-favorites v1)"]
SetStore["useSettingsStore (flagforge-settings v2)"]
end
subgraph FeatureModules["Feature Views"]
Explorer["/explore: World Atlas Explorer"]
QuizArena["/play: Vexillology Quiz Arena"]
Daily["/daily: Global Challenge"]
Compare["/compare: Side-by-Side Comparison"]
Stats["/stats: Analytics & Radar Dashboard"]
CountryPage["/country/[code]: Deep Profile"]
end
RC --> SW
Wiki --> SW
Meteo --> SW
Fallback --> SW
SW --> Query
Query --> FeatureModules
ProgStore --> QuizArena
ProgStore --> Daily
ProgStore --> Stats
FavStore --> Explorer
SetStore --> FeatureModules
| Feature | Description | Key Capabilities |
|---|---|---|
| World Atlas Explorer | Filter and search all 250+ sovereign nations and territories | Instant fuzzy search (fuse.js), region & subregion filters, population range slider, landlocked / UN filters, grid / list view, favorite bookmarks. |
| Quiz Arena | Interactive vexillology and geography games | 4 quiz modes (flag_to_country, country_to_flag, capital_to_country, border_challenge), 3 difficulty tiers, speed bonuses, score streaks, live countdown timer, lives mode. |
| Daily Global Challenge | Standardized daily geography challenge | Deterministic PRNG seed based on UTC date, 10 standardized flag questions, shareable emoji results grid, streak preservation. |
| Side-by-Side Compare | Multi-country demographic comparison matrix | Up to 3 countries compared across population, surface area, borders, languages, currencies; interactive Recharts bar charts and demographic radar index. |
| Stats Dashboard | In-depth performance insights & analytics | Historical activity heatmap, region proficiency radar charts, weakest flags review, achievement badges. |
| Deep Country Profiles | Comprehensive national profiles (/country/[code]) | Pre-rendered static pages for major nations, live capital weather from Open-Meteo, Wikipedia summary extracts, interactive border links. |
FlagForge is engineered for rapid keyboard-first navigation and satisfies WCAG 2.2 AA accessibility standards.
| Key Shortcut | Context | Action |
|---|---|---|
| 1, 2, 3, 4 | Active Quiz / Daily Challenge | Select corresponding answer option (A, B, C, D) |
| Space or Enter | Quiz Answer Review | Advance to the next question |
| Esc | Active Quiz | Pause or unpause the game session |
| Ctrl + K / ⌘ + K | Global | Open the instant Command Palette search |
| Tab / Shift + Tab | Global | Accessible focus traversal with visible focus rings |
| Skip to Main Content | Global Header | Immediate keyboard bypass of navigation directly to #main-content |
FlagForge is a Progressive Web App (PWA) that functions offline:
/src/app/manifest.ts) supporting desktop and mobile installation./public/sw.js):
Cache-First): FlagCDN and Wikimedia images are cached locally on first load (flagforge-v1-flags).Stale-While-Revalidate): API calls return instant cached responses while refreshing in the background.Network-First with Cache Fallback): Visited routes are cached in flagforge-v1-pages. If offline, cached views or /offline.html are displayed.src/lib/api/fallback-countries.ts).The typed API layer is housed under /src/lib/api:
restcountries.ts):
wikipedia.ts):
weather.ts):
v20.x or v22.xv9.x or v10.x (corepack enable && corepack prepare pnpm@latest --activate)# Clone the repository
git clone https://github.com/your-org/flagforge.git
cd flagforge
# Install dependencies
pnpm install --frozen-lockfile
# Start Next.js development server
pnpm run dev
Visit http://localhost:3000 to view FlagForge.
# 1. Typecheck TypeScript codebase
pnpm run typecheck
# 2. Run ESLint code quality checks
pnpm run lint
# 3. Execute Vitest unit & component test suite
pnpm run test
# 4. Execute Vitest test suite with coverage
pnpm run test:coverage
# 5. Execute Playwright E2E and WCAG 2.2 AA accessibility audit
pnpm run e2e
# 6. Production build verification
pnpm run build
# Deploy with Vercel CLI
vercel --prod
Configure NEXT_PUBLIC_APP_URL in your environment variables.
# Build and run Docker container
docker compose up -d --build
The application will be running at http://localhost:3000.
For in-depth deployment documentation, see Production Deployment Guide.
For the complete test and accessibility audit report, see QA Report.