Downloading… check the notification bar or Downloads, then tap the file to install.
Install → long-press home screen → Widgets → Davan Student → drag to place.
Only admin / manager / vp roles.
DAVAN & NUTANA
Student Portal · Davangere
?
—
—
✓ Signed in
ℹDefault password is your registered phone number. Change it to secure your account.
CHANGE PASSWORD
New password must be a valid 10-digit phone number.
⚠
✓
🔒
📱
Must be exactly 10 digits
📱
or
DAVAN & NUTANA
Student Portal · Davangere
ℹWe need your date of birth to complete your student profile. This is required once.
DATE OF BIRTH
Enter the date of birth as it appears on your college records.
⚠
✓
Tap to pick your date of birth
Your zodiac sign
ONE OPTIONAL EXTRA
If you also tell us your time of birth and place of birth,
your horoscope can show your full birth chart — your Moon sign and Rising sign — instead of
only the basic Sun sign horoscope your date alone gives.
This is completely optional. If you skip it, nothing about your
birth time or place is stored, and your Sun sign horoscope still works normally. You can add it
later any time from your dashboard.
⚠
📍
Pick from the list so we get the coordinates right
DAVAN HOSTEL
📱 My widget
Type the 6-letter code shown at the bottom of your widget, then tap 🔄 on the widget.
📱 Davan Staff widget
1. Download and install it. 2. Add its widget to your home screen. 3. Tap the widget once: the staff app opens, log in with your password and it links to you.
Toggle what students can see. Changes take effect immediately.
✓Saved
🌐 Global — applies to ALL students
Attendance
Show attendance % and breakdown
Internals
Show IA1 and IA2 marks
Semester Marks
Show semester / exam results
Timetable
Show weekly class schedule
Internal Timetable
Show internal exam schedule & seat allocation
Report Card
Show the Report Card tab (attendance + results summary)
DOB & Horoscope DEFAULT OFF
Mandatory DOB collection at first login, dashboard horoscope card, sidebar/header zodiac line
Birthday Toasts DEFAULT OFF
7-day countdown quotes, birthday-day wishes (up to 3/day), belated wishes. Needs DOB & Horoscope ON to have a birthdate to work from.
Resume Last Page (student) DEFAULT OFF
On refresh, reopen whichever page a student was on instead of always landing on the Dashboard. Student portal only — admin's own tab-memory is unaffected either way.
Step 2 Nudge — Scheduled DEFAULT OFF
OFF: the "add birth time & place" banner shows on EVERY login/reload until filled in or dismissed that session. ON: only nudges on the 5th login, then the 10th, then every 10th after — a schedule instead of every time.
Lesson Plan
Show syllabus progress
Faculty Photos
Show faculty photo beside every name (off = teacher emoji)
Past Semesters (archive)
Year dropdown to view old semesters. Off = the portal never reads the archive (saves DB2). On = each student checks once per semester; an old semester, once opened, stays on their phone
📊 Publish results to students
New results or revaluation: 1) upload in results.html → 2) sync as usual → 3) press Publish. Each student gets only their own results + ranks; next time only students whose marks changed download again.
Social — Dashboard Banner
Dismissible "Stay in the loop" banner at the top of Home
Social — Sidebar Card
Permanent "Official Channels" card in the student sidebar
Social — Once-a-day Toast
"One last thing" popup on first login of the day
Social — Login Page Footer
"Follow us" + WhatsApp/Call the office, below the sign-in form
⚠️
Overrides beat the global toggle. If a class or student below has an override row, ANY flag marked ✓ or ✗ on that row will keep showing/hiding that section for them no matter what the global switch above says — that's the usual reason "I turned it off globally but a few students still see it." A flag shown as · is not overridden and correctly follows the global setting.
Click a chip to cycle · → ✓ → ✗ → ·. To fully clear a student/class exception, either set every flag back to · or just delete the override row with 🗑.
🏫 By Class override
Priority: byUrn > byClass > Global. New rows start with every flag unset (·) — inheriting global — until you explicitly click a chip.
Sets davan_pub/session_config
in this portal's own database. If left blank, the dashboard falls back to a guessed
13 Jul start date — set this to show the real date.
📣 Social & Contact Links
Powers every "Follow us" nudge students see (login page, dashboard banner, sidebar
card, once-a-day toast) plus the login page's WhatsApp/Call the office links.
Sets controls/socialLinks
— change a number or link here without any code deploy.
⚡ Report Card Cache Settings
Report Card results data is cached on each student's device so it opens instantly
instead of re-downloading the whole institution's results every time. These two
settings control that caching. Stored separately from the main database (Firestore)
so this stays editable even if the main database is under heavy load.
Below this age, opening Report Card serves cache with zero extra database reads.
Students can always tap "🔄 Refresh Data" on Report Card to force fresh data sooner.
🎓 SEMESTER ARCHIVES
Run this ONCE at the start of each new semester — it freezes the outgoing semester's data
(students, timetable, lesson plan) so it stays viewable under "past" in the student portal,
then moves students into the new semester. Everything below explains exactly what will happen
before anything is written.
📍Portal is currently configured as ….
To change this (e.g. at the next rollover), edit AY_CONFIG near the top of the code.
📚 Archived semesters so far
⏳
Loading…
STEP 1🎓 Promote & Archive Roster
Freezes the CURRENT student roster (names, classes, semesters) into the archive, then moves every
student to their NEXT semester (e.g. Sem2→Sem3) and marks final-semester students as passed out.
This does NOT touch attendance or lesson plan data — that's Step 2.
STEP 2📦 Archive Attendance, Timetable & Lesson Plan
Freezes the ACADEMIC data for the outgoing semester — attendance %, subject-wise results,
lesson-plan syllabus progress, AND the academic calendar (holidays/events for that semester).
Run this AFTER Step 1. Students will then see this frozen snapshot when they switch to
"past" in their portal dropdown.
Important: for the timetable to archive correctly, make sure the mother app has the
OLD semester's timetable loaded (not the current one) before running this.
STEP 3📲 Push Current Semester Data
In the MOTHER APP: load the NEW/current semester's timetable and click
"📲 Push Timetable to Portal" so students see the new schedule going forward.
This step happens in the mother app, not here.
APP THEME
Pick the color palette every student and admin sees. Applies instantly, portal-wide.
⚠ Students WITHOUT a portal login are on top (+ Create / Bulk Create); everyone with a login is listed below them.
0 selected
URN
Name
Class
Phone / Password
Status
Last Login
Actions
⏳
Loading…
↔ Scroll sideways on smaller screens to see every column.
NOTICES & ANNOUNCEMENTS
Compose notices for all students, a class, or a specific URN.
📢 Compose Notice
⚠
✓
🎓Targets students marked passed out. Leave Batch/Class blank below to notify all alumni, or narrow it down.
📢 Live Announcement Banner
Appears on all devices instantly. Leave blank to hide.
✓
📲 Widget Notice
Shows a short status line on the home-screen student widget and here in the portal — e.g. "Fees due 5 Sep". Built once so future notices like this never need an app update, just this form.
✓
Loading…
📣 Broadcast Message
Shows a toast popup on all open devices within 1 second.
✓
✓
Sent Notices
⏳
Loading…
Banner & Broadcast History
📋
No history yet.
TIMETABLE
View and edit the master timetable from the mother app. Select a class to view all slots.
Auto-syncs to the student portal whenever this tab opens and the mother-app timetable has changed. Use Force Re-sync only if you need to push immediately without switching tabs.
✓Saved!
FACULTY A–Z
📅
Select a class to view timetable
⚡ Temporary Class Change
Set a one-day or one-week substitute for a slot. Students will see it immediately in their timetable.
✓Override saved! Students see it immediately.
Active Overrides
No active overrides.
STUDENT LOGIN ACCOUNTS
Every student needs a Firebase Auth account before Phase 6 rules
take effect. Without one they cannot open the portal at all.
Loading…
HOSTEL STUDENTS
Who has the widget, notifications on, ratings, skips and leave — hostel residents only.
Loading…
📶 WHO USES THE APP
Every current student: live now, website link, installed app, widget, stopped, never started - tap any box or number to see who.
DATA USAGE
Who is using the database, and are you inside the free tier.
Loading…
DIAGNOSTICS
Which reads are costing you, and what has gone wrong.
Loading…
WIDGET PAIRING HEALTH
Whether the pairing faults found on 17–18 Aug are still happening,
for anyone.
Loading…
LESSON PLAN
Update syllabus progress per class and subject.
✓Saved!
📚
Select a class to manage lesson plan
ACADEMIC CALENDAR
Full session calendar — live from admin Firestore (app_data/academic_calendar).
⏳
Loading…
LP SUBJECT EXCEPTIONS
Subjects selected here will be hidden from students in the Lesson Plan tab. Changes are saved to the database and apply instantly.
✓Saved!
⏳
Loading subjects…
BANNED STUDENTS
Banned students cannot log in to the portal. Search by name or URN, filter by class.
✓Saved!
🎓 PASSED-OUT ALUMNI
CURRENTLY BANNED
STUDENT WIDGET CONTROL
Manage the Android home-screen widget: per-student status, widget-only ban (portal login stays allowed), per-student feature toggles, and urgent messages that pin to a student's widget until acknowledged. Search by name or URN — same pattern as Banned Students.
✓Saved!
🔮📱 Widget Horoscope — Who's Actually Seeing It ▾
A widget has no scroll/viewport, so "view" here means Page 7 actually had real content
(unlocked + a valid zodiac sign) during a fetch cycle that day — the closest widget
equivalent to the portal's scroll-into-view metric. WIDGET numbers only — see the
separate "DOB & Birthday" tab for portal numbers. Do not add these together.
Manual version entry (optional — auto-resolve already handles this once you install a new build on your own phone). Only raises the version, never lowers it.
⚠️ Kill-switch floor — widgets below this build number will be hard-blocked (after Publish Hard Block below). Type a build number, not a portal version.
w
Version
URGENT MESSAGE LOG
CLASS REMINDER NOTIFICATION — WORDING
This is the notification a student gets 15 minutes before each class. Edit it here and every widget
picks it up on its next sync (within 30 minutes) — no app update needed.
Available placeholders:
{name} {class} {subject} {time} {faculty} {today} {tomorrow} {last} {next} {when} {mins} {campus} {sentAt}.
{when} and {mins} follow the lead time set above, so changing it from 15 minutes updates the wording automatically.
{last} = the most recent lesson-plan topic the faculty has ticked off for that subject.
{next} = the very next topic after it, which is what should be covered today.
A line whose placeholder comes back empty is dropped automatically, so nothing shows as a dangling label.
⏰ Before each class
How many minutes ahead of the class the reminder is sent.
minutes before
🌙 Nightly summary
Time each evening the next day timetable is sent.
NIGHTLY SUMMARY NOTIFICATION — WORDING
This is the nightly "Tomorrow" digest sent at the time set above. Edit it here and every widget
picks it up on its next sync (within 30 minutes) — no app update needed.
Available placeholders:
{name} {today} {tomorrow} {tomorrowDay} {tomorrowShort} {classLine} {scheduleList} {sentAt} {institution} {campus}.
{name} = the student's own name (falls back to "Student" if somehow blank).
{scheduleList} = the numbered list of tomorrow's classes (or a "No classes listed" line if the day is free) — built by the widget, not a plain substitution.
{classLine} = the student's class label on its own line, or nothing at all if it isn't known — already includes its own line break, so don't add a blank line above/below it in your wording.
🔔 Send urgent message
This pins a red card to the widget face until the student taps to acknowledge it.
It reaches paired widgets only — students who have not installed or paired
the app will not see it.
🗣 SECOND LANGUAGE
Which second language each student studies, so the widget, notifications and voice show only theirs (not "Kannada / Hindi").
Filled automatically from attendance where possible; students whose language is not known are asked once in the student app.
You can change anyone any time - your choice always wins. Urdu and Sanskrit are self study (no class reminder).
Open this tab to load the list.
PAGE 6 — NEWS & RATES
Controls the News/Rates page on the widget. A scheduled GitHub Action
(fetch_news.js) auto-fetches headlines, USD/INR, gold/silver rates and
a daily quote, and writes them to db3 — you can override any field by
hand below; an override sticks until you clear it or the next
auto-fetch runs (auto-fetch will overwrite an unlocked override —
turn "Lock" on to protect a manual value from being overwritten).
Moved here from the Widget tab (2026-09-06) into its own tab as this
section has grown to include multiple news sections beyond
India/World.
GITHUB WORKFLOW TRIGGER (for instant fetch on save)
"Save source selection" below triggers fetch_news.js immediately (instead of waiting
for the 45-min auto-schedule) via a small Cloudflare Worker that holds the real GitHub
token as its own encrypted secret — the token never appears anywhere in this page or repo.
Page 6 visible on widget
Loading status…
Follow Us links visible on widget (every page, w115)
FOLLOW DAVAN · WIDGET w115+
GOLD · SILVER · CURRENCY (AUTO-FETCHED, IBJA)
Loading…
NEWS SECTIONS
Each section below lists its available RSS sources as checkboxes.
Check one or more per section to include that source in the mix for
that section. thehindu/bbcworld/bollywoodhungama/filmibeatkannada/toi/ndtv/
indianexpress/hindustantimes are all confirmed live and working
(toi/ndtv/indianexpress/hindustantimes confirmed by Harsha directly,
2026-09-06 — Claude's own network tools couldn't reach those domains
to verify independently, but Harsha's direct checks settle it).
bbcindia is still a real, documented URL but not yet tested by
anyone — treat it as "should work" until confirmed. If a source
turns out broken, fetch_news.js's existing safe-failure pattern
means it just contributes zero headlines to that section rather
than breaking anything else.
Horoscope-by-sign preview, opt-in rates, dashboard-card view tracking, and birthday-toast activity. This tab covers the PORTAL only — the widget has its own separate numbers under Widget Control, since portal and widget users are different, overlapping populations and should not be added together. Feature on/off toggles (DOB & Horoscope, Birthday Toasts, Step 2 Nudge Schedule) live in Portal Control, alongside every other feature toggle — not here, since this tab is viewers/analytics only.
🔮 Today's Horoscope — All 12 Signs
Reads widgetConfig/news/horoscopeBySign from db3 (davan-student-news) — the exact node
fetch_news.js writes and the student dashboard's horoscope card reads. Empty means that
run hasn't happened yet, or CosmyDay + the newastro fallback both failed for that sign.
📊 Birth Time & Place — Opt-in Rate
Among students who have a DOB on file (mandatory once dobHoroscope is on for them),
how many also gave time+place (optional, unlocks a full natal chart in place of
Sun-sign-only). Counts students, not logins.
👁 Horoscope Card — Who's Actually Seeing It
The horoscope card sits below Recent Notices — on a phone that's below the fold, so a
login does NOT mean the card was seen. This counts a real view event, fired by the
student's browser only once the card actually scrolls into view (IntersectionObserver),
not on page load.
🎉 Birthday Toast — Daily Activity
Counts students who saw ANY birthday-related toast (week countdown, day-of, or belated)
on a given calendar day — sourced from the same birthdayLastShownYear/
birthdayWeekShownDays/birthdayDayShownCount fields the toast logic itself writes, so
this reads real usage, not a separate log that could drift out of sync.
NIFTY
BharatStock is END-OF-DAY data, not a live tick feed — prices land after market close each
trading day. The widget labels this as a "Close", never as live. Nifty stays hidden on the
widget until the BHARATSTOCK_API_KEY GitHub secret is added — see setup below.
📈 Current Value
🔧 Setup — Where This Comes From
Nifty is fetched by fetch_news.js (GitHub Actions), the same
script that fetches News & Rates and horoscope data — not a separate script.
It reads a BHARATSTOCK_API_KEY GitHub Actions secret —
never typed into this portal, never committed to the repo. Get a free key at
bharatstockapi.com.
Add it: repo → Settings → Secrets and variables → Actions → New repository secret →
name it exactly BHARATSTOCK_API_KEY.
Until that secret exists, the fetch script logs "SKIPPED" and this tab (and the widget)
simply show nothing — that's expected, not broken.
If you're still using the key that was ever pasted directly in a
chat session, generate a NEW one and revoke that old key — it must be treated as compromised.
LOGIN ACTIVITY
Every student login is recorded here in real time. Most recent logins shown first.
📅
No logins today yet.
📱 WhatsApp Login Reminder
One ready-to-paste message per class — names every student who hasn't logged in, with login steps and why-to-use-it points. Copy it and paste into that class's WhatsApp group. No password is included; the message only tells them the default password is their own registered phone number.
📱 WhatsApp Login Reminder
Edit the message below if needed, then copy it and paste into this class's WhatsApp group.
📋 RAW LOGIN LOG
📋
No login activity yet.
SOCIAL MEDIA
Clicks on the Follow Facebook/Instagram/YouTube nudges shown to students — banner (dashboard top), sidebar card, and the once-a-day toast.
ENGAGEMENT
Usage of the SGPA/CGPA calculator on the Report Card, plus student feedback (5-emoji ratings) on that calculator and on the recent Report Card update. Same click/roster pattern as Social Media above.
🧮 SGPA/CGPA CALCULATOR — USAGE
😊 CALCULATOR FEEDBACK
😊 REPORT CARD UPDATE FEEDBACK
🆕 LOGIN FEEDBACK (mandatory, first login)
A blocking popup shown once per student — right after their dashboard loads,
before the social media toast — that they must answer to dismiss. Add as many
emoji-rated questions as you like; each can be individually shown/hidden.
Runs once per student per "round" — use Reset below to ask everyone again
(e.g. after a new feature ships).
Enable Login Feedback
Master switch — off means students go straight to the dashboard/social toast as before
RESPONSES
ADD STUDENT
⚠
✓
⚠ From the student roster, not confirmed as their current password — they may have already changed it after first login.
Pick from the list so coordinates save correctly
RESET PASSWORD
IMPORT STUDENTS FROM RTDB
Reads davan_pub/students → finds students with phone → creates portal logins (URN as id, phone as default password).
⚠
✓
ℹ
URN
Name
Class
Phone
Status
🔍
No students found matching your filters, or none have a phone number.
EDIT SLOT
📌 UPCOMING
📝 Thu 7 May — Degree 2nd Internals (1 hr each)◆🎓 Mon 11 May — VACC I B.Com (T1)◆🎓 Mon 11 May — VACC II B.Com (T1)◆🎉 Sun 17 May — Farewell BCA, BBA & BCom (HOD)◆📝 Sat 24 May — Session End◆
⏳ Loading data info…
Pinch or scroll to zoom \u00b7 drag to pan \u00b7 double-tap to reset \u00b7 tap outside to close