GhostClass is the ultimate academic survival tool for students who want to manage their attendance without the main character energy of a professor. Featuring a sleek dashboard with real-time analytics and visual performance charts, it helps you track your classes so you never accidentally ghost your degree. With a built-in "bunk calculator" to tell you exactly how many lectures you can skip before it becomes a canon event, and a dedicated tracker for suspicious absences, GhostClass ensures your attendance stays valid while you live your best life. Built as a better alternative to Ezygo, it presents your attendance data with a clean, intuitive interface. No more confusing numbers - just clear, actionable insights!
- The Bunk Calc 🧮: Know exactly how many classes you can miss before the threshold comes for your neck.
- Visual Reciepts 📊: Performance charts and a detailed calendar history so you can see your attendance glow-up in real-time.
- Anti-Ghosting Tracker 👻: A personalized list to watch wrongly marked absences like a hawk until they get updated.
- Ezygo Integration 🔄 - Use your existing ezygo credentials - no new accounts needed
- Real-time Updates ⚡ - Get instant updates on your attendance status and skip calculations
- Track Status Changes 📝 – Get notified when your attendance is updated
- Mobile Friendly 📱 - Access your attendance data on any device, anywhere
- Frontend - Next.js with React
- Styling - Tailwind CSS for a modern, responsive design
- UI Components - Radix UI for accessible, consistent components
- Data Visualization - Recharts for beautiful attendance graphs
- Animations - Framer Motion for smooth transitions
src/
├── app/ # Next.js app router pages and layouts
│ ├── (auth)/ # Authentication-related routes
│ ├── (root)/ # Main application routes
│ ├── globals.css # Global styles
│ └── layout.tsx # Root layout
├── components/ # Reusable React components
├── providers/ # React context providers
├── utils/ # Utility functions
├── assets/ # Static assets
├── types/ # TypeScript type definitions
├── lib/ # Core library code
└── hooks/ # Custom React hooks
└── supabase/ # DB Backend
Create a .env file in the root directory and add:
NEXT_PUBLIC_BACKEND_URL=
NEXT_PUBLIC_SUPABASE_API_URL=
NEXT_PUBLIC_GITHUB_URL=
Create a .env.local in supabase folder and add:
ALLOWED_ORIGIN=https://
1. If total <= 0 or present <= 0 → return zero
2. current% = (present / total) * 100
3. If current% == target → isExact = true
4. If current% < target:
required = ceil((target * total - 100 * present) / (100 - target))
5. If current% > target:
bunkable = floor((100 * present - target * total) / target)Original implementation available here: bunk.ts
- Node.js (Latest LTS version recommended)
- npm or yarn
- Docker Desktop (Only for local development - supabase)
- Supabase CLI (
npm install supabase --save-dev)
-
Clone the Repository
git clone https://github.com/devakesu/GhostClass.git
-
Navigate to Project Directory
cd GhostClass -
Install Dependencies
npm install # or yarn install -
Go to Supabase.com and create a new project.
Login & Link:
npx supabase login npx supabase link --project-ref <your-new-project-id>
Create Database Tables: push the schema from this repo to your new remote database:
npx supabase db push
(This creates all tables, policies, and triggers defined in
supabase/migrations)Deploy Edge Functions:
npx supabase functions deploy
-
Create env files and add the required data.
-
Set Supabase secrets
npx supabase secrets set --env-file ./supabase/.env.local -
Start Development Server
npm run dev # or yarn dev
The application will be available at http://localhost:3000 🎉
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
Earlier version developed by:
For any questions, feel free to reach out to me via email at fusion@devakesu.com
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
Thank you for your interest in GhostClass! Bunk classes & enjoy, but don't forgot to study!! 😝🤝