Skip to content

ABHAY-100/bunkr-web

Repository files navigation

Bunkr

Overview

Bunkr is a student-focused attendance tracker that gives you the insights you actually need. Built as a better alternative to Ezygo, it presents your attendance data with a clean, intuitive interface that makes sense to students. No more confusing numbers - just clear, actionable insights!

Also available as a Flutter app: BUNKR


🎯 Features

  • Smart Skip Calculator 🧮 - Know exactly how many classes you can miss while staying above attendance requirements
  • Better Data Presentation 📈 - Clean, user-friendly interface that actually makes your attendance data understandable
  • 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

🛠️ Tech Stack

  • Frontend - Next.js 15.3.0 with React 18
  • 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
  • Additional Services – Supabase

📁 Project Structure

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

🔌 API Integration

Create a .env file in the root directory and add:

NEXT_PUBLIC_BACKEND_URL=
NEXT_PUBLIC_SUPABASE_URL=

🧮 Bunk Algorithm

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)

Full implementation available here: bunk.ts


🚀 Getting Started

Prerequisites

  • Node.js (Latest LTS version recommended)
  • npm or yarn

Quick Start

  1. Clone the Repository

    git clone https://github.com/ABHAY-100/bunkr-web.git
  2. Navigate to Project Directory

    cd bunkr-web
  3. Install Dependencies

    npm install
    # or
    yarn install
  4. Create .env file and add the API URL

  5. Start Development Server

    npm run dev
    # or
    yarn dev

The application will be available at http://localhost:3000 🎉


🤝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

👥 Team


📧 Contact

For any questions, feel free to reach out to me via email at abhaybalakrishnan977@gmail.com


📄 License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.


Thank you for your interest in Bunkr! 🤝