Skip to content
AbhineethVSPublic

About

A better ETLab ; A fast, unofficial ETLab app for CET Trivandrum students: attendance, results and study materials

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Repository files navigation

ETLaban

same data, less suffering.
A calm, fast app for your attendance, results and study materials.
Made for students of College of Engineering Trivandrum.

Open ETLaban → etlaban.vercel.app

MIT licence Installable PWA Python 3.10+

Home screen Subject attendance Attendance calendar in dark mode Results by semester

Screenshots use a made-up demo student.


What is this?

ETLab has all your college data, but it is slow and hard to read on a phone. ETLaban logs in to ETLab for you, reads the same pages you would see, and shows them in a clean app that works well on your phone.

It is unofficial. It only reads your data. It never changes anything on ETLab.

Why the name? It's a nod to Sign Laban, the dessert shop every CET student knows. ETLab, but sweeter.

Features

  • Am I in trouble? The home screen answers it in one line, like "Every subject is above 75%. Tightest is Data Structures Lab, which can miss 3 more classes."
  • Attendance by subject. See how many classes you can miss, or how many you need to attend to get back above your target.
  • A real calendar. One small dot per period: dark for present, red for absent. Tap a day to see which classes you missed.
  • Results for every semester. SGPA per semester as a small chart, your CGPA, grades, sessional marks and assignments.
  • Study materials. Every file from ETLab in one searchable list, quick links to SAC and ASC union cell resources, plus your own saved links (Drive folders, playlists, question banks).
  • Your target, your rules. Choose 75%, 80% or 85%. Every number updates.
  • Stay signed in. Tick Keep me signed in and ETLaban quietly logs you back in whenever ETLab ends your session, instead of sending you to the login page every few hours.
  • Light and dark mode. It follows your phone, or pick one yourself.
  • Install it like an app. Add it to your home screen. It opens instantly and still shows your last data when you're offline.
  • Works on laptops too. A roomier layout with a sidebar on bigger screens.

ETLaban on a laptop

Is it safe?

This is the most important question, so here is the short answer.

  • Your password is not stored, unless you ask. Normally it is sent to ETLab once, to log in, and then thrown away. If you tick Keep me signed in, it is kept encrypted inside your login cookie in your own browser (never on the server), so ETLaban can sign you back in when ETLab logs you out. Logging out deletes it.
  • Your data is not stored on the server. Each time you sync, the server fetches your pages from ETLab, turns them into data for the app, and forgets them.
  • Your login stays in your own browser. It is kept as an encrypted cookie that scripts on the page can't read. Every student's session is completely separate.
  • Your data stays on your phone. The app keeps a copy on your device so it opens fast. Logging out deletes it.
  • Only anonymous visit counts. The live site uses Vercel Web Analytics to count page views. It uses no cookies and never sees your username, password or ETLab data.
  • The code is open. You can read exactly what it does, right here.

Want the details? See How it works and the security policy.

Using it

  1. Open etlaban.vercel.app in your phone's browser.
  2. Log in with your normal ETLab username and password.
  3. Wait a few seconds for the first sync.
  4. Optional: tap Install (or your browser's Add to Home screen) to keep it on your home screen.

Tap the sync button (the circular arrows) any time to get fresh data. The app also refreshes by itself if your data is more than 3 hours old.

Running it on your computer

You need Python 3.10 or newer.

git clone https://github.com/AbhineethVS/ETLaban.git
cd ETLaban
pip install -r requirements.txt
python backend_server.py

Then open http://127.0.0.1:8000 in your browser.

To use it on your phone, connect the phone to the same Wi-Fi and open the Phone address the server prints (something like http://192.168.1.5:8000). On Windows, allow Python through the firewall for private networks if the phone can't connect.

Deploying your own copy

The app is ready for Vercel:

  1. Import this repository in Vercel. Framework: Other. No build command.
  2. Add one environment variable: SESSION_SECRET, a long random value. Generate one with:
    python -c "import secrets; print(secrets.token_urlsafe(48))"
  3. Deploy.

The full guide, with troubleshooting, is in docs/deployment.md.

How the project is organised

public/                            Everything the browser loads
  index.html, login.html, app.html The three pages: landing, login, and the app
  base.css, public.css, app.css    Styles: shared design system, public pages, app
  app.js                           The app: views, routing, sync, calendar, charts
  landing.js, login.js, auth.js    Page logic and session helpers
  ui.js, theme-init.js             Theme switching and small shared behaviour
  sw.js, manifest.webmanifest      Installable app (PWA) support
  icon.svg, *.png                  App icons
  robots.txt, sitemap.xml, llms.txt For search engines and AI assistants
  og-image.png                     Link preview image (source: docs/og-image.html)

etlab/                             The backend: log in, fetch pages, read them
  api.py                           The API routes
  session.py                       Encrypted session cookie
  client.py                        Talks to ETLab
  attendance.py, results.py,
  materials.py, tables.py          Turn ETLab pages into data

api/index.py                       Entry point on Vercel
backend_server.py                  Entry point on your computer
vercel.json                        Vercel settings and security headers
docs/                              Longer documentation and screenshots

API

All routes return JSON.

Method Route What it does
POST /api/login Log in with { username, password, remember }. Sets the session cookie.
POST /api/cookie Log in with a pasted ETLab cookie instead (fallback).
POST /api/renew Log back in to ETLab with the password saved by Keep me signed in.
POST /api/logout Clear the session cookie.
GET /api/me { loggedIn, username }
GET /api/attendance Subject totals, this month's and last month's calendar, and each day's periods.
GET /api/results Every semester so far: marks, grades, SGPA and CGPA.
GET /api/materials Notes and files from ETLab.

If your ETLab session has expired, data routes answer 401 with "expired": true. If you chose Keep me signed in, the answer also has "renewable": true: the app calls /api/renew once and retries. Otherwise it asks you to log in again.

To keep load on ETLab down, the app tells the server what it already has. /api/attendance?known=2026-10-03:5/6,... skips day pages whose present/total haven't changed (listed back in reusedDetails). /api/results?cachedSemester=5 skips earlier semesters while semester 5 is still current (earlierSkipped: true). Tapping Sync, or once a day, fetches every semester. Earlier semesters that couldn't be read are listed in missingSemesters (the app keeps its saved copy), and semesterPages says why for each one, e.g. "failed" or "no course table (3 tables, 5120 bytes)".

Contributing

Bug reports, ideas and pull requests are welcome. Please read CONTRIBUTING.md first. It explains how to set things up and how to fix things when ETLab changes its pages.

Never post your password, cookie or real ETLab pages in an issue.

Disclaimer

ETLaban is an independent student project. It is not made by, endorsed by, or connected to ETLab, Etuwa Concepts, College of Engineering Trivandrum, or KTU. It shows the same data ETLab shows you. Always check ETLab itself for anything official, like exam eligibility.

Licence

MIT. Use it, change it, share it. Just keep the copyright notice.

About

A better ETLab ; A fast, unofficial ETLab app for CET Trivandrum students: attendance, results and study materials

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Contributors

Languages