Unified school system
One app for all roles โ after login you only see menus for your account.
android-app in Android Studio โ Build APK (see ANDROID-APP-BUILD.txt)Welcome back
Live snapshot of students, teaching, marks, and attendance.
Jump to everyday school tasks
Students by branch (live roster)
Who is signed in (last 15 minutes), which teachers took attendance today, marks entered, worksheets and messages sent. Branch managers see only their campus.
Open Overview as admin or branch to load activityโฆ
Live summary from registered students, marks, and daily attendance. Filter by branch, class (grade), and section. Use Result Analysis for full tables; charts update when you open Overview or click Refresh.
Students by overall average vs 50% / 75% of scale
Daily status counts across filtered roster
Each subject: students above vs below threshold (filtered roster with marks)
| Subject | โฅ50% (pass) | <50% (fail) | Total marked | Pass % |
|---|---|---|---|---|
| Refresh charts | ||||
Top students by average (up to 40) ร subjects โ respects branch, class, and section filters
Protect admin, branch and teacher accounts with an authenticator app (Google Authenticator, Microsoft Authenticator, Authy).
Create a login for each campus (KG1, KG2, Primaryโฆ). Open the full form on the Teachers page, or use the same fields below.
One app for all roles. After login, each account only sees its own menus (teacher, parent, branch, admin).
android-app from the school package in Android Studio โ Build APK โ install on phones. See ANDROID-APP-BUILD.txt.App opens https://hassetacademy.com.et/portal.html with the same secure login.
Every cloud save creates a snapshot on the school server (hasset-backups/). Last 30 auto files + one daily file are kept. This works even when office PCs are off.
Also download a full backup to USB/Drive weekly (header Backup). Optional host cron: ?autobackup=1 once per day.
When staff send a parent message in EMIS, also try SMS to guardian phones on the student record. Uses Africa's Talking (common in Ethiopia) or a generic HTTP SMS API. Token stays on the server in sms-config.json.
SMS text is prefixed with branch, e.g. [Hasset Academy - KG1]. Apply for Sender ID Hasset Academy with Ethio Telecom for all branches.
Phones use student guardian phone fields. Ethiopian numbers like 09xxxxxxxx are sent as 2519xxxxxxxx.
Send login invites and school notices through a Telegram bot. Token stays on the server. Parents/teachers must open the bot once and press Start.
Important: Do not type @Hasset_academybot in the test box. That is the bot itself. Paste a numeric chat ID from โLoad chatsโ.
Health URL: https://hassetacademy.com.et/telegram-bot.php?health
Change your own password, or (admin) reset another userโs password by selecting their account.
Logged in as: โ
Select the user account, then set a new password (no need for their current password).
Automatic local snapshots protect against accidental loss. Use the "โฌ Backup all data" button at the top of every page to save everything to one file โ copy that file to USB weekly, or open it on another computer and click "โฌ Restore" to bring all the data over at once.
Download school data and setup files. Replace placeholders when you copy files to this computer.
hasset-api.zip next to this HTML or into XAMPP htdocs]
One shared database for every branch, phone, and PC. After the one-time setup below, every device that opens this website auto-connects, downloads, and keeps syncing โ no typing cloud URLs on each phone.
Hasset_Cloud_Backend.js from this package โ Save/execcloud-config.json (same folder as index.html):
set "upstream" to that /exec URL, keep "url" as your
https://yourdomain/cloud-proxy.php, and "autoSync": trueAfter that: any phone or PC anywhere only opens
https://yourdomain/ (or Portal). It reads cloud-config.json, connects through the proxy,
downloads shared data, and auto-syncs every ~30 seconds โ including materials, messages, quizzes, marks, and attendance.
Open via https:// or http://, never file://.
Optional second secret. When set, changing the cloud URL, uploading, or downloading requires this PIN (in addition to admin login). Protects the shared database if someone uses an unlocked admin session.
Hasset database API:
http://localhost/hasset-api/sync.php
(copy hasset-api into XAMPP htdocs). Other PCs:
http://OFFICE-PC-IP/hasset-api/sync.php.
Use Test connection after the API is running.
Same WiโFi: use school PC IP for the HTML page (e.g. http://192.168.x.x:8080/...).
Do not doubleโclick the HTML file (file://). Browsers block cloud sync from local files. Start a small local server instead:
Windows (Command Prompt or PowerShell)
Hasset_Academy_Unified_EMIS.html into a folder (e.g. C:\Hasset)cmd โ Enterpy -m http.server 8080
python -m http.server 8080
python3 -m http.server 8080
http://localhost:8080/Hasset_Academy_Unified_EMIS.htmlStart_Hasset_Server.bat (same folder as the HTML). If the browser says refused to connect, the server window is not running or was closed.Mac / Linux (Terminal)
cd to the folder that contains the HTML filepython3 -m http.server 8080http://localhost:8080/Hasset_Academy_Unified_EMIS.htmlOther options: VS Code โLive Serverโ extension, or npx --yes serve -p 8080 if Node.js is installed.
Other computers on the same WiโFi can use http://<office-pc-ip>:8080/Hasset_Academy_Unified_EMIS.html
(firewall must allow port 8080). For true multiโsite sharing, still use Cloud URL below.
Hasset_Cloud_AppsScript.js โ Save/exec into Cloud endpoint URL abovehttp://localhost:8080/... (Step A)Prefer JSONBin: create a bin at jsonbin.io, use the bin URL, paste the Master Key, auth = X-Master-Key.
This EMIS currently runs entirely in the browser (localStorage + session tokens). That is fine for a single desk or pilot, but is not production-grade for a multi-campus school. When you move to a real server:
httpOnly + Secure + SameSite session cookies (or short-lived JWT access tokens + rotating refresh tokens).hasset_registrations_v1,
hasset_fees_v1,
hasset_marks_v1,
hasset_emis_users_v2,
hasset_emis_timetable_v1,
hasset_emis_attendance_v1.
Session/token stores (hasset_emis_session_v2, hasset_emis_tokens_v1) should not be copied to the server โ re-issue sessions after cut-over.API_BASE_URL at your backend, and force re-login for all users.Until then, treat this file as a single-device or trusted-network tool. Change default passwords after first login.
Class totals by gender, subject pass rates, semester / yearly averages, failing-subject counts, and top 10 rankings by branch.
Scale: Quarters (Q1โQ4) out of 50 (pass โฅ25 = 50%). Semester 1/2 and Yearly average out of 100 (pass โฅ50 = 50%). Also marks 75% of scale (37.5 on /50; 75 on /100). Use the same academic year as Marks & Cards.
| Branch | Grade | Section | Male | Female | Total |
|---|---|---|---|---|---|
| Run analysis | |||||
One row per subject across the filtered students โ pass/fail counts and bar interpretation.
| Subject | Pass โฅ50% M | Pass โฅ50% F | Pass total | Fail <50% M | Fail <50% F | Fail total | Pass % | Mean mark |
|---|---|---|---|---|---|---|---|---|
| Run analysis | ||||||||
Rows = students (filtered roster). Columns = subjects. Colour shows mark vs period scale (red low โ green high). Average column on the right.
Mean mark per subject across Q1 โ Q2 โ Q3 โ Q4 (each /50) for the filtered students and academic year. Trend compares first available quarter mean to last. Sem1/Sem2 columns use /100 scale for reference.
Bar chart: net change in mean (last quarter โ first quarter) in percentage-points of the /50 scale.
| Subject | Q1 mean | Q2 mean | Q3 mean | Q4 mean | Spark | ฮ (lastโfirst) | Trend | Sem1 mean | Sem2 mean | n (max) |
|---|---|---|---|---|---|---|---|---|---|---|
| Run analysis | ||||||||||
| Branch | Grade | Section | Avg <50% | Avg โฅ50% | Avg โฅ75% | M <50% | F <50% | M โฅ50% | F โฅ50% | With marks |
|---|---|---|---|---|---|---|---|---|---|---|
| Run analysis | ||||||||||
| Branch | Grade | Section | 1 subject M/F | 2 subjects M/F | 3+ subjects M/F | Total failing โฅ1 |
|---|---|---|---|---|---|---|
| Run analysis | ||||||
Top 10 students in every branch ยท grade ยท section (by average for the selected period).
Paste the Web App URL from your shared Google Sheet (see the setup guide) so every computer reads and writes the same list of registrations instead of keeping separate copies.
Download a filtered or full backup, then restore on another computer. Choose how to apply a backup file:
Important: openSIS is a separate PHP + MySQL application. It cannot run inside this HTML file. Install openSIS on a school server (or XAMPP), then use this panel to open it and export Hasset data in import-friendly CSV form.
github.com/OS4ED/openSIS-Classic ยท
After install, set marking periods (Q1โQ4), grade levels, and grade scale, then import the student CSV.
Marks usually need manual or scripted import into openSIS gradebook / final grades.
Each button below clears only that one category from this computer. If this computer is connected to a shared Google Sheet, the data still exists there and will reload the next time this page syncs โ this only clears the local copy. A password is required before anything is cleared, so an accidental click won't delete data.
MySQL auto-sync: students, marks, attendance, messages, teachers/users, timetable, library, quizzes, and other EMIS data save automatically when MySQL is connected. Local data stays as backup.
Counts follow the branch filter. The summary button opens a clean Grade ยท Male ยท Female ยท Total table (no student list).
Type a name or ID, then click Search to show matching students.
| Student ID | Name | Branch | Grade | Section | Guardian phone | ||
|---|---|---|---|---|---|---|---|
| No students registered yet. | |||||||
Fees are tracked per term โ Term 1 through Term 4 of the academic year.
| Student ID | Name | Grade | Term 1 | Term 2 | Term 3 | Term 4 | Balance |
|---|---|---|---|---|---|---|---|
| No fee records yet. | |||||||
Choose branch, grade, and subject. All grades: one mark per subject โ every quarter out of 50. First Semester = Q1+Q2 (/100); Second Semester = Q3+Q4 (/100); Yearly = both semesters + annual average. Primary (Grades 1โ6 / 1โ8): numeric marks only โ no letter grade column. KG Number 1 & 2: letter grades (แ/แ/แ/แ ยท AโD for English) shown beside the mark. Conduct and Absent apply to the whole quarter. Save once for the class. Marks use two digits after the decimal point.
Select grade and subject (and optionally branch) to list all students.
| Student ID | Name | Section | Mark (/50) | Grade | Conduct | Absent (days) |
|---|---|---|---|---|---|---|
| Choose grade and subject to show students. | ||||||
Report cards always show a comment: your text if entered, otherwise an automatic comment based on the studentโs result.
Admin sets a password per grade (optional section). Teachers must unlock before entering marks. Teachers only see subjects/grades assigned on their account.
Enter แแฃแญ (Conduct) and แแช (Absent days) for every student in a class for the selected quarter. These values are stored on the quarter (shared across all subjects) and appear on the roster and report card.
Select grade and quarter to list students.
| Student ID | Name | Section | Conduct (แแฃแญ) | Absent days (แแช) |
|---|---|---|---|---|
| Choose grade and quarter. | ||||
Filter by branch, grade and section. Primary (Grades 1โ6 and 1โ8): marks only โ no letter grades. Letter grades (แ/แ/แ/แ ยท A/B/C/D for English) apply only to KG Number 1 & 2 (Pre-KG / KG / Prep). Each quarter is out of 50. First Semester = Q1+Q2 (/100); Second Semester = Q3+Q4 (/100); Yearly Roster = First Sem + Second Sem + Annual average. KG: semester/yearly roster uses แญแฅแฅ themes + English + แ แแซแญ + แแฃแญ โ no total sum.
Select a grade and quarter to view the roster.
Printable report card with the school grading system (แ / แ / แ / แ ยท English A / B / C / D). Quarters are /50; First & Second Semester are Q1+Q2 and Q3+Q4 (/100); Yearly shows both semesters and the annual average. Filter by branch, grade and section. Print one student or every student matching the filters (two per page).
Landscape places two report cards left & right on one A4 page (best for bulk print).
Transcript uses the Quarter filter above (one period). Leaving Certificate needs a selected student. Report card header stays dark blue; subject headers and rank use light fill for clearer black-and-white print.
Define weekly lessons โ auto-generate schedule โ check conflicts โ print (aSc-style workflow)
| Branch | Grade | Sec | Subject | Teacher | Subject /week | Class total | Week total | |
|---|---|---|---|---|---|---|---|---|
| No lessons defined yet. Add subjects above. | ||||||||
Click an empty period cell to assign subject + teacher manually (with conflict warning). Use Edit on filled cells. Swap mode exchanges two periods.
Hard rules always apply when checked. Soft rules may be relaxed only if a lesson cannot be placed otherwise. Settings are stored in this browser.
Subjects with fewer weekly periods cannot appear twice on one day.
Soft limit; raised automatically if placement fails.
Even for high-load subjects, cap repeats on one day.
Select a grade, define lessons, then click Auto-generate. Click cells to add/edit ยท Del to remove (aSc-style).
Block periods when a teacher is unavailable. Auto-generate will never place them in these slots. Weekends (SatโSun) are already free.
| Teacher | Day | Period | Time | |
|---|---|---|---|---|
| No restrictions yet. | ||||
Live attendance tracking loads when you open this pageโฆ
Mark present / absent / late / excused for each class. Saves push to the cloud immediately for real-time tracking across devices.
Select grade and date, then click Load class. Roster is the registered student list for that branch/grade/section.
After loading: edit status/note โ Save ยท Delete removes one student for that day ยท Delete all for this day clears the class.
Absent days on the Marks roster & report cards can be filled from daily attendance (status = Absent).
Delete one class-day or Delete ALL previous attendance. Dates show in Ethiopian calendar; save time uses Ethiopian local time (EAT).
Open this page to load historyโฆ
Monthly summary for a class โ useful for parents and office records
Choose grade and month, then Build report.
Analyze present rate, weekly movement, grades with lower attendance, and students with frequent absences. Based on saved daily attendance (school days only).
Choose filters and click Analyze trends.
Track staff presence by day. Admin and branch can mark Present / Absent / Late / Excused. Separate from student attendance.
| Teacher | Branch | Subjects | Status | Note | Saved by |
|---|---|---|---|---|---|
| Choose date and click Load teachers. | |||||
Add a worksheet for parents/students of a specific grade to download.
All uploaded worksheets.
| Title | Subject | Grade | Branch | Uploaded | |
|---|---|---|---|---|---|
| No worksheets yet. | |||||
Books, lecture notes, or video links for a grade (Google Drive / YouTube links work).
| Title | Type | Grade | Subject | Link | |
|---|---|---|---|---|---|
| No materials yet. | |||||
Messages are limited by branch, grade, and section. Each message shows the exact date and time. Parents only see messages for their childโs branch/class.
Parents may only message their branch office or a specific teacher.
You can write in English or แ แแญแ. Date & time are saved automatically.
Filter your inbox (admin/branch/teacher). Parents always see only their branch, grade, section, and child.
| Date & time | From | To | Branch / Class | Student | Message | |
|---|---|---|---|---|---|---|
| No messages yet. | ||||||
Record staff salary, allowance, and deductions. Process a monthly run and print the register. Branch managers only see their campus.
โ
| Name | Role | Branch | Bank | Salary | Allowance | Deduction | |
|---|---|---|---|---|---|---|---|
| Loadingโฆ | |||||||
| Period | Branch | Staff | Total net | Processed |
|---|---|---|---|---|
| โ | ||||
Catalog books and track loans / returns. Teachers may view; admin and branch manage the catalog.
| Title | Author | Category | Copies | Available | |
|---|---|---|---|---|---|
| โ | |||||
| Book | Borrower | ID | Loaned | |
|---|---|---|---|---|
| โ | ||||
Track prospective students from first contact to enrollment. Move each lead through the pipeline.
| Child | Grade | Parent | Phone | Branch | Status | Updated | |
|---|---|---|---|---|---|---|---|
| โ | |||||||
Install Hasset EMIS on phones like an app. Parents and teachers can use the same portal in full-screen mode.
If the Install button does not appear, use the browser menu โAdd to Home screenโ.
A WebView Android project is included in android-app/. Build a signed APK/AAB in Android Studio and publish to Google Play when ready. The app opens the live portal so data stays on your cloud.
deploy/android-app in Android Studiohttps://hassetacademy.com.et/portal.htmlRequire an authenticator app code after your password. Recommended for all staff accounts.
Teachers and admin create quizzes or live exams. Students take each quiz once; scores show in the results table below (not on the official marks list). English or Amharic. Format: Question | A | B | C | D | CorrectLetter (AโD or แ แ แ แ)
Start live quiz for the class, edit by deleting and recreating, or take a practice run.
Students may take each quiz once. Scores appear here for teachers โ they are not written to the official marks list.
| Quiz | Subject | Student | ID | Score | % | Grade | When |
|---|---|---|---|---|---|---|---|
| No attempts yet. | |||||||
Admin or branch can create teachers. Branch managers only manage teachers in their branch. Teachers can access only assigned branch, grades, sections, and subjects.
| Name | Username | Sex | Branch | Qualification | Experience | Assignment | Periods (plan / TT) | |
|---|---|---|---|---|---|---|---|---|
| No teachers yet. | ||||||||
Admin only โ create, edit, and delete branch logins here.
Admin creates one account per branch. Set Username and Password together โ that is what the branch user types at login. They only see their branch data.
Assign a username and password. Share the portal link via Telegram โ never post passwords on the public website.
| Name | Username | Branch | Role | |
|---|---|---|---|---|
| No branch accounts yet. | ||||
Only your own results are shown, linked to your student ID. Choose a quarter and print.
Select a quarter to preview your report card.
Welcome
Branch, grades, sections and subjects on your account
โ
No periods scheduled for today.
Students in classes you teach (by branch filter)
โ
Information for your child only ยท Hasset Academy
Parent login shows report card only.
Tip: On your phone, open the same EMIS link, choose Parent, enter Student ID + guardian phone.
Official report card layout โ same design the school prints. Choose period, then print.
Loading official report cardโฆ
Daily records for your child (read-only): Present, Absent, Late, Excused, Sick with the reason written by the teacher.
Loadingโฆ
Payment status for your child (read-only).
Loadingโฆ
Weekly schedule for your childโs grade and section (read-only).
Loadingโฆ