Technology Stack
Development Environment
- XAMPP - Local development server bundle (Apache, MySQL/MariaDB, PHP)
- MariaDB 10.4+ - Database (MySQL-compatible)
- PHP 8.2+ - Server-side scripting with PDO for database access
Frontend
- W3.CSS - Lightweight CSS framework for styling
- JavaScript (vanilla) - Client-side interactivity
- GoJS - Graph visualization library for prerequisite diagrams
- KaTeX - LaTeX math rendering
- Font Awesome - Icons
Architecture
MVC-lite pattern: Models handle all database access; page files mix controller logic with view rendering.
Directory Structure
kms-viewer/
├── app/
│ ├── Models/ # Data access layer (static classes)
│ ├── Views/ # Layouts, sidebars, partials
│ └── Helpers/ # Utility classes
├── atomic/ # Knowledge Base module (statements, actions, LGs)
├── syllabus/ # Course planning module
├── curriculum/ # Learning management (framework only)
├── assessment/ # Item database (framework only)
├── documents/ # Document generation, imported standards, alignment
├── about/ # About pages
├── utilities/ # Dev tools (bug reporter, etc.)
├── public/api/ # AJAX endpoints
├── config/ # Database configuration
├── db_files/ # Schema exports and backups
├── docs/ # Documentation
└── bootstrap.php # Autoloader and session setup
Key Patterns
- Static Models - All Models use static methods (e.g.,
Statement::getById($id))
- Knowledge Base Scoping - Queries filter by
$_SESSION['knowledge_base_id']
- Session-based Course Context - Syllabus operations use
$_SESSION['selected_course_id']
- PSR-4-style Autoloading - Classes in
App\ namespace map to app/ directory
Database
~30 tables organized around core entities:
- statements, actions, learning_goals - Atomic knowledge components
- statement_prerequisites, action_prerequisites - Prerequisite relationships
- courses and course_ tables - Syllabus/scheduling
- taxonomy, taxonomy_terms - Flexible categorization system
- knowledge_bases - Multi-tenant domain containers
Schema exports in db_files/structure/; full backups in db_files/full_backup/.
No Build System
Traditional PHP application with no compilation or bundling required. Edit files and refresh browser.
Style Note
The KMS places commas and periods, that are not part of a quotation, outside of the quotation marks.
Color Palette
Colors used throughout the application (all from W3.CSS):
Statements
w3-blue · DodgerBlue · #2196F3
Signature color for statement entities
Actions
w3-green · — · #4CAF50
Signature color for action entities
Learning Goals
w3-purple · — · #9C27B0
Signature color for learning goal entities
Navigation Bar
w3-dark-grey · DimGray · #616161
Top navigation bar and sidebars
Entry Points / Teal Accents
w3-teal · Teal · #009688
Entry point badges, selection counts
Warnings / Suggestions
w3-yellow · Yellow · #FFEB3B
Warning messages, suggested items
Errors / Danger
w3-red · — · #F44336
Error messages, delete confirmations
Light Backgrounds
w3-light-grey · WhiteSmoke · #F1F1F1
Panels, collapsible headers, cards
Deprecated Status
w3-orange · Orange · #FF9800
Deprecated status badges
Knowledge Bases
w3-deep-purple · — · #673AB7
Knowledge base and KB-level features
Courses / Syllabus
w3-indigo · — · #3F51B5
Course selection, syllabus module accents
Needs Review Status
w3-amber · — · #FFC107
"Needs Review" status badges
Info Panels
w3-pale-blue · LightCyan · #DDFFFF
Informational panels, help text boxes
Success Panels
w3-pale-green · Honeydew · #DDFFDD
Success messages, confirmation panels
Warning Panels
w3-pale-yellow · LemonChiffon · #FFFFCC
Warning panels, caution notices
Error Panels
w3-pale-red · MistyRose · #FFDDDD
Error panels, failure notices
Note: HTML color names shown are approximate equivalents. W3.CSS uses Material Design colors.