Skip to main content

Project Overview

Dashboard Dilemmas is a PHP-based web application that integrates with WordPress for user authentication and uses MySQL for data storage. The application manages ethical dilemmas games, client analytics, and performance comparisons.

Root Directory Structure

dashboard-dilemas/
├── assets/              # Frontend assets
├── dev/                 # Development utilities
├── documents/           # Documentation files
├── includes/            # Core PHP includes
├── migrate/             # Database migration scripts
├── screenshots/         # Application screenshots
├── sql/                 # Database schemas
├── .htaccess           # Apache configuration
├── README.md           # Project readme
└── *.php               # Application pages

Core Directories

/assets/

Frontend resources organized by type:
assets/css/
├── quill.snow.css       # Rich text editor styles
└── tom-select.default.css  # Select dropdown styles

/includes/

Core functionality and shared components:
FilePurpose
config.phpSite configuration and constants
db.phpDatabase connection management
auth.phpAuthentication and session handling
functions.phpShared utility functions (121KB)
header.phpCommon header template
footer.phpCommon footer template
sidebar.phpNavigation sidebar
breadcrumbs.phpBreadcrumb navigation
cache.phpCaching utilities
admin_log.phpAdmin activity logging
class-phpass.phpPassword hashing library
weekly_report_email.phpEmail reporting system
migration_utils.phpData migration helpers
The functions.php file is 121KB and contains critical business logic. Modifications should be made carefully with proper testing.

/dev/

Development tools and testing utilities:
Validation and verification scripts:
  • check-user.php - User authentication verification
  • check_columns.php - Database column validation
  • check_games.php - Game data integrity checks
Debugging and inspection tools:
  • debug_areas.php - Area functionality debugging
  • debug_db.php - Database connection testing
  • debug_pagination.php - Pagination logic testing
  • debug_relation.php - Relationship validation
  • debug_schema.php - Schema structure inspection
  • debug_winners.php - Winners calculation debugging
Unit and integration tests:
  • test-hash.php - Password hashing tests
  • test-session.php - Session management tests
  • test-smtp.php - Email functionality tests
  • test-wp-auth.php - WordPress authentication tests
  • test-wp-mail.php - WordPress mail integration tests
  • test_answers.php - Answer processing tests

/sql/

Database schemas and migration files:
FileDescription
database.sqlMain database schema
users.sqlUser table definitions
clients.sqlClient organization schema
areas_schema.sqlBusiness areas structure
compare_schema.sqlComparison analytics schema
update_analytics_schema.sqlAnalytics tables
add_performance_indexes.sqlPerformance indexes
optimizations.sqlDatabase optimizations
mock_comparison_data.sqlTest/sample data
migrate_questions_transversal.sqlQuestion migration
migrate_clients_v2.sqlClient data migration

/migrate/

Data migration scripts for database updates:
  • add_logo_col.php - Add logo column to tables
  • load_mock_data.php - Load test data
  • migrate_answers.php - Migrate answer data
  • migrate_clients.php - Client data migration
  • migrate_clients_v2.php - Updated client migration
  • migrate_compare.php - Comparison data migration
  • migrate_funnel_table.php - Funnel analytics migration
  • update_analytics_schema.php - Analytics schema updates

Application Pages

Main application entry points in the root directory:

Core Pages

Dashboard

index.php - Main dashboard

Authentication

login.php, logout.php - User authentication

Games

games.php, game_detail.php, game_user_detail.php

Clients

clients.php, client_detail.php, my_company.php

Feature Pages

  • Analytics: analytics.php - Performance analytics
  • Areas: areas.php, area_detail.php - Business area management
  • Questions: questions.php, question_detail.php - Question bank
  • Certificates: certificates.php, generate_certificate.php - Certificate generation
  • Comparisons: compare.php, compare_clients.php - Client comparisons
  • Feedback: feedback.php - User feedback system

Export & API

  • export_clients.php - Client data export
  • export_csv.php - CSV export functionality
  • export_questions.php - Question export
  • export_winners.php - Winners data export
  • api_user_detail.php - User API endpoint
  • api_send_certificate.php - Certificate delivery API

Utilities

  • cron_email_reminders.php - Scheduled email reminders
  • inspect_dilemas.php - Dilemma inspection tool
  • list_meta.php - Metadata listing
  • list_tables.php - Database table inspector
  • get-hash.php - Password hash generator

Configuration Files

.htaccess

Apache configuration for URL rewriting and caching:
# URL Rewriting
RewriteEngine On
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^index\.php$ / [L,R=301]

# Remove .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

# Caching (4 hours for CSS/JS)
ExpiresDefault "access plus 1 month"
ExpiresByType text/css "access plus 4 hours"
ExpiresByType application/javascript "access plus 4 hours"
The caching strategy uses a 4-hour cache with must-revalidate for CSS and JavaScript files, allowing cache-breaking via query string versioning.

Database Tables

The application uses the following WordPress-prefixed tables:
  • de_app_users - Application users
  • de_app_games - Game sessions
  • de_app_clients - Client organizations
  • de_app_answers - User responses
  • de_app_questions - Question bank
  • de_app_areas - Business areas
  • de_app_comparison - Comparison analytics
  • de_app_funnel - Funnel tracking
  • de_app_admin_log - Admin activity log

Key Dependencies

PHP Libraries

  • PHPMailer - Email sending (via WordPress)
  • PHPass - Password hashing

JavaScript Libraries

  • Chart.js - Data visualizations
  • Quill - Rich text editing
  • Tom Select - Advanced dropdowns
  • html2pdf - PDF generation
  • pptxgen - PowerPoint export
  • Tailwind CSS - Utility-first styling
  • Lucide - Icon system

WordPress Integration

The application integrates with WordPress for:
  1. Authentication - User login via WordPress credentials
  2. Email - PHPMailer from WordPress core
  3. Database - Shared WordPress database connection
WordPress configuration in includes/config.php:
define('WP_SITE_URL', 'http://localhost:8888/dilemas');
define('WP_PATH', '/path/to/wordpress');

Next Steps

Setup Guide

Set up your development environment

Deployment

Deploy to production with Apache

Build docs developers (and LLMs) love