Files
QrCode-Attendance-System/system.json
2026-01-07 14:09:59 +08:00

403 lines
10 KiB
JSON

{
"database": {
"schema": "attendance_system",
"source": "src-backup/attendance_system.sql",
"engine": "MariaDB 10.4.32",
"tables": [
{
"name": "activities",
"purpose": "Defines school activities/events that require attendance tracking and can be scoped to all students, specific courses, or departments.",
"primary_key": "id",
"important_fields": [
"name",
"date",
"time_in",
"time_out",
"required_students",
"course_id",
"department_id",
"status"
],
"relationships": [
{
"column": "created_by",
"references": "users.id",
"on_delete": "RESTRICT"
},
{
"column": "course_id",
"references": "courses.id",
"on_delete": "SET NULL"
},
{
"column": "department_id",
"references": "departments.id",
"on_delete": "SET NULL"
}
]
},
{
"name": "attendance",
"purpose": "Records per-student participation in a given activity, capturing time-in/out, status, and notes.",
"primary_key": "id",
"important_fields": [
"student_id",
"activity_id",
"time_in",
"time_out",
"status"
],
"relationships": [
{
"column": "student_id",
"references": "students.id",
"on_delete": "CASCADE"
},
{
"column": "activity_id",
"references": "activities.id",
"on_delete": "CASCADE"
}
]
},
{
"name": "attendance_logs",
"purpose": "Audit trail for changes to attendance entries (time in/out, manual overrides, status changes).",
"primary_key": "id",
"important_fields": [
"attendance_id",
"action",
"old_value",
"new_value",
"changed_by",
"changed_at"
],
"relationships": [
{
"column": "attendance_id",
"references": "attendance.id",
"on_delete": "CASCADE"
},
{
"column": "changed_by",
"references": "users.id",
"on_delete": "RESTRICT"
}
]
},
{
"name": "attendance_records",
"purpose": "Aggregated attendance summary per student/course combination when manual recording (outside activities) is needed.",
"primary_key": "id",
"important_fields": [
"student_id",
"course_id",
"status",
"date_recorded",
"created_by"
],
"relationships": [
{
"column": "student_id",
"references": "students.id",
"on_delete": "RESTRICT"
},
{
"column": "course_id",
"references": "courses.id",
"on_delete": "RESTRICT"
},
{
"column": "created_by",
"references": "users.id",
"on_delete": "RESTRICT"
}
]
},
{
"name": "courses",
"purpose": "Catalog of academic programs, linked to departments and used to scope activities and students.",
"primary_key": "id",
"important_fields": [
"code",
"name",
"department_id",
"duration_years",
"status"
],
"relationships": [
{
"column": "department_id",
"references": "departments.id",
"on_delete": "RESTRICT"
}
]
},
{
"name": "departments",
"purpose": "Defines school departments under which courses and students are organized.",
"primary_key": "id",
"important_fields": [
"code",
"name",
"school_id",
"status"
],
"relationships": [
{
"column": "school_id",
"references": "schools.id",
"on_delete": "RESTRICT"
}
]
},
{
"name": "genders",
"purpose": "Lookup table for student gender classifications.",
"primary_key": "id",
"important_fields": [
"code",
"name"
]
},
{
"name": "schools",
"purpose": "Stores root institution profile information (name, address, contacts).",
"primary_key": "id",
"important_fields": [
"code",
"name",
"address",
"contact_number",
"status"
]
},
{
"name": "students",
"purpose": "Master list of students with QR credentials, demographic data, and enrollment metadata.",
"primary_key": "id",
"important_fields": [
"student_id",
"qr_code",
"full_name",
"gender_id",
"year_level",
"course_id",
"department_id",
"school_id",
"status"
],
"relationships": [
{
"column": "gender_id",
"references": "genders.id",
"on_delete": "RESTRICT"
},
{
"column": "course_id",
"references": "courses.id",
"on_delete": "RESTRICT"
},
{
"column": "department_id",
"references": "departments.id",
"on_delete": "RESTRICT"
},
{
"column": "school_id",
"references": "schools.id",
"on_delete": "RESTRICT"
}
]
},
{
"name": "system_settings",
"purpose": "Key-value configuration store for system-wide toggles (branding, cutoff times, etc.).",
"primary_key": "id",
"important_fields": [
"setting_key",
"setting_value",
"description",
"updated_by",
"updated_at"
],
"relationships": [
{
"column": "updated_by",
"references": "users.id",
"on_delete": "SET NULL"
}
]
},
{
"name": "users",
"purpose": "System user accounts (admins/teachers) with authentication credentials and contact info.",
"primary_key": "id",
"important_fields": [
"username",
"password",
"role",
"full_name",
"email",
"status"
]
}
]
},
"systems": [
{
"name": "Admin Panel",
"path": "src-backup/admin",
"purpose": "Web dashboard for managing students, activities, users, and attendance reports.",
"entry_points": [
"dashboard.php",
"manage_students.php",
"manage_activities.php",
"attendance.php",
"users.php",
"reports.php"
],
"primary_tables": [
"students",
"activities",
"attendance",
"users"
],
"dependencies": [
"auth/login.php",
"includes/database.php",
"includes/auth.php"
]
},
{
"name": "Public Portal",
"path": "src-backup/index.php",
"purpose": "Front-facing landing/entry page that ties into assets/ for styling and qr/ for QR workflows.",
"primary_tables": [
"students",
"attendance",
"activities"
],
"dependencies": [
"assets/css|js",
"auth/login.php",
"api/*"
]
},
{
"name": "API Endpoints",
"path": "src-backup/api",
"purpose": "AJAX-style endpoints for scanning QR codes, manual attendance entry, and fetching reference data.",
"key_scripts": [
"scan_qr.php",
"manual_entry.php",
"get_courses.php",
"get_departments.php",
"export_activities.php",
"export_reports.php"
],
"primary_tables": [
"students",
"attendance",
"activities",
"courses",
"departments"
],
"dependencies": [
"includes/database.php",
"includes/config.php"
]
},
{
"name": "Authentication",
"path": "src-backup/auth",
"purpose": "Session handling (login/logout) that protects admin and API surfaces.",
"key_scripts": [
"login.php",
"logout.php"
],
"primary_tables": [
"users"
],
"dependencies": [
"includes/auth.php",
"includes/database.php"
]
},
{
"name": "Shared Includes",
"path": "src-backup/includes",
"purpose": "Reusable bootstrap/config files (database connector, auth helper, headers/footers, QR library).",
"key_scripts": [
"database.php",
"config.php",
"auth.php",
"header.php",
"footer.php"
],
"primary_tables": [
"users",
"students",
"activities"
]
},
{
"name": "QR Utilities",
"path": "src-backup/qr",
"purpose": "Handles QR code generation, printing, and cleanup jobs tied to student credentials.",
"key_scripts": [
"generate.php",
"print.php",
"cleanup_qrcodes.php",
"simple_cleanup.php"
],
"primary_tables": [
"students"
],
"dependencies": [
"includes/phpqrcode",
"assets/image"
]
},
{
"name": "Reporting",
"path": "src-backup/reports",
"purpose": "Generates printable reports for attendance summaries and student listings.",
"key_scripts": [
"print_report.php",
"students_report.php"
],
"primary_tables": [
"attendance",
"students",
"activities",
"courses"
]
},
{
"name": "Assets",
"path": "src-backup/assets",
"purpose": "Static resources (CSS/JS/images) shared by public and admin interfaces.",
"subdirectories": [
"css",
"js",
"image"
]
},
{
"name": "Setup & Diagnostics",
"path": "src-backup/setup.php | src-backup/test_connection.php | src-backup/test_db.php",
"purpose": "Environment bootstrap scripts used to verify database connectivity and initial configuration.",
"primary_tables": [
"system_settings",
"users"
]
},
{
"name": "Exports",
"path": "src-backup/exports",
"purpose": "Designated output directory (currently empty) where generated CSV/PDF exports are saved by API/export scripts."
}
]
}