Application Scope
Development progress & changelog
Sitemap & Application Scope Updated
Added Contact Us page to visual sitemap. Added grid view to Application Scope page. Fixed changelog version ordering for consistent semantic versioning.
Navigation & Footer Updates
Added Contact Us link to header More dropdown, mobile navigation, and footer Resources section. Updated About page with Quick Links section for Sitemap, Application Scope, and Contact Us.
Two-Factor Authentication Admin Controls
Admin settings to enable/disable 2FA site-wide and require 2FA for admin accounts. Includes live adoption stats showing users and admins with 2FA enabled.
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.
Updated XML sitemap and visual sitemap with all new pages. Application scope changelog updated with v3.2 features.
World rankings now use the 2024 CIA World Factbook edition as the default data source.
Added full CRUD (Create, Read, Update, Delete) for editions, countries, and categories in the admin panel with inline editing.
robots.txt dynamically generated to block scrapers from resource and download folders. Admin toggle to enable/disable scraper protection.
Admin can ban/unban users from discussions, suspend users temporarily, enable/disable accounts, and reject pending users directly from the user management panel.
AI chatbot and research assistant now use the 2024 edition as the primary data source for all queries and responses.
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.
Sitemap Updated with New Edition Pages
XML sitemap dynamically includes all HathiTrust reader pages. The 10 new editions are automatically listed via getHathitrustArchives(). Visual sitemap page badges reflect updated edition counts.
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.
10 New HathiTrust Text Archive Files
Cleaned text files for 1981, 1983-1989, 1998, and 1999 editions copied to /data/archives/hathitrust/. Automatically available in the HathiTrust Reader, Download Center, and Resource Library. SQL backup files generated for each year in /data/import/.
Country Name Aliasing for Historical Editions
Comprehensive alias map resolving 50+ historical country names to current database entries. Covers Cold War-era names (USSR, East/West Germany, Yugoslavia), colonial names (Zaire, Rhodesia, Burma), and format-specific variants (comma-inverted names like "Korea, North").
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.
Import 10 Historical Text Editions (1981-1989, 1998-1999)
New import script process_other_archives.php parses CIA World Factbook text editions from Internet Archive and Project Gutenberg. Supports three parser modes: OCR (1981, 1983-1989), Gutenberg98 with @Country:Section markers (1998), and Gutenberg with ====== separators (1999). Imported 124,630 records across 1,754 country-editions.
Sitemap Updates
Added missing pages to XML sitemap and visual sitemap: My Progress, Edition Browser, Forgot Password, and Profile. Visual sitemap now shows 40+ pages across 8 sections.
Admin GET Action Protection
All destructive GET-based admin actions (delete/toggle for announcements, ads, resources, paths, lessons, classrooms, API keys) now require a CSRF token and cast IDs to integer to prevent injection.
Learning API Input Hardening
All 7 input handlers in api/learn.php now use InputSanitizer: enrollment, lesson completion, bookmarks, and path import. Slug validation, score range enforcement, and lesson content sanitization added.
Classroom API Input Hardening
All 12 input handlers in api/classroom.php now use InputSanitizer: class creation, assignments, discussions, grading, rubrics, bulk import, and moderation. Array type checks added for nested inputs.
Input Sanitization Library
New InputSanitizer class with 10 methods: text, richText, positiveInt, float, enum, email, url, slug, csvList, and json. Strips dangerous HTML (scripts, iframes, event handlers, JS URIs) while preserving safe formatting tags.
CSRF Protection on Admin Panel
All admin POST forms (settings, announcements, ads, resources, learning paths, lessons) now include CSRF tokens. All destructive GET actions (delete, toggle) require a valid token parameter. Uses Auth::generateCsrfToken/verifyCsrfToken with 2-hour expiry.
Admin Auth Hardening
Replaced hardcoded admin credentials with the Auth system. Admin panel now requires login via the users table with role-based access control — only admin and superadmin roles are permitted. Includes full Auth features: rate limiting, account lockout, and session management.
PHPUnit Test Suite
Test bootstrap, phpunit.xml config, and test classes for SimpleCache, Notification, and Pagination with full coverage of core methods.
Accessibility Improvements
Added ARIA roles and labels to main navigation, notification bell, and desktop menu bar for screen reader support.
Admin Progress Analytics Charts
Enrollment trend line chart and enrollments vs completions bar chart added to admin Learning Paths tab using Chart.js.
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.
Admin Dark Mode
Toggle dark mode in admin panel via nav bar button. CSS-based dark theme applied to all cards, tables, inputs, and text.
PWA Support
Web app manifest, service worker with cache-first for assets and network-first for pages, and automatic SW registration.
API Rate Limiting
RateLimiter and ApiMiddleware classes enforce per-key hourly rate limits with X-RateLimit headers and 429 responses.
Admin Table Pagination
Reusable Pagination helper class with rendered page controls. Applied to classrooms table with configurable per-page limits.
Query Caching Layer
SimpleCache class provides database-backed caching with TTL, remember pattern, enable/disable, and automatic cleanup.
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.
Navigation Updates for Learning & Classroom
Added Learning Paths and Classroom links to header dropdown menu, mobile navigation, footer Learning section, XML sitemap, and visual sitemap page.
Learning Platform Database Schema
Added 9 new database tables for Learning Paths and Classroom features: learning_paths, learning_lessons, user_path_enrollment, user_lesson_progress, classrooms, classroom_students, classroom_assignments, assignment_submissions, classroom_discussions. Seeded 8 learning paths with 36 lessons containing rich educational content.
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.
Updated Application Scope
Added changelog entries for all recent feature additions and improvements.
Interactive Visual Sitemap
Created new sitemap-page.php with tree and grid views. Features expandable sections, page badges with counts, color-coded categories, and smooth animations.
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.
API Key Registration: Login Required
API key requests now require authenticated users. Form pre-fills name and email from user profile. Non-logged-in users see a login prompt.
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.
Fixed Quiz Generation Performance
Rewrote quiz question generation to use bulk pre-fetched data instead of per-country queries. Quiz generation is now instant instead of timing out.
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.
Auto-generated sitemap.xml updated on every request with all pages, countries, and editions.
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.
Complete redesign with Inter font, glassmorphism nav, dark mode refinements, card-hover effects, gradient headers across all 17+ pages.
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.
33 editions imported (1990-2024) with 1,400,719 total records. Timeline viewer for historical data comparison.
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.