Files
TIS_RMS/frontend/AGENTS.md
T

1078 lines
63 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BACKEND WORKFLOW (F:\SumbrerongBato\tis_rms_server\backend)
1. Read/Analyze Task → Inspect backend directory.
2. Draft Code → Execute Quality Gate (Accept / Decline).
3. Post-Code Loop: Analyze Errors → Resolve → Re-verify until Errors == 0.
4. Terminal Exit: If build clean → Execute `git push`.
# FRONTEND WORKFLOW (F:\SumbrerongBato\tis_rms_server\frontend)
1. Read/Analyze Task → Inspect frontend directory.
2. Draft Components/Logic → Execute Quality Gate (Accept / Decline).
3. Post-Code Loop: Analyze UI/Build Errors → Resolve → Re-verify until Errors == 0.
4. Terminal Exit: If build clean & lint passes → Execute `git push`.
---
# ⚡️ TOKEN COMPRESSION PROTOCOL
## 1. INPUT RESTRICTIONS (CONTEXT DRYING)
- Ignore system-level file-tree re-reads unless files change (Δ).
- Avoid parsing historical chat history beyond the immediate code break.
- Reference internal libraries by name only; do not request full source mappings.
## 2. OUTPUT SYSTEM CONSTRAINTS (ZERO BLOAT)
- NO natural language intros, greetings, or conversational transitions.
- NO explanations, rationales, or "why this works" breakdowns.
- NO summaries of work completed or code recap commentary.
- Exclude all code comments, inline documentation, and docstrings.
## 3. PATCH FORMATTING (MICRO-DIFFS ONLY)
- BANNED: Full-file reprinting, multi-line blocks of unchanged code.
- MANDATORY: Return micro-diff format or target lines replacement only:
```diff
- [old line]
+ [new line]
```
- If a file creation is required, generate minimal skeleton logic only.
## 4. QUOTA BRAKING
- Max output limit per prompt turn = 150 tokens.
- If patch logic requires >150 tokens: STOP, emit `[TOKEN LIMIT BRAKE]`, and wait for chunked instructions.
---
# 📱 FLUTTER UI/UX RULES
- Stack: Flutter (latest) + Riverpod (AsyncNotifier/Notifier) + Material 3 (`useMaterial3: true`).
- Palette: Use existing `Theme.of(context).colorScheme` tokens only. Never hardcode hex values.
- Layout: Stack actions vertically on Android (`Column` with full-width `ElevatedButton`).
- Output: No design essays. Return optimized widget code immediately.
---
# TODO
- dont do tasks with "(dont do)"
<!-- ## (dont do) Connected users api
- i will use this to separate server manager
- create a api for this
- flutter: use heartbeat package
- connected users, detects windows or android, users admin or teacher, username, ip, login time datenow, last seen datenow
- every minute
- in memory list users
- server status, cpu mem usage, connected users, uptime
- separate the connected users and status api -->
<!-- ## (dont do) backup/restore feature
- Use better sqlite 3 backup api, db.backup()
- Automatic backups (Daily, Weekly, Monthly, or Custom)
- Configurable maximum number of snapshots (e.g., 5, 10, 20)
- Timestamp-based backup names
- Backup history in the UI
- One-click restore
- Automatic deletion of the oldest snapshot only after the newest backup is successfully created and verified
- Metadata for version and backup details
- Use configuration file json for backup and restore
Files backup/restore - mirror mode or zip -->
<!-- ## settings screen
- add set start day, month and end year. month and day for the active year
- auto graduated the student that are grade 10 and grade 12 in the active year, make it sequential
- add logs for these make it on one log compiled all students, separate per grade level
- if not set the start day, month, end year, do not auto graduate
- remove database management, this is separate windows app -->
<!-- # reports screen
- exports use the custom success/error dialog
- add clickable link path for success
- fix the overflow cards of overall compliance, students with issues, total missing documents -->
<!-- ## backend server backup/restore
- do not use zip and unzip -->
<!-- # ANDROID APP
# DOCUMENT SCREEN
- add back prevention active multi select
- 1st back, deactivates multi select
- 2nd back, navigates to dashboard screen
- if the mutli select deactive
- 1st back, navigate to dashboard
- add back prevention inside student folder
- 1st back, navigates back folder 'Student Folders' tab
- 2nd back, navigates to dashboard screen
- if the open folder is not present
- 1st back, navigate to dashboard
# STUDENT SCREEN
- add back prevention active multi select
- 1st back, deactivates multi select
- 2nd back, navigates to dashboard screen
- if the mutli select deactive
- 1st back, navigate to dashboard
# ARCHIVES SCREEN
- add back prevention inside student folder
- 1st back, navigates back folder 'Student Folders' tab
- 2nd back, navigates to dashboard screen
- if the open folder is not present
- 1st back, navigate to dashboard -->
<!-- # DOCUMENTS SCREEN
1. apply dark mode
# ARCHIVES SCREEN
1. apply dark mode -->
<!-- - seach feature
- search icon into 'X' when searched an user, clears search and refresh users list
- fix searched field didnt hide when searched an user -->
<!-- # DOCUMENTS SCREEN
- copy file rename format remove the timestamp in the copied filename
- remove the feature: excel to pdf
# STUDENT SCREEN
1. edit student screen -> enrollments tab -> auto enrollment OCR:
- do not add in database if not 7-12 grade level detect
- add manual validation to add year level, grade level, section before saving to database
- in manual validation add actions accept, decline, or delete, use only icons.
- for icon only icons no container, no background, no border
- fix drag and drop not working in windows app
2. Add new student screen:
- fix drag and drop not working in windows app -->
<!-- # AUTO ENROLLMENT
- currently supports only SF9 and SF10
- SF9 is equal to report card, Form 138, School Form 9, Student Report Card, SF1 for JHS/SF9 for SHS
- SF10 is equal to School Form 10, Form 137, Form 137-A, Student Permanent Record -->
<!--
# DASHBOARD SCREEN
- notification bell open -> in windows app disable slide feature its for android only
# STUDENTS SCREEN
- Add new student screen -> back button and next button in the bottom make the same size
- Bulk add student screen -> make the button not full rounded same from "add new student screen"
# DOCUMENTS SCREEN
- Document preveiew modal -> make it fullscreen modal -> add "add to print list" icon button -> move the zoom in/out inside of the pdf or image viewer -> add "open with" icon button for excel files to open external excel viewer
- hold feature to see more menu in android add "view student profile" -->
<!-- # ARCHVES SCREEN
- From "DOCUMENTS SCREEN", add hold feature for android and right click for windows to see more menu, add multi select and its multi select menu, and FAB print list for android, button print list for windows
- fix grid view in all archived docs tab -->
<!-- # SETTINGS SCREEN
- remove the extension name buttons make it only shows in dropdown
# USERS SCREEN
- add new user wolt modal -> do not make the stepper clickable -> email address when tpyed '@' shows all common email domains -->
<!-- # ARCHIVES SCREEN
- remove background color and border of the filter icon button -->
<!-- # ANDROID APP PUSH NOTIFICATION
- notication only works when the app is open, make it work even the app is not opened -->
<!-- # REPORTS SCREEN
- fix all data in compliance sections not fetched from the backend realtime -->
<!-- # VIBRATION FEATURE
- android: add haptic feedback for android, add dynamic vibrate/normal vibrate for all success, error, info dialogs, dynamic vibrate depends what dialog it is -->
<!--
# DOCUMENTS SCREEN
- filter modal: remove status filter for verified, draft and pending
# SETTINGS SCREEN
- Academic year ... -> font color for "Check/Run Auto... now" white in dark theme and black in light theme -->
<!--
# DASHBOARD SCREEN
- recent activites:
- update: enrollment description -> [year] - [grade level] - [section] - student [full name] - [LRN last 4 digits then first as bullet point]
- add: filter modal -> entity type of enrollments and user -->
<!-- # STUDENT SCREEN
- rename: filter modal 'Item per page' to 'Students per Page'
- student profile -> add fixed margin for modal so the loading makes the loading modal smaller then bigger
- ADD/EDIT STUDENT -> update the date of birth dont add automatic year only automatic hyphen, make deletable too
- add margin bellow of 4Ps toggle
--->
<!-- # STUDENT SCREEN
- Add new student modal -> Academic year fix need to reselect before selecting a section (done) -> grade level need to reselect to select section -->
<!-- # SPLASH ANIMATION
- use the backdrop and detects landscape/portrait and device theme (light or dark)
- remove the server connection loading, instead show entertaining loading words -->
<!-- # LOGIN SCREEN
- Login section background color -> add animation transparency but not too transparent its like blur after the full screen animation -->
<!-- # ALL CIRCULAR LOADING IN BUTTON
- make loading not oblong render it fully circle -->
<!-- # NATIVE SPLASH SCREEN IN ANDROID APP
- use -->
<!-- # DOCUMENTS SCREEN -> Upload Files, STUDENT SCREEN -> Add new student screen
- "use camera" fix error after back shows error "failed to scan document: PlatformException (Document Scanner, Operation Cancelled, null, null)", use appropriate error message -->
<!-- # DASHBOARD LOGS
- recent activites:
- update: enrollment description -> "Enrolled student [LRN last 4 digits then first as bullet point] in [year] - [grade level] - [section]"
- update: description update student -> "Updated student [LRN last 4 digits then first as bullet point]"
- update: bulk description -> "Updated [number] students [last name] - [LRN last 4 digit then first as bullet point]", use unlisted list for multiple students
- UI UX:
- use the dashboard list design inside the screen
- use dashboard activity details modal inside the screen
- use filter modal design in students screen
- fix the color and layout of filter button and clear, theme responsive
- user account history:
- update: description of created user -> "Added user: [username] as [user role]"
- update: description of updated user -> "Updated user: [username] [what changes in bullet point]"
- add: log for users deactivate/activate user -> "[Deactivated/Activated] user: [username]"
- add: log for reset user password -> "Reset password for user: [username]"
- UI UX:
- use the dashboard list design inside the screen
- use dashboard activity details modal inside the screen
- use filter modal design in students screen
- fix the color and layout of filter button and clear, theme responsive -->
<!-- # STUDENT SCREEN
- Add new student screen:
- Android app:
- change the layout in name section in stock each other -> first name -> middle name -> last name -> suffix
- hide the back button and next button, when typing
- Windows app:
- change the layout in name section -> 2 rows -> first name -> middle name, last name -> suffix
- Responsive layout edit student screen: text boxes same from new "add new student screen layout" and buttons responsive
- student profile modal: error exception: no enrollment, add appropriate message -->
<!-- # ALL SCREEN NO CONNECTION TO SERVER OR NO DATA RETRIEVED
- make a single widget for all no server fetch/no connection retrieve data
- no internet or no server fetch message on all screen: use appropriate message -->
<!-- # ARCHIVE SCREEN
- add in show menu icon convert to pdf only for excel files
# DOCUMENTS SCREEN ANDROID APP
- add in show menu icon convert to pdf only for excel files -->
<!-- # DOCUMENTS SCREEN AND ARCHIVE SCREEN -> opened stundent folder
- add space for table in bottom if no pagination
- remove the space for table in bottom if it has pagination -->
<!-- # STUDENT SCREEN
- add space for table in bottom if no pagination
- remove the space for table in bottom if it has pagination -->
<!-- # ARCHIVES SCREEN
- copy the table from the sudent folders tab to all archived docs, the pagination is inside of the table section -->
<!-- # recycle bin modal
- apply dark theme responsive
- copy the multi select menu from the documents screen to this modal
- add delete all/ restore all when the multi select menu active -->
<!-- # TEACHERS ACADEMIC SETUP SCREEN
- Teachers tab: change the font color in dark theme acad year and section text
- Years tab: add validation cant add next two years for example this year is 2026 you cannot add acad year 2027-2028 upwards
- Years tab: fix automatic add years -> only add example this year is 2026 only add acad year 2026-2027
- Sections tab: filter dropdown -> tabs filtering by grades -->
<!-- # DOCUMENTS SCREEN AND ARCHIVES SCREEN
- apply excel icon for the documents in mobile
- add icons for all documents based on their file extension -->
<!-- # STUDENTS SCREEN
- ADD NEW STUDENT SCREEN -> enrollment step -> make the selection realtime when select year refresh the grade level, when selected grade level refresh the section
- EDIT STUDENT SCREEN -> "add enrollments" -> make the selection realtime when select year refresh the grade level, when selected grade level refresh the section -->
<!-- # STUDENT SCREEN -> EDIT STUDENT SCREEN -> Enrollments tab -> Add enrollment
- same size save button from cancel
- add left and right margin for the buttons layout -->
<!-- # STUDENT SCREEN
- add new student -> LRN field -> add preset "308035" first 6 digits for school id
# DOCUMENT SCREEN
- upload document -> review & upload step -> STUDENT LRN text field only number can input -->
<!-- # WINDOWS APP
- remove the logo in custom title bar (only for windows app) -->
<!-- # BACKDROP IMAGE
- add some overlay mini blur
# SEARCH BAR (ANDROID APP)
- add left and right margin for search bar
- dont make the backdrop image resize when the search bar is active -->
<!-- # DOCUMENT SCREEN AND ARCHIVE SCREEN
- copy from STUDENT SCREEN the table bottom spaces for pagination to the screen to these screen DOCUMENT AND ARCHIVES SCREEN -->
<!-- # DOCUMENT SCREEN AND ARCHIVES SCREEN for ANDROID APP
- make a menu FAB -> horizontal menu animation
- move the multi select menu to the menu FAB
- if only PRINT LIST need only to show, hide/remove the UPLOAD DOCUMENTS in menu FAB -->
<!-- # DOCUMENT SCREEN
- move filter icon between multi select and bulk add -->
<!-- # DOCUMENT SCREEN AND ARCHIVES SCREEN
- Properties modal: add who uploads
- add in backend data for file size to get the accurate file size -->
<!-- - list view -> documents only keep the folder design -> Only file name, under the file name is size of file ex. [2MB], then right side the date ex. [Dec 20, 2024] then 3 dots for menu
- list view -> Folder only -> add count files inside ex. [3 items] -> keep the chips for JHS SHS just add, do not modify the chips code, only add under the file name
- hide/remove the status completed and chip in list view for documents only
- add multi select in more options like on windows app for android app
- make the grid view compact -> remove the background color sections -> Filename only, and Icon -> hide/remove the complete chip -> remove the 3 dots for menu in right side -->
<!-- # STUDENT SCREEN -> BULK ADD STUDENT -> APPLY ENROLLMENT STEP
- use LRN text field from ADD STUDENT SCREEN, do not edit the design and other text fields only the LRN text field -->
<!-- # STUDENT SCREEN
- use icon for multi select, no background color and border -->
<!-- # SEARCH BAR
- Windows app:
- 'x' button not clickable and does not remove the history
- make the history renders half of the screen
- Android app:
- make the history renders half of the screen, dont modify other code, only the design -->
<!-- # DOCUMENT SCREEN
- Android app:
- remove the multi select icon and in the more option icon also
- keep only multi select icon in the menu FAB
# ARCHIVE SCREEN
- Android app:
- remove the multi select icon in the more option
- keep only multi select icon in the menu FAB -->
<!-- # DOCUMENT SCREEN AND ARCHIVES SCREEN
- Student Folders:
- remove the title column in DOCUMENT SCREEN, but keep the count items and chip requirements progress
- remove the title column in ARCHIVES SCREEN -> remove the LRN -> add right click/hold feature and actions a view student profile -> show only Student name, under the student name the item count status chip next before the action button -->
<!-- # STUDENT SCREEN
- move the filter icon between the multi select icon and bulk add icon in windows app
- Filter modal:
- Doc status attention rename selections from "Default Doc Status Order, Low, High" to "Default, Completed, Pending"
- remove the LRN Sort Order -->
<!-- # USER MANAGEMENT
- add another filter for inactive status, show in [all, admin, teacher] filter for active users -->
<!-- # CUSTOM DIALOGS
- add sound effects for success, error, warning, info, confirm -->
<!-- # STUDENT SCREEN
- student profile -> action icon button -> convert to bottom right FAB
- file delete moved to inside of recycle bin -> missing requirements count, dont count files inside of recycle bin -->
<!-- # STUDENT SCREEN
- fix/stay the table header when no student found -->
<!-- # DASHBOARD SCREEN
- teacher side -> no assigned section theme color
- remove analytics and KPIs in teacher side keep only the top students by documents and needs attention -->
<!-- # DOCUMENTS SCREEN
- archive files hide in list -> move archive files into in more icon where the switch grid includes, show the "archives" when the student folder opened or if the student have archived files -> hide the archives files in the documents list, only show completed files -->
<!-- # REPORTS SCREEN
- compliance tab -> "students per year" section -> year filter list all acad year -> deafult selected is 4 consecutive years (ex. 2022-2023, 2023-2024, 2024-2025, 2025-2026)
- horizontal scroll bar hint for android app
- filter by year default as active year
- compliance hover on missing count shows all missing documents separated jhs shs
- compliance tab -> "Student list" section -> remove missing requirements -> make the missing column hover just like on "STUDENT SCREEN", can see missing documents separate jhs and shs same from "STUDENT SCREEN" -->
<!-- # REPORTS SCREEN
- horizontal scroll bar hint for android app all overlaps graphs
- hover missing document make the design theme color responsive
-
# STUDENT SCREEN
- hover missing document make the design theme color responsive -->
<!-- # AUTHENTICATION
- user management -> expired the jwt of deactivated user
- i can receive a push notifications even i logged out -->
<!-- # DISCONNECTED OR NO CONNECTION
- add dialog to reconnect or loads the splash screen
- always check LAN connection then if the LAN connection not working then use the tunnel connection -->
<!-- # STUDENT SCREEN
- add new student screen -> remove N/A on suffix dropdown
# DASHBOARD SCREEN
- upload document limit document type limit -> duplicate files -> if one file for one document type already exist, dont allow to upload another one
- kpi and analytics (active year)
- document status distribution -> count by document type uploaded not count of total documents uploaded
- Document type breakdown -> add filter dropdown for all document type -> if selected one document type show all year level in one pie chart, then it has over to the total
- top student by documents -> dont count all uploaded document, just count document type uploaded over the total missing required documents -->
<!-- # DASHBOARD SCREEN
- "Top students by documents" and "needs attention" view all -> make the tab responsive use 1 word for tab title or remove the icon
# STUDENT SCREEN
- student profile modal -> make the modal have fixed size so every loading its not smaller when loading -->
<!-- # STUDENT SCREEN
- user friendly logs/histories and "analytics & KPIs" that uses basic english understandable by normal user
# TEACHERS & ACADEMIC SETUP
- hide or remove from the list all users have deactivated status -->
<!--
# STUDENT SCREEN
- student profile modal -> make the lrn can be copy add icon button to automatically copy -->
<!--
# DOCUMENT REQUIREMENTS SCREEN
- teachers cannot upload documents
# REPORTS SCREEN
- fix all horizontal scroll bars always visible not hide -> need to touch the graphs to show -->
<!--
# TEACHER & ACADEMIC SETUP
- Academic year updated dialog -> just one title word "Updated"
-->
<!-- - Deped transparency board -> rephrase the the description use easy to understand -> make it simple and user friendly -> dont make it AI slop -> make it responsive -->
<!-- # STUDENT SCREEN
- table dropdowns only status have dropdown, other convert to icon click to change the sorting order -->
<!-- # REPORT SCREEN
- deped transparency board -> remove the access and equity -> change the enrollment by sex & year to data on enrollment which compares the previous year students count and active year students count, difference, and remarks if increasing or decreasing, separate the jhs and shs
# USER MANAGEMENT
- make the admin side that resets user password send into their email the link to reset password add expiration time -> then push notif the admin that successful or not that email link, if not successful or the time has expired send notif to admin, if successfull push notif the user and admin -->
<!-- # DOCUMENT REQUIREMENTS
- redesign the screen keep all logic change the layout and design only -->
<!-- # SETTINGS SCREEN
- make it modal, add current password then new password, keep the indicators for password strength
# REPORT SCREEN
- move the export button inside of the compliance section -->
<!-- # DOCUMENT SCREEN AND ARCHIVES SCREEN
- grid view -> fix overflow folders card
# SETTINGS SCREEN
- add padding reset password modal -->
<!-- # STUDENT SCREEN
- add/edit student birthdate use date picker
# TEACHERS & ACADEMIC SETUP
- years tab -> add/edit -> use toggle acad year not dropdown
- acad year success dialog title overflow
# DOCUMENT SCREEN
- upload dialog success title fix overflow
# ARCHIVE SCREEN
- archive purge remove in frontend and backend, prevent removal of student information and documents when deleting archives files
# BACKEND SERVICES
- remind all teachers (email) -> send list of students need attentions
- notif fix not pushing notif on android
- email reset password cant send an email -->
<!-- # USER MANAGEMENT SCREEN
- fix the table column title
- user detail modal -> redesign the three action buttons make it simple, dont use many colors
- add send an email that their account was deactivated/activated, created -->
<!-- # STUDENT SCREEN
- optimize the cards like from "DASHBOARD SCREEN" -> improve the components for low end android phones -->
<!-- # USER MANAGEMENT SCREEN
- make table column header title fixed on top when scroll down -->
<!-- # DOCUMENTS SCREEN
- redesign the tab and its top header, make it simple and responsive, make the design similar to the multi select menu (done) -> improve the design for lower end android, add redesign the list view and its grid (done)
# ARCHIVES SCREEN
- redesign the tab and its top header, make it simple and responsive, make the design similar to the multi select menu (done) -> improve the design for lower end android, add redesign the list view and its grid (done) -->
<!-- # USER SCREEN
- reset password modal it has overflow under the buttons (done)
# SETTINGS SCREEN
- make the user details, academic year & auto graduation, auto enrollment into collapse (done)
# USER MANAGEMENT SCREEN
- move the add FAB and search icon into the navigation header like same from student screen and dashboard screen (done)
- remove the title and description of the screen (done)
# REPORT SCREENS
- remove the title and description of the screen (done) -->
<!-- # SETTINGS SCREEN
- fix overflow in auto graduation skip dialog title (done)
- edit schedule section add selectable years from academic years can select not add new acad year, if selected automatic active that selection status into active year (make this realtime fetch from backend) (done)
# STUDENT SCREEN
- edit student screen -> enrollment tab -> add enrollment modal -> add list of all current enrollments can delete, edit (make this realtime fetch from backend) (done) -->
<!-- # SETTINGS SCREEN
- all widgets that is collapse only title and collapse icon, move inside other components (done)
- add in appearance enable/disable sound and vibration, update the title and make it collapse only title and collapse icon (done) -->
<!-- # SETTINGS SCREEN
- default the vibration into disable, vibration hide in windows app (done)
- in academic & auto graduation collapse too many information, remove the duplicated information in this section (done)
- auto uncollapse all collapsable component when leave from this screen (done) -->
<!-- # SEARCH BAR HISTORY
- fix the history make sure it works at all .net framework, the history not working when clear and closing the history, and sometimes it works but the history disappears you need to active the search bar again to appear (done) -->
<!-- # DASHBOARD SCREEN
- profile pic dropdown when it click many times it has delay and opens multiple dropdowns
# DOCUMENTS SCREEN
- file icon click enables multi select
- if possible: icon of each file is mini preview of the document
- filter modal: remove status filter
- download success dialog, add notes and its download path location -->
<!-- # USER SCREEN
- edit/add modal, make the the name text field in android app stack each other, add required email or phone number
- dont show the password to success dialog, just show the username and action success and add sent an email to the user email
- add after type '@' in email shows common domains, like @gmail.com, @yahoo.com, etc
# STUDENT SCREEN
- in windows app, make it modal the add student screen -->
<!-- # SETTINGS SCREEN
- add deletion of the account, add at the very bottom of the settings -> sends an email where user needs to click a link to delete the account, add a hidden super admin account and hidden from the frontend only developers can access this the role is admin but hidden to the system only developer can use this account to manage the users
# ARCHIVE SCREEN
- file icon click enables multi select
- if possible: icon of each file is mini preview of the document
- filter modal: remove status filter
- download success dialog, add notes and its download path location
# STUDENT, DOCUMENT, AND ARCHIVE SCREEN
- icon multi select animation, the icon clicked animated to checked icon, remove the checkbox icon next to icon -->
<!-- # DASHBOARD SCREEN
- in storage analytics, use fewer color, make it simple, and list 3-5 files make it dropdown if more than this list limit
- top bottom fade, show the top fade if it has a component on top, same logic in bottom fade
# STUDENT SCREEN
- in windows app, make it modal the edit student screen
- use card for student table in windows app, make sure hover of doc status working and action button
- add right click (windows app) and hold feature (android app) -> dropdown with action label (view details, edit (active student details tab), add enrollment (active enrollment tab), view documents/archive folder (if not enrolled, shows archive, same functionality of the action button of open document button), change status [graduate, transfer, drop, set inactive] )
- in android app add dropdown to show the doc status
- remove the multi select button on screen header
- make the add studen FAB into icon button right side of filter button, make the color attract attention dont add background and border color
- add fade at top and bottom same from "dashboard screen"
- top bottom fade, show the top fade if it has a component on top, same logic in bottom fade
# ALL SCREENS PAGINATION
- redesign the pagination UI based on this picture F:\SumbrerongBato\tis_rms_server\Pictures\Screenshot 2026-09-17 181328.png
- Desktop: Option 02 (Full width, clear text, page dropdown).
- Mobile: Option 01 (or compact: ‹ 1 2 3 › + Page [ 1 ▾ ]).
# DOCUMENT SCREEN
- all FAB in android move to the screen header title like in dashboard screen
- optimize mini preview/thumbnails (backend & frontend) for fast loading:
- backend: generate & cache resized lightweight thumbnails (~250px WebP/JPEG) + HTTP Cache-Control headers instead of serving raw original files
- frontend: add cacheWidth/cacheHeight image memory decode optimization to eliminate scroll lag
- do not use wolt modal for "upload & OCR modal" and print queue modal after this remove the package of wolt modal sheet
- in print queue, when printing Excel file(s), show dialog asking to automatically convert them to PDF and proceed with printing instead of showing a blocking error dialog
- print list modal
- print list history, print email to the student: email (optional), add available date to pickup, message to email can be manual message typed by registrar/staff or preset message (optional) -->
<!-- # DASHBORD SCREEN
- use the icon from windows app for notifications, and search icon in android app screen header icons
# STUDENT SCREEN
- in android app, screen header icon for search icon like in dashboard screen
- click icon add animation that enables multi select in android app
- in android app, remove the multi select icon button in screen header
# DOCUMENTS SCREEN
- F:\SumbrerongBato\tis_rms_server\screenshots\screenshot1.png -> align tabs section to the list layout, decrease space bottom list between the pagination buttons, in android app
- remove the multi select icon, in android app
- in android app, screen header move the print list icon, upload icon
- in file preview screen add icon button of all dropdown menu from the more menu -->
<!-- # STUDENT SCREEN
- in android app, screen header icon add icon button for "add student" make it more attractive
# DOCUMENT SCREEN
- file preview screen -> in android app make it more menu icon only delete and copy, make it responsive in android app base on screen size for default icons are 4 exclude the copy and delete, always inside are copy and delete in more icon if screen size small put all in more icon
- in filter documents only add document type, make it dropdown not modal
# ARCHIVE SCREEN
- do the same from document screen design from this chat today -->
<!-- # STUDENT SCREEN
- for non-enrolled/archived students (Graduated, Transferred, Dropped, Inactive):
- backend: in `studentController.js`, include 'Archived' status alongside 'Completed' (`status IN ('Completed', 'Archived')`) when calculating missing/completed document requirements so submitted documents don't reset to 0/3.
- student card: if student status is not 'Enrolled', style the doc status as an archived badge (e.g., "📁 X / Y Docs (Archived)" with muted slate/grey indicator) instead of the active orange warning bar; if 0 requirements/no enrollment records, display "Pending Enrollment" or "No Active Requirements".
# DOCUMENT SCREEN
- in upload document modal (`upload_ocr_modal.dart`), when a student is matched/selected, display a compact requirements summary strip showing all applicable requirements (filtered by JHS/SHS grade level):
- separate into **Needed / Missing** (highlighted in orange/warning for immediate action) and **Completed** (subtle green/grey checkmarks confirming existing files on record).
- allow tapping a needed requirement chip to auto-assign that document type to the selected/pending file in the upload list.
- in the "Select Document Type" dropdown, add subtle badges tagging each item as `(Needed)` or `(Completed)`.
- post-download action for downloaded documents:
- in download success dialog/notifications, add two action buttons: "Open File" and "View in Folder".
- "Open File": immediately opens the downloaded document in the device's default viewer via `open_filex`.
- "View in Folder":
- in Android app: opens the device file manager directly inside `Download/TIS_RMS` via `android_intent_plus` (targeting `content://com.android.externalstorage.documents/document/primary:Download%2FTIS_RMS`, falling back to `ACTION_VIEW_DOWNLOADS`).
- in Windows app: opens File Explorer highlighting the saved file (`explorer.exe /select, <path>`).
- print list & history (documents and archives screen):
- history tab: add "Clear History" action with confirmation dialog.
- student pickup email notification: if documents in queue belong to multiple students, group by student so notifications and documents are sent separately to each student/guardian (with optional custom message from registrar).
- responsive UI: keep as modal dialog on Windows desktop, but use dedicated screen (or full-height bottom sheet) on Android app to prevent mobile keyboard overflow. -->
<!-- # STUDENT SCREEN
- in student profile detail modal (`student_profile_modal.dart` & `requirementController.js`):
- backend (`requirementController.js` -> `getMissingRequirements`):
- include both mandatory (`is_mandatory = 1`) and optional (`is_mandatory = 0`) document requirements so the frontend receives the full requirement checklist for the student's level (JHS/SHS).
- include `'Archived'` document status alongside `'Completed'` (`status IN ('Completed', 'Archived')`) and return `d.status AS document_status` so the frontend knows whether a file is active or archived.
- frontend (`student_profile_modal.dart`):
- display both mandatory and optional document requirements with clear visual differentiation (`Mandatory` vs `Optional` tags/badges).
- if a requirement's document on file is `'Archived'`, do NOT label it as "Done" or "Completed" — explicitly display it as **`Archived`** (with a slate/blue-grey archive badge and folder/archive icon).
- ensure the UI is distinct from the student card's simple doc status progress bar (provide a dedicated checklist breakdown showing 4 explicit states: `Completed` [green], `Archived` [slate/blue archive], `Missing Mandatory` [warning], and `Optional Not Submitted` [muted info]).
- archived document counting rule across doc status & upload chips:
- for **Enrolled** students: only active `Completed` documents count towards requirement completion; any archived document does NOT count as fulfilled (displays as `NEEDED` in the Document upload modal chips, and does not count towards active doc status progress).
- for **Non-Enrolled** students (Graduated / Transferred / Dropped / Inactive): archived documents count towards their historical record (`📁 X / Y Docs [Archived]`). -->
<!-- # DOCUMENT SCREEN
- upload document on browse/scan document modal (`upload_ocr_modal.dart`):
- **Completed fix**: a requirement marked as `Completed` must visually reflect its actual completed state (checked icon, green color); do not show it as still pending/unchecked.
- **Collapsible requirement list**: make the document requirement list in the modal collapsible/expandable so it does not take up excessive vertical space on smaller screens.
- **Responsive layout**: ensure the requirement list and its items resize/adapt properly across different screen widths (no overflow, no truncated text). -->
<!-- # REPORTS SCREEN
- DepEd Transparency Board separate section widgets:
- clean minimal header banner with title, academic year filter, and PDF export (no clutter/info overload).
- separate standalone section widgets/cards: 1. Data on Enrollment, 2. Dropouts & Transferees, and 3. 4Ps Beneficiaries.
- each section card integrates its visual chart and detailed comparative table seamlessly without sub-tabs.
# ADD "UPDATE POP UP" AFTER SPLASH SCREEN
- detect version based on installed app vs latest tag version from GitHub repo https://github.com/ssbg04/TIS_RMS.
- `AppUpdateService` queries latest release via GitHub API, compares semver (`PackageInfo`), and resolves platform asset (.exe / .apk).
- `UpdateAvailableDialog` with installed vs latest version pill, platform asset tag, release notes, and download link.
- `SplashScreen` check with 4-second timeout and non-blocking background error handling. -->
<!-- # STUDENT SCREEN
- student profile detail modal, remove the edit button beside the delete -> add separate edit button for student details and enrollment tab
- delete button change into inactive
- edit student modal, status remove the inactive
- multi modal action, remove inactive
- in android app, the click icon on student icon add short delay not a instant enables multi select
# REPORT SCREEN
- DEPED TRANSPARENCY BOARD, add collapse information for each widgets add short description for what each widget is for
- use tab design simple -->
<!--
# DASHBOARD SCREEN
- dont count the super admin in count
# SETTINGS SCREEN
- change password modal, rename the label UPDATE PASSWORD into UPDATE
# USER SCREEN
- user profile details, edit action buttons label use one word, make the button size the same -->
<!-- # REPORTS SCREEN
- add horizontal scroll bar for tab of sections in deped transparency board
- add in compliance and analytics in student document compliance missing status add bottom sheet modal and dropdown icon for missing status
- compliance & analytics tab:
- student document compliance, make the filter into modal, add it into screen header in android
- students per year, make the filter into modal, list all academic years and its checklist
# Automatic archiving
- not detect enrolled based on time limit on start date, complete the requirements to still enrolled (ex. 30 days), can dynamically change, no enrollment after the due date (auto archive), status (not enrolled, inactive)
# Audit Trail/History Screen and Tab
- new screen and tab, move user history and recent activities from dashboard to here
# Theme
- default the theme to light mode, not based on device theme -->
<!-- # DASHBOARD SCREEN
- document breakdown fix the overflowed
- remove from the frontend user history and recent activities
# STUDENT SCREEN
- fix overflow on edit details button on android app
# DOCUMENTS AND ARCHIVES SCREEN
- fix that on grid view, only large folder icon and under it the name and the status chip and count of docs ex. (3)
# REPORTS SCREEN
- academic year filter on deped transparency board not readable
- compliance & analytics export label color is not theme responsive and reduce size
# SETTINGS SCREEN
- default the auto update enrollment turned off
- add input for automatic archiving grace period
- change password update label color not theme responsive
- the danger zone is transparent fix it -->
<!-- # STUDENT SCREEN
- add student button make the icon button more attractive
- edit student modal 'x' button from left move to the right
- student profile add little bit attrativeness on edit details and edit enrollment
# DOCUMENTS AND ARCHIVES SCREEN
- in grid view for folders, F:\SumbrerongBato\tis_rms_server\screenshots\folders.png check this screenshot check only folder icons copy that design the icon the label below it, then the two chip of JSH and SHS requirement are inside of the icon of folder
- fix the multi select menu that didnt match width same as the list widget check this image F:\SumbrerongBato\tis_rms_server\screenshots\Screenshot 2026-09-19 163043.png
# HISTORY SCREEN
- "F:\SumbrerongBato\tis_rms_server\screenshots\Screenshot 2026-09-19 164307.png" fix this windows app cant list the widgets because and fix too overflow and cant list the widgets in android app F:\SumbrerongBato\tis_rms_server\screenshots\history.png -->
<!-- - report screen -> compliance -> fix fliter button label is in half
- settings screen -> acadmeic year and auto graduation -> edit schedule date modal -> fix button labels is in half
# DOCUMENT SCREEN
- file preview screen -> open with is not working
# WINDOWS SIDE NAV BAR
- windows app -> side bar nav move the archive tab to overview group -->
<!-- # SETTINGS SCREEN
- self deactivation -> fix the _dependents.isEmpty is not true after submit DEACTIVATE type confirmation modal
# REPORTS SCREEN
- android app, hide the collapsable filter, keep the filter button and fix the filter button label is at half
# USER SCREEN
- email validation api myemailverifier for add/edit users before sending the all email transactions
- use the MEV_API_KEY in .env
- example curl:
curl "https://api.myemailverifier.com/api/validate_single.php?apikey=114d4e64cdc3c060568b7f466f4161b1&email=example@example.com"
- Example Response:
{
"Address":"support@myemailverifier.com",
"catch_all": "false",
"Status":"Valid",
"Disposable_Domain":"false",
"Role_Based":"true",
"Free_Domain":"false",
"Greylisted":"false",
"Diagnosis":"Mailbox Exists and Active"
}
# DOCUMENTS SCREEN
- android app: document preview modal -> edit not working, open and open with works
- remove the excel to pdf using backend -> remove in the backend the api and libre office
# HISTORY SCREEN
- make the header of body compact, use the same search icon and filter from other screen for this screen
- in sessions tab the time use 12H format
- users tab fix the time format to 12H format, card title the user that perform to add/edit/deactivate/activate move to the sub-sub-description use basic words, change the "performed by" into -> action by -->
<!-- # SETTINGS SCREEN -> SECURITY collapse widget
- make the security collapse into screen
# HISTORY SCREEN
- remove the header icon and title replace/move the tabs (activites, users, sessions)
# DASHBOARD
- make the layout bento grids for windows app for mobile use normal responsive grid ( columns) -->
<!-- # REPORT SCREEN
- make the layout bento grids for windows app for mobile use normal responsive grid -->
<!-- # STUDENT SCREEN
- edit/add student after success -> still has a loading at background under the tabs
# SETTINGS SCREEN
- move the automatic archiving grace period under the academic & auto graduation collapse -> rename the collapse use basic word -> remove picking academic year, make it automatic choose the active year, dont make it dropdown just choose or pick the active year -->
<!-- # ANDROID / DOCUMENT SCANNER
- reduce android app size: configure google mlkit document scanner to unbundled mode (Google Play Services) while keeping automatic edge detection and enhance
# PDF GENERATION & MANIPULATION
- remove PDF manipulation and generation from frontend, keep PDF viewing
- move PDF manipulation and generation to backend
- move the image assets from this frontend to backend needed for generation
- for PDF manipulation settings for merging pdf and image 0 padding 0 margins, and use short bond paper size -->
<!-- # CAPSTONE MEMBERS SCREEN
- optimize the assets image before using convert into webp, remove the old
- backdrops
- group pictures
- solo pictures
- add these emails for corresponding member
- elliojames01@gmail.com
- antonioclaramaris.21@gmail.com
- ermhardevera11@gmail.com
- chineepasigan@gmail.com
- crischarlesgarcia345@gmail.com
- keep empty for rhina (alibutod)
- add horizontal scrollable list of pictures, slide preview, only one then add cooldown to next pic in 2 seconds, add previous and next buttons, when the last pic next goes back to the first image
- use the group pictures for horizontal scrollable list
- use the solo for individual member profile picture -->
<!-- # STUDENT SCREEN
- add new student scan has no preview of uploaded/scanned document and scan another in android app
- add new student uploading/scanning loading hide the manual input button when loading
- add new student modal the x button from left move to the right -->
<!-- # SETTINGS SCREEN
- auto archiving grace period -> set cutoff date via date picker with calculated days helper preview instead of dynamic days input
# REPORTS SCREEN
- deped tab -> export pdf button per sections on windows app is not responsive
# DOCUMENTS SCREEN
- upload document default requirements section closed/collapsed (manually expandable/collapsible)
# SETTINGS SCREEN
- make the fade at top and bottom fade show when it has item under it if not dont show -->
<!-- # SETTINGS / TEACHER REMINDERS
- settings screen -> add new collapsible card "Remind Teachers" for document requirements due date:
- settings toggle to enable/disable automated email notifications to teachers before due date
- configurable days input/selector (default: 3 days before due date, can manually change)
- sends email notification to advisory teachers with list of missing students per section
- teachers & academic setup screen -> remove "Remind All Teachers" button -->
<!-- # CSV BULK IMPORT ENHANCEMENTS
- bulk student import (add bulk student modal / screen):
- add on-screen CSV format example & template guide (headers: LRN, First Name, Middle Name, Last Name, Extension, Sex, Birth Date, 4Ps)
- add live type / paste CSV input area with "Parse & Preview" to submit directly without needing a separate file
- validation table / live preview showing valid rows and detected errors before confirming bulk import
- academic & sections setup (teachers & academic setup screen):
- add bulk CSV import for academic structure:
- format: Academic Year, Grade Level, Section Name (e.g., `2024-2025, 10, Diamond`)
- add on-screen CSV format example / reference & sample rows
- add live type / paste CSV input area with instant parse, validation preview, and bulk submit -->
<!-- # ACADEMIC & CLASS MANAGEMENT
- make the list reponsive in academic tab for android app
# STUDENTS SCREEN -> ADD NEW STUDENT & BULK IMPORT (ANDROID & DESKTOP)
- UI / Entry Point & Android Accessibility:
- Expose "Bulk Import" on Android (currently restricted to Windows only in `students_screen.dart:1247`)
- Provide a responsive action choice on Android: "Add Single Student" (Stepper Form) vs "Bulk Student Import" (CSV/OCR)
- Ensure single student modal form is fully responsive on Android (handles virtual keyboard, scrollable views, full-width touch targets)
- Target Class / Enrollment Context (Required by Backend):
- Add section selector header: Academic Year, Grade Level, and Section dropdowns (auto-populates current active school year)
- All valid imported students will be enrolled directly into this target section (matching DepEd SF1 masterlist workflow)
- Dual Input Methods (Android-Friendly):
- Method 1: Live Type / Paste CSV area with "Paste from Clipboard" button (zero file-permission friction on mobile)
- Method 2: Compatible CSV file upload via `file_picker` with proper MIME types (`text/csv`, `text/plain`, `*/*`)
- CSV Specifications & Smart Normalization:
- Expected headers: `LRN, First Name, Middle Name, Last Name, Extension, Sex, Birth Date, 4Ps`
- On-screen quick guide & copyable sample template button (`Copy Sample CSV`)
- Auto-normalizations:
- Sex: accepts `M`, `F`, `Male`, `Female` (case-insensitive)
- Birth Date: flexible parsing (`YYYY-MM-DD`, `MM/DD/YYYY`, `MM-DD-YYYY`)
- 4Ps: accepts `Yes`/`No`, `Y`/`N`, `True`/`False`, `1`/`0`
- Names & Extension: auto-trims whitespace and uppercase formatting
- Live Validation & Error Preview:
- Client-side validation before sending to backend:
- LRN: exactly 12 digits, numeric only, check for duplicate LRNs within the batch
- First Name & Last Name: mandatory non-empty strings
- Birth Date: valid calendar date, cannot be in the future
- Live summary stats badge: `Total Parsed`, `Valid (Ready to Import)`, `Errors (Needs Attention)`
- Responsive Mobile Preview:
- On mobile Android: Display list of validation cards (green check for valid, red badge with exact error message for invalid)
- On desktop/tablet: Data table with inline row status indicators
- Action Controls:
- "Parse & Validate", "Clear", and "Import [X] Valid Students" (disabled if 0 valid records or section unselected)
- Post-import summary dialog showing successfully created count vs skipped duplicates
- Auto uploads OCR file scanned after adding -> rename the scanned file of what type is the document -->
<!-- # HISTORY SCREEN
- [DONE] history -> session one ip different account shows active even 1 current login account
- Backend fix in authController.js login(): when a new login occurs, any open sessions from the same IP address belonging to a different user are automatically stamped with logout_at. This prevents stale "ACTIVE NOW" entries in the Sessions history tab.
# USERS SCREEN
- [DONE] remove super admin account
- Frontend fix in users_screen.dart _filter(): added a guard to exclude any user whose role is not 'admin' or 'teacher' (e.g. legacy super_admin accounts) from all views. Backend already filters is_hidden users via WHERE COALESCE(u.is_hidden, 0) = 0.
- [DONE] remove the developer account
- Removed developer seeding in schema.js and replaced with auto-migration to delete any existing `developer` user record.
- Removed `is_hidden` protection guards blocking deletion/status changes in userController.js and authController.js.
- Removed developer exemption in frontend security_section.dart so danger zone card is consistently presented.
# STUDENT SCREEN
- [DONE] student screen tab current year/enrolled students, and all students
- Added _StudentViewTab enum and a segmented tab switcher control below the header.
- "Enrolled · <CurrentYear>" tab auto-applies status=Enrolled + active academic year filter.
- "All Students" tab clears those filters and shows all student records.
- Tab resets to Enrolled on each navigation away/back to Students screen.
# STUDENT SCREEN
- [DONE] loads accurate active year students
- Fixed backend studentController.js to use LEFT JOIN sections (prevents dropping enrolled students with unassigned sections).
- Added academicYearsListProvider listener in students_screen.dart so active academic year is reliably applied to the query as soon as provider data resolves.
- Added fallback await on academicYearsListProvider.future in _applyViewTab to avoid empty year range on initial load.
- [DONE] when searching navigates to all tab
- When typing or submitting a search, students_screen automatically switches view tab to "All Students" and clears specific status/year filters.
- Clicking the "Enrolled" tab automatically clears the search field and restores the active year enrolled filter.
- Also cleared view-tab filters when search is triggered from the mobile search dialog in android_bottom_nav_layout.dart. -->
<!-- # ANDROID APP
- [DONE] hamburger nav bar slide too much touch area on the left
- In `android_bottom_nav_layout.dart`, reduced `drawerEdgeDragWidth` from `MediaQuery.of(context).size.width * 0.45` down to a strict `28.0` edge touch area to prevent accidental drawer opening when interacting with screen content.
- [DONE] report screen in deped tab export pdf cannot download the generated pdf, because of permission denied in android app
- In `download_service.dart`, added `saveBytes()` with adaptive permission management for Android: requests `Permission.manageExternalStorage` on Android 11+ (API 30+) and standard storage permission on Android 10 and below.
- Added multi-tier storage fallback: if public `/Download/TIS_RMS` is restricted by Android OS or denied by the user, gracefully falls back to app-specific external download/document storage directories that never throw permission errors.
- In `AndroidManifest.xml`, added `android:requestLegacyExternalStorage="true"` to `<application>` for legacy storage support on Android 10 (API 29).
- Updated `transparency_board_section.dart` and `reports_screen.dart` to use `DownloadService.saveBytes()`.
# STUDENT SCREEN
- [DONE] remove the "Student Directory" and copy the design of top header tab on attached picture
- Removed "Students Directory" page title heading and unified the header into a floating card (`height: 52`, `margin: horizontal 16/24, vertical 8`, rounded 12 with border and subtle shadow).
- Left side contains segmented tab switcher (`Enrolled` & `All Students`), right side contains search button, filter button with badge, elevated `Add Student` primary CTA button, and bulk import button.
- [DONE] students tab make the filter not the same for enrolled and all, in the enrolled remove the status and school year, now in all tab remove the enrolled status
- Enrolled tab: Filter dialog hides both "School Year" and "Status" sections (locked to current active school year + Enrolled status). Resetting filters clears grade/section/4Ps/sorting/limit without unsetting the enrolled school year or status.
- All Students tab: Filter dialog displays "School Year" dropdown and "Status" filter chips with `'Enrolled'` removed (options: `'All Status'`, `'Graduated'`, `'Transferred'`, `'Dropped'`, `'Inactive'`).
- Added `studentViewTabProvider` and updated `studentActiveFilterCountProvider` so the filter badge count accurately counts active user overrides per tab.
# USERS SCREEN
- [DONE] use tabs for filter of all, admin, teacher, inactive -> copy the design on attached picture
- Converted the old role filter chips and scrollbar into unified segmented tabs (`All`, `Admin`, `Teacher`, `Inactive`) with matching active/inactive states.
- Placed inside a matching top header card (`height: 52`, rounded 12) with Search button and `Add User` CTA on the right.
# SETTINGS SCREEN
- [DONE] descriptions of the system client, contact developers -> settings screen support
- Upgraded the collapsible card in `settings_screen.dart` to "About, Support & System Information".
- Added Client/System description header for Talisay Integrated School Records Management System.
- Added Developer & Technical Support section for Dalubhasaan ng Lungsod ng San Pablo (DLSP) BSIT Capstone Team with lead developer email (`crischarlesgarcia345@gmail.com`).
- Added direct action CTAs: "Contact via Email" (mailto launcher / clipboard fallback), "Report an Issue" (GitHub issues link), "GitHub Repository" (project repository link), and "Meet the Team" (navigates to `CapstoneMembersScreen`).
- [DONE] make the about, support, system information in settings responsive
- System/Client Description Header now adapts using `LayoutBuilder` (<460px): renders icon + title in a row and full-width description below on mobile screens, avoiding horizontal squishing.
- System Information items (`_buildAboutInfoRow`) dynamically switch from a 2-column fixed-label layout to stacked label & selectable value on compact viewports (<460px), preventing text compression.
- Developer Contact container adapts on viewports <500px: stacks label and email with a clean indentation to prevent horizontal overflows. Action buttons seamlessly wrap with `Wrap`. -->
<!-- # SETTINGS SCREEN
- [DONE] android app cannot open links in about, support & information buttons cannot redirect to browser
- Added `<queries>` intent declarations for `https`, `http`, and `mailto` schemes to `AndroidManifest.xml` (required on Android 11+ / API 30+ for `url_launcher` visibility).
- Enhanced external link handling in `settings_screen.dart` with dual launch mode fallback (`LaunchMode.externalApplication` -> `LaunchMode.platformDefault`) and clipboard copy fallback with user feedback snackbars if no browser or email client responds.
# STUDENT SCREEN
- [DONE] in android list remove the bottom space
- Removed obsolete 76px bottom spacer on Android when `totalPages <= 1` in `students_screen.dart`.
- Adjusted Android card list bottom padding from 24px to 8px, eliminating the dead whitespace at the bottom of the list.
- [DONE] move the filter button into the header tabs
- Removed the filter button from the Android top AppBar in `android_bottom_nav_layout.dart`.
- Integrated the filter button into the header tabs row in `students_screen.dart` (alongside the view switcher tabs) with active filter badge and direct tap target.
# DOCUMENT AND ARCHIVE SCREEN
- [DONE] make the filter realtime from the backend
- Added `GET /api/documents/types` endpoint on backend (`documentController.getDocumentTypes` and `routes/documents.js`) returning distinct active document types and requirements categorized into JHS, SHS, and General in real time directly from the database.
- Enhanced `documentController.getAllDocuments` and `archiveController.getArchivedDocuments` to handle category prefixes, raw names, and clean names seamlessly when filtering.
- Added `realtimeDocumentTypesProvider` in Flutter and updated `studentFoldersProvider` to perform real-time backend search queries.
- Updated `documents_screen.dart` and `archives_screen.dart` PopupMenuButton to invalidate and pull fresh types on open, displaying real-time JHS, SHS, and Other document categories with instant reactive queries. -->
<!-- # STATIC WEBSITE
- [DONE] for a system documentation how to use/ guide
- Created dedicated standalone directory [documentation/](file:///f:/SumbrerongBato/tis_rms_server/documentation) completely decoupled from frontend and backend builds.
- Implemented high-aesthetic responsive user guide [documentation/index.html](file:///f:/SumbrerongBato/tis_rms_server/documentation/index.html) with modern typography (`Inter`), Emerald green (`#00B074`) & Slate dark/light theme, and offline-capable architecture.
- Structured modular sections: System Overview, RBAC Roles & Security Matrix, Interactive Virtual Tour, Modules 1–8 (Dashboard, Students & Multi-Select, Virtual Folders & Document Taxonomy, Retention & Real-time Archives, Batch Print Queue & Duplex Merging, DepEd SF10 Excel-to-PDF Engine, Users & Immutable RA 10173 Audit Trail, Settings & Mandatory Checklists), Keyboard Shortcuts, and Connection Diagnostics & FAQ.
- Integrated dual-platform mockup frames: Windows desktop titlebars and Android tablet/notch frames with live tab switcher.
- Sourced and centralized all real system assets under `documentation/assets/images/windows/`, `documentation/assets/images/android/`, `documentation/assets/images/features/`, and `documentation/assets/videos/`.
- Built interactive JavaScript engine [documentation/app.js](file:///f:/SumbrerongBato/tis_rms_server/documentation/app.js): interactive frame-by-frame virtual tour reel with HUD overlay and timeline progress, real-time client search with `Ctrl+K` shortcut, image zoom Lightbox modal, theme switcher with `localStorage` persistence, and scrollspy navigation.
- Verified in browser with subagent: zero console errors, smooth tab transitions, working zoom lightbox, live search, and dark mode toggle. -->
<!-- # USER SCREEN -> PASSWORD UPON CREATE AN USER [DONE]
- [x] dont make the password `username123` for new admin user, make it randomized
- Implemented 10-character cryptographically secure randomized password generator for new admin accounts in `userController.js`.
- Exposed and highlighted generated temporary password in user creation success dialog in `users_screen.dart`.
# STUDENT SCREEN -> add student using OCR [DONE]
- [x] dont upload the document that used for OCR in their folder
- Removed document auto-upload logic from `add_student_modal.dart` and `bulk_ocr_import_dialog.dart` after creating students.
# KEYBOARD SHORTCUTS [DONE]
- [x] Ctrl + N in student screen not working (wired to `_openModal()` in `students_screen.dart`)
- [x] Ctrl + U in document screen not working (wired to `UploadOcrModal.show(...)` in `documents_screen.dart`)
- [x] Ctrl + P in document and archive screen not working (wired to `PrintQueueModal.show(context)` in `documents_screen.dart` and `archives_screen.dart`)
- [x] remove Ctrl + B for backup (removed from documentation shortcuts table and FAQ)
- [x] remove Ctrl + A for filter (removed from documentation shortcuts table) -->
<!-- # HISTORY SCREEN [DONE]
- [x] PRINTED_HISTORY card has a overflowed for date and time
- Made card headers in `audit_trail_screen.dart` responsive using `Wrap` layout so badges, entity types, and timestamps never overflow on any screen size.
# Documentation website [DONE]
- [x] fix FAQs make sure its on the current system features (added Socket.IO real-time sync, port 18484, 10-char randomized temporary admin passwords, OCR data extraction separated from raw folder upload, server-side lossless WebP PDF previews)
- [x] connect the documentation based on the current system features (updated port 18484, real-time Socket.IO event broadcasts across LAN, and accurate keyboard shortcuts)
- [x] dont speficy the android is for tablet just android (replaced all references of "Android Tablet", "tablet terminals", and "touch tablet" with "Android" / "Android device")
- [x] redesign the entire documentation make it minimalist no extra design just make it normal documentation (removed fake window chrome titlebars/colored dots, removed simulated mobile phone bezels/notches, converted screenshots to standard figures with semantic figcaptions and zoom modals, streamlined typography and styling) -->
<!--
# DASHBOARD SCREEN
- [x] auto play the document breakdown on android dont pause (enabled continuous auto-rotation on all platforms including Android)
- [x] do not hide the set up required (removed banner dismissal action so Setup Required banner remains permanently visible to administrators, with minimize/expand preserved)
# REPORTS SCREEN
- [x] export of compliance is csv make it on excel (migrated compliance report export from CSV to native Excel .xlsx with Summary and Student Compliance List sheets via excel package)
- [x] fix the graph in android app add huge space for graphs to fix the hover cannot read (increased chart heights, expanded topTitles reserved headroom, and enabled fitInsideHorizontally/Vertically for tooltips across all report and DepEd charts)
- [x] make the horizontal bar the same design in deped tab (standardized custom styled horizontal scrollbar across Dropout/Transferee and 4Ps equity charts matching the rest of the DepEd tab)
- [x] make the export pdf of deped tab include all graphs and tables like on in individual pdf export (implemented 3-page comprehensive DepEd PDF report with vector bar charts and full comparative, gender, dropout, transferee, retention, and 4Ps tables across both full and individual exports)
- [x] deped tab add collapsable short description each sections, default is closed (added animated collapsible info guide pills for Enrollment, Dropouts/Transferees, and 4Ps Equity sections defaulting to closed) -->
<!-- # USERS SCREEN
- [x] add new user make the button the same size (standardized Cancel and Create User buttons in the Add User modal with identical height 48px, consistent 14px typography, and matching border radius) -->
<!-- # HISTORY SCREEN
- [x] add keyboard shortcut Ctrl + F for search (implemented CallbackShortcuts and FocusNode in AuditTrailScreen to invoke search dialog on Ctrl+F) -->
<!-- # STUDENT SCREEN
- [x] student profile modal enrollment tab, (Admin Only: Administrators can add and edit enrollments, with support for CSV bulk enrollment for 1 student to enroll multiple records across school years with live progression verification with backend. Features interactive editable CSV text area with sample format reference, Fill Example, and real-time backend verification)
- Admin Only: Administrators can add and edit enrollments, with support for CSV bulk enrollment and live verification with the backend.
- csv input add sample format then they can type on it -->
# STUDENT SCREEN
- [x] csv bulk enrollment make the UI responsive for android app
# SETTINGS SCREEN
- [x] make the download update downloads in app doesnt redirect to others apps github or chrome, and ask to download via default installer of android, for windows download it then open the installer and close the windows app when the installer is open
- check all the screens and
---
# DONT DO
<!-- - documents screen -> add how many files can be uploaded into a document requirement, the current limitation is only 1, so we can dynamically choose number files that can be uploaded into that document, update both frontend and backend, but first give me suggestion where will put the setting of this, ask me first -->
---
# TIS_RMS Server Manager (dont do)
Windows Service - NSSM nodejs
- backup/restore db and files
- backup: database backup, automatic schedule, snapshot retention
- restore: restore database, validate backup, restart service automatically
- files: mirror backup, verify files, restore files,
- can choose where to store db and files separately
- dashboard: server status, cpu mem usage, connected users, uptime
- service: controls windows service stop start restart
- logs, server logs, error logs
- settings backup path, file backup path, database location
---