d983c0d2d81cf92308ec17284966809f5e831f9d
Backend: - studentController: scope teacher student list/count by timeline-latest enrollment (ORDER BY ay.year_range DESC, e.grade_level DESC, e.id DESC) instead of MAX(id) - documentController: same timeline-based scoping for teacher document access - folderController: same timeline-based scoping for teacher folder access - dashboardController: same timeline-based scoping for teacher dashboard stats - archiveController: same timeline-based scoping for teacher archive view - notificationController: replace MAX(id) enrollment subqueries with timeline sort; add broadcast notification support (entity_type IS NULL, category IN (student/document/system)) - schema, routes, reports, requirements, users: various supporting updates Frontend: - auth_repository: restore FlutterSecureStorage for JWT token storage (was broken: migrated to SharedPreferences while all other repos read from FlutterSecureStorage, causing all API calls to send null token silently) - student_model: add latestEnrollment getter computed dynamically from enrollments list; expose latestGradeLevel/latestSection as getters with fallback to server-supplied values - student_provider: invalidate studentDetailProvider on update/bulkEnroll/bulkGraduate - inactivity_wrapper: fix timeout 3000s -> 300s (5 min); improve _handleInactivity guard - dashboard, documents, settings, students, users screens: various UI updates Chore: - .gitignore: add .env, *.db, student uploads, debug/scratch scripts, flutter build artifacts - remove tis_rms.db from git tracking (runtime data, should never be committed)
TIS RMS (Records Management System)
A comprehensive, client-server Records Management System designed to streamline document handling, student records management, and automated data extraction.
🏗 Architecture Overview
This project is divided into two primary components:
1. Frontend (Flutter Windows Application)
A modern, performant desktop application tailored for Windows, built using Flutter.
- Key Technologies: Flutter, Riverpod (State Management), Dio (Networking), Syncfusion PDF Viewer.
- Core Modules:
- Dashboard: Overview of recent activities and user history.
- Document Management: Upload, preview, and manage student records and documents.
- OCR Integration: Automatically extract data from scanned documents directly into the system.
- User & Student Management: Interface to manage student profiles, teacher records, and administrative settings.
- Reports Generation: Support for standard educational Excel templates (e.g., School Form 10).
2. Backend (Node.js REST API)
A robust and lightweight local server providing data persistence and powerful OCR processing capabilities.
- Key Technologies: Node.js, Express.js, SQLite (
better-sqlite3), JWT (Authentication), Multer (File Uploads). - Core Features:
- Authentication: Secure login and session management using
bcryptandjsonwebtoken. - Local Database: Utilizes a fast, local SQLite database (
tis_rms.db) for portability and simple deployment. - OCR & PDF Engine: Integrates locally bundled Tesseract OCR and Ghostscript to securely process and extract text from images and PDFs completely offline.
- File Handling: Secure temporary storage and parsing pipeline for incoming files.
- Authentication: Secure login and session management using
🚀 Getting Started
Prerequisites
- Node.js (v18 or higher recommended)
- Flutter SDK (stable channel)
- Visual Studio with C++ workload (for compiling the Windows Flutter app)
Backend Setup
- Navigate to the
backenddirectory:cd backend - Install dependencies:
npm install - Copy
.example.envto.envand configure your environment variables. - Start the server:
(For development, you can use
npm startnpm run devif nodemon is configured)
Frontend Setup
- Navigate to the
frontenddirectory:cd frontend - Fetch dependencies:
flutter pub get - Run the Windows application:
(To build the release executable, run
flutter run -d windowsflutter build windows)
📦 Included Dependencies & Tooling
- Tesseract & Ghostscript binaries: The backend repository includes bundled Windows binaries for Tesseract OCR and Ghostscript to guarantee that document processing works out-of-the-box without requiring complex system path configurations.
- Inno Setup: Includes an installer script (
TIS_Frontend.iss) for easily packaging and distributing the compiled Flutter application.
Languages
Dart
98.4%
C++
0.6%
CMake
0.3%
Kotlin
0.3%
Inno Setup
0.3%