A comprehensive Teacher Tracking and Profiling System designed to streamline campus monitoring and academic visibility. This AI-powered platform provides role-based dashboards for administrators, teachers, and students, facilitating real-time status updates and location monitoring while strictly adhering to privacy standards.
FacultyLink (Teacher Tracking System) is a robust web application built with vanilla PHP and MySQL, fully containerized with Docker. It addresses the need for real-time faculty availability tracking within an educational institution.
The system enforces a "Status-Only" policy for students allowing them to see if a teacher is "Available", "In Class", or "Busy" while reserving precise GPS location monitoring exclusively for administrators via interactive Leaflet maps.
- Smart Assistance: An integrated AI chatbot (powered by Perplexity) to help students find teachers, check room schedules, and get status updates instantly.
- Context Awareness: Remembers recent queries and offers "follow-up" capabilities.
- Privacy-First Design: View teacher status (e.g., Available, In Class) without exposing location data.
- Search & Filter: Quickly find teachers by name or department.
- Real-Time Updates: See the most recent status timestamps.
- Status Management: Update current availability (Available, In Class, Busy, Offline, Off Campus).
- GPS Location Pings: Securely submit current location using browser geolocation APIs.
- Profile Management: Maintain professional details and subject lists.
- Timetable Management: Add and manage courses directly in the schedule.
- Interactive Map Monitor: Visualize teacher locations in real-time using Leaflet maps.
- Audit Logging: Comprehensive logs of all privileged actions and location history.
- Student & Teacher Management: Full control over student and teacher accounts with a centralized interface.
- Analytics: Generate reports on faculty attendance and availability history.
-
Clone the repository
git clone https://github.com/frostjade71/teacher-tracking-and-profiling.git cd teacher-tracking-and-profiling -
Configure Environment
Copy
.env.exampleto.envand configure your API keys:cp .env.example .env
You may need to add your
PERPLEXITY_API_KEYfor the chatbot functionality. -
Start the application
docker-compose up -d --build
-
Access the System
- Web Interface:
http://localhost:8080 - Database:
http://localhost:3306(or configured port)
- Web Interface:
Note: Ensure Docker Desktop is running before executing the commands.
- Backend: Vanilla PHP 8+ (No heavy frameworks)
- Database: MySQL 8.0
- Frontend: HTML5, Tailwind CSS, JavaScript
- AI Integration: Perplexity API
- Mapping: Leaflet.js (OpenStreetMap)
- Drag & Drop: interact.js
- Infrastructure: Docker & Docker Compose
The system is pre-configured with Docker environment variables. You can verify them in docker-compose.yml:
environment:
DB_HOST: mysql
DB_NAME: ttrack
DB_USER: ttrack_user
DB_PASS: ttrack_pass- Role-Based Access Control (RBAC): Strict permission checks for every request.
- Password Hashing: Industry-standard
bcryptencryption. - Prepared Statements: Full protection against SQL injection attacks using PDO.
- Session Security: Session ID regeneration and secure cookie handling.
- Login: Access the system with your assigned credentials.
- Dashboard: automatically redirected to your role-specific dashboard (Student, Teacher, or Admin).
- Teachers: Click "Update Location" to send a GPS ping.
- Admins: Navigate to "Monitor" to view the live tracking map.
Contributions are welcome!
- Fork the repository
- Create a feature branch (
git checkout -b feature/NewFeature) - Commit your changes (
git commit -m 'Add NewFeature') - Push to the branch (
git push origin feature/NewFeature) - Open a Pull Request
Copyright (c) 2026 Jaderby Peñaranda. All Rights Reserved.
This software is a commissioned work depending on proprietary and confidential information. Permission is hereby granted to the client/student to use this software solely for the purpose of academic requirements and thesis defense.
See the LICENSE file for full details.


.png)
.png)