Application Scope
Development progress & changelog
Admin Contact Messages Management
New Contact Messages tab in admin panel for viewing, filtering, and managing contact form submissions. Includes status updates, admin notes, message deletion, and contact page settings.
Contact Form API with Rate Limiting
Backend API endpoint for contact form submissions with input validation, honeypot spam detection, and IP-based rate limiting (5 per hour).
Contact Us Page
Professional Contact Us page with interactive globe map (Leaflet.js), contact details, inquiry categories, and modal contact form with CAPTCHA challenge to prevent spam.
Added full CRUD (Create, Read, Update, Delete) for editions, countries, and categories in the admin panel with inline editing.
Admin can ban/unban users from discussions, suspend users temporarily, enable/disable accounts, and reject pending users directly from the user management panel.
Admins can now toggle which download types are available to users. Per-type enable/disable for editions, resources, CIA archives, Gutenberg, HathiTrust, anthems, bulk packs, rankings export, and country export.
Admin Panel: Import Other Archives Script
Added "Import Other Archives (1981-1989, 1998-1999 to DB)" option to the admin import scripts dropdown. Supports single-year or batch processing via CLI argument or admin panel.
Gutenberg 1998/1999 Text Parsers
Two dedicated parsers for Project Gutenberg text editions. The 1998 parser handles @Country:Section markers with underscore separators. The 1999 parser handles ====== block separators with @CountryName prefixes. Both resolve country names via aliasing and produce structured field-value records.
OCR Text Parser for 1980s Factbook Editions
Parses scanned OCR text files for years 1981, 1983-1989. Detects country names by matching against the database, identifies section headers (Geography, People, Government, Economy, Communications, Defense Forces), and extracts field-value pairs with continuation line support. Handles both ALL-CAPS and mixed-case section headers.
Discussion Moderation Queue
Students can flag discussion posts. Teachers see flagged posts and can approve or reject them. Notifications sent to teachers.
Classroom Leaderboard
Real-time leaderboard ranking students by average score and assignments completed. Cached in database for performance.
Student Analytics Dashboard
My Progress page with XP chart, streak calendar, learning path progress bars, recent quizzes, achievements, and quick links.
Export/Import Learning Paths
Export learning paths as JSON for backup or sharing. Import JSON to create new paths with all lessons. Admin-only import.
PWA Support
Web app manifest, service worker with cache-first for assets and network-first for pages, and automatic SW registration.
Bulk Student Import
Teachers can import multiple students into a classroom by username or email. Handles duplicates, capacity limits, and reports results.
Class Archiving
Teachers can archive and unarchive classes. Archived classes are preserved but hidden from active views.
In-App Notification System
Real-time notification bell in header with dropdown showing assignment alerts, grade notifications, class joins, path completions, and moderation flags.
Assignment Rubrics
Teachers can create detailed rubrics with criteria and point breakdowns for assignments. Rubric-based grading with per-criterion scores and feedback.
Lesson Attachments
Lessons now support file attachments (PDF, images) with sort ordering. Attachments are displayed alongside lesson content.
Lesson Bookmarking
Users can bookmark lessons for quick access later. Bookmarks include optional notes and are accessible from the My Progress dashboard.
Learning Path Prerequisites
Paths can now require completion of a prerequisite path before enrollment. Enforced in API and shown in UI.
Classroom / Teacher Mode
Full classroom management system. Teachers can create classes with unique 6-character join codes, invite students, create quiz assignments with configurable difficulty/question count/deadlines/max attempts, view submission status, remove students, and export grades as CSV. Students join classes via code, view assignments with due dates, and submit work. Includes per-class and per-assignment threaded discussion boards with teacher badges. 5 new database tables: classrooms, classroom_students, classroom_assignments, assignment_submissions, classroom_discussions.
Learning Paths / Guided Curricula
New structured course system with 8 learning paths (World Geography 101, Global Economics, Demographics Deep Dive, World Governments & Politics, Africa Focus, Asia & Oceania Focus, Europe Focus, Americas Focus). Each path contains 4-5 lessons following a Reading → Visual → Quiz → Summary flow. Features include enrollment tracking, per-lesson progress, XP rewards, Chart.js data visualizations from live country data, integrated quiz engine, and certificate of completion. 36 lessons total with rich educational content.
Site Analytics: Edition Updates Section
Added Edition Updates section to analytics page showing full/partial edition counts, records by decade breakdown, and complete edition table with coverage indicators.
Download Center: Anthems Tab
Added National Anthems tab to the Download Center with search, play/pause controls, progress bar, download buttons, and session listen/download counters.
Updated Resource Library
Added 15 new resources including edition guides, analysis documents, field references, and educational materials. Total: 36 resources.
Expanded Did You Know Facts
Added 61 new curated facts covering geography, demographics, economics, government, military, infrastructure, and culture. Total: 181 facts.
Added 5 New Flashcard Decks
Created World Regions, World Religions, Independence Dates, Country Climates, and National Anthems flashcard decks. Total: 10 system decks with 1,400+ cards.
Expanded Glossary to 106 Terms
Added 81 new glossary terms covering economic, demographic, geographic, government, military, infrastructure, and energy categories. All terms include related_field mappings for country data tooltips.
Development progress page with list and timeline views showing all platform changes.
Real-time online user counter, admin user management with ban/suspend/reject, visitor analytics (IP, device, location).
25+ defined terms across economic, government, geographic, demographic, military categories. Alphabet browse, search, related field links.
Auto-generated facts from data anomalies, community submissions, upvote/downvote, category filtering.
Spaced repetition (SM-2 algorithm) flashcards. System decks: Capitals, Flags, Currencies, Government Types, Languages. Progress tracking.
Bookmark countries, create named study collections, personal notes, public sharing via token links.
Interactive Chart.js dashboard: population bars, GDP charts, region pie/doughnut, GDP vs Life Expectancy bubble scatter plot.
Full forum system: groups (open/restricted/private), threads, nested replies, reactions, polls, @mentions, notifications, moderation (ban/suspend), reputation system.
XP system with 25 levels, 30 achievements across 6 categories, 5 tiers, streak tracking, leaderboard, country visit tracking.
Daily featured country with deterministic rotation, key facts, map, anthem, streak tracking, XP rewards.
6 quiz modes, 9 question types auto-generated from DB, 3 difficulty levels, region filter, leaderboard, Alpine.js interactive UI.
AIProvider abstraction supporting Local, Ollama, OpenAI, Groq, Together AI, and OpenRouter. Admin-switchable providers.
AI-powered research with 6 database tools (search, compare, rankings, trends, profiles, field discovery). Function calling loop with up to 5 tool calls per query.
Edition archives (JSON/CSV/SQL), resource downloads, bulk packs, download analytics with charts.
jVectorMap integration replacing Leaflet. Click-to-play anthems, country modals, region coloring. 216 local MP3 anthems.
Admin dashboard for site settings, announcements, user management, AI configuration.
Full auth system: registration, login, sessions, 2FA, password policies, CSRF protection, audit logging, rate limiting.
Hybrid chatbot with SQL-first approach and OpenAI fallback. Natural language queries about country data.
Core platform built with 261 countries, 138,606 data records, 256 flags, 267 maps. Pages: Home, Countries, Country Profile, Compare, Rankings, Regions, Search, About.