ESC
Type to search countries
Navigate

Application Scope

Development progress & changelog

3.5.0
Current Version
35
Releases
82
Total Changes
38
Major Updates
414
Days Active

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.

Improvement

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.

Ui

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.

Security

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.

Feature

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).

Feature

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.

Feature

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.

Improvement

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.

Feature

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/.

Data

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").

Data

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.

Feature

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.

Feature

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.

Data

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.

Improvement

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.

Security

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.

Security

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.

Security

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.

Security

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.

Security

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.

Security

PHPUnit Test Suite

Test bootstrap, phpunit.xml config, and test classes for SimpleCache, Notification, and Pagination with full coverage of core methods.

Infrastructure

Accessibility Improvements

Added ARIA roles and labels to main navigation, notification bell, and desktop menu bar for screen reader support.

Improvement

Admin Progress Analytics Charts

Enrollment trend line chart and enrollments vs completions bar chart added to admin Learning Paths tab using Chart.js.

Improvement

Discussion Moderation Queue

Students can flag discussion posts. Teachers see flagged posts and can approve or reject them. Notifications sent to teachers.

Feature

Classroom Leaderboard

Real-time leaderboard ranking students by average score and assignments completed. Cached in database for performance.

Feature

Student Analytics Dashboard

My Progress page with XP chart, streak calendar, learning path progress bars, recent quizzes, achievements, and quick links.

Feature

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.

Feature

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.

Ui

PWA Support

Web app manifest, service worker with cache-first for assets and network-first for pages, and automatic SW registration.

Feature

API Rate Limiting

RateLimiter and ApiMiddleware classes enforce per-key hourly rate limits with X-RateLimit headers and 429 responses.

Security

Admin Table Pagination

Reusable Pagination helper class with rendered page controls. Applied to classrooms table with configurable per-page limits.

Improvement

Query Caching Layer

SimpleCache class provides database-backed caching with TTL, remember pattern, enable/disable, and automatic cleanup.

Performance

Bulk Student Import

Teachers can import multiple students into a classroom by username or email. Handles duplicates, capacity limits, and reports results.

Feature

Class Archiving

Teachers can archive and unarchive classes. Archived classes are preserved but hidden from active views.

Feature

In-App Notification System

Real-time notification bell in header with dropdown showing assignment alerts, grade notifications, class joins, path completions, and moderation flags.

Feature

Assignment Rubrics

Teachers can create detailed rubrics with criteria and point breakdowns for assignments. Rubric-based grading with per-criterion scores and feedback.

Feature

Lesson Attachments

Lessons now support file attachments (PDF, images) with sort ordering. Attachments are displayed alongside lesson content.

Feature

Lesson Bookmarking

Users can bookmark lessons for quick access later. Bookmarks include optional notes and are accessible from the My Progress dashboard.

Feature

Learning Path Prerequisites

Paths can now require completion of a prerequisite path before enrollment. Enforced in API and shown in UI.

Feature

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.

Ui

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.

Data

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.

Feature

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.

Feature

Updated Application Scope

Added changelog entries for all recent feature additions and improvements.

Improvement

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.

Ui

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.

Feature

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.

Security

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.

Feature

Updated Resource Library

Added 15 new resources including edition guides, analysis documents, field references, and educational materials. Total: 36 resources.

Feature

Expanded Did You Know Facts

Added 61 new curated facts covering geography, demographics, economics, government, military, infrastructure, and culture. Total: 181 facts.

Feature

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.

Feature

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.

Performance

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.

Feature

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.

World Factbook Assistant

Ask me about any country or world data

Powered by World Factbook data • Answers sourced from country profiles

Stay in the Loop

Get notified about new data editions and features

Cookie Notice

We use essential cookies for authentication and session management. We also collect anonymous analytics (page views, searches) to improve the site. No personal data is shared with third parties.