Skip to content

Latest commit

Β 

History

384 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

b1t-Sched - Academic Task Scheduler

Academic Task Scheduler - A modern Single Page Application (SPA) designed for university students, class representatives (CRs), and faculty members to organize and track academic tasks, routines, assignments, exams, and notices with department-specific personalization.

b1t-Sched Logo

πŸ‘‰ Complete Documentation πŸ‘ˆ

Current Version: v2.53.0 to v2.53.14 β€’ Architecture: Vanilla JS SPA + Firebase Firestore & Auth + PWA


✨ Features Overview

πŸ” Authentication & Role Management

  • Flexible Credential Login: Students can log in with their Student ID (normalized across string, numeric, and formatted inputs with dashes/spaces) or Email. Faculty can log in with their Faculty ID, initials (case-insensitive), or Email.
  • Segmented Role Toggles: Dedicated Student and Faculty login tabs with strict cross-role enforcement (prevents student accounts from authenticating via the faculty tab and vice versa).
  • Onboarding Role Lockdown: After initial signup, role identity is locked on the details setup screen, ensuring students cannot bypass section assignments or switch to faculty post-registration.
  • 6-Tier Role System:
    1. Student - View personalized section tasks, export tasks, take markdown notes, and sync personal Google Classroom assignments.
    2. CR (Class Representative) - Create, edit, and manage section tasks, deadlines, and group notices.
    3. Faculty - Create and manage departmental tasks, access Faculty Classroom, and post department-wide notices.
    4. DptCoor (Department Coordinator) - Faculty privileges plus account review, approvals, and role elevation within their department.
    5. DptHead (Department Head) - Comprehensive departmental oversight and coordinator capabilities.
    6. Admin - Complete platform administration, user management, account approvals, role assignments, UID lookups, and the Admin Role Preview Mode (simulate any role with a real-time floating indicator).
  • Faculty Self-Registration & Approvals: Faculty self-register with pending status until approved by an Admin or Department Coordinator via the interactive Approvals modal.

πŸ“‹ Task Management & Productivity

  • Personalized Task Feed: Automatic task filtering based on Department, Semester, and Section Group (A1+A2, B1+B2, etc.).
  • Overdue Grace Period: Retains tasks in the active feed for a 12-hour grace period after the deadline passes before archiving.
  • Desktop Single-Row Layout: Coordinated action row for Add Tasks, View Old, and Reset Tasks on desktop screens.
  • Mobile-Responsive Task Actions & Filters:
    • Compact button labels on mobile (Add, Old, Reset).
    • Mobile compact dropdown filter (Filters: [Set Filter] [Clear]) synchronized bi-directionally with desktop radio pill buttons.
  • Task Identification: Copyable Firebase Task UIDs and timestamps for reliable reference and verification.

πŸ›‘οΈ Live Feeds & External Integrations

  • UITS Event Raiders Syndication: Live syndication of hackathons, contests, symposiums, and tech events from ou1ts/events RSS/JSON feeds with desktop sticky sidebar integration and mobile toggle view switchers.
  • Google Classroom Integration:
    • Unified course stream showing assignments, materials, and announcements with OAuth session persistence.
    • 3-group status layout (Assigned, Missing, Turned In / Graded) with chronological upcoming deadline priority and "Past deadline" visual divider banners.
    • Strict turn-in verification for automatic task completion.
    • Decoupled Classroom sync briefing summaries and quick announcement/assignment posting for Faculty and CRs.
  • University & CR Notices: Real-time section notices posted by CRs and department notices posted by Faculty, alongside a UCAM university notice viewer with inline PDF preview via a Vercel serverless backend.

πŸ“ Notes & Productivity Tools

  • Rich Markdown Notes: Personal note-taking module with auto-save, search, formatting tools, and temporary file hosting (Catbox.moe / Tmpfiles.org).
  • LocalSend Web Integration: Direct peer-to-peer note and file sharing over local Wi-Fi networks without internet bandwidth overhead.
  • Task Export: Export tasks to clean PDF, Markdown (.md), or Plain Text (.txt) with full Unicode Bangla font support, embedded hyperlinks, active type filter support, and dedicated Old Tasks pagination.
  • Activity Timeline: Interactive contribution heatmap and activity breakdown charts tracking tasks, events, and login frequency.

🎨 Design & Accessibility

  • Curated Multi-Theme System:
    • Light Mode: Clean, high-contrast default theme for unauthenticated visitors and public views.
    • Dark Mode: Charcoal base (#1a1a1a) with vibrant blue accents (#3b82f6) and elevated cards.
    • High Contrast: Pitch black base (#000000) with vibrant neon green accents (#89d134).
    • System Default: Automatically synchronizes with OS color preferences.
    • Live theme preview selector in Profile Settings.
  • Changelog Modal ("What's New in b1t-Sched"): Responsive modal with a desktop min-width (600px) and version badge hierarchy.
  • Viewport Scroll Stability: Enforced manual browser scroll restoration and instant scroll-to-top resets on SPA route navigation, user sign-out, and unauthenticated redirects.

πŸ“± Progressive Web App (PWA) & Offline

  • Offline Resilient: Service worker (v2.53.14) caches static assets, dynamic layouts, and recent task data for seamless offline usage.
  • Adaptive Offline Banner: Dynamic top banner that pushes navigation and views downward without overlaying or obscuring interactive elements.
  • PWA Installation: Installable desktop and mobile app with a customized 3-row install prompt (Icon + Title, Description, Action Buttons) featuring solid backgrounds across all themes.

πŸ“ Modular Project Structure

All JavaScript modules are categorized into distinct architectural directories:

b1t-Sched/
β”œβ”€β”€ index.html                    # Single Page Application entry point
β”œβ”€β”€ manifest.json                 # PWA Web App Manifest
β”œβ”€β”€ sw.js                         # Service Worker (v2.53.14 caching & background sync)
β”œβ”€β”€ changes.json                  # Machine-readable release changelog history
β”œβ”€β”€ firestore.rules               # Firestore Cloud Security Rules & role helpers
β”œβ”€β”€ README.md                     # Project overview & documentation
β”‚
β”œβ”€β”€ css/                          # Modular Stylesheets
β”‚   β”œβ”€β”€ colors.css               # Color tokens & theme palettes (Light, Dark, High Contrast)
β”‚   β”œβ”€β”€ main.css                 # Base resets, typography, and auth hero layouts
β”‚   β”œβ”€β”€ components.css           # Reusable UI elements, modals, and PWA install prompt
β”‚   β”œβ”€β”€ dashboard.css            # Task cards, Event Raiders feed, action button rows
β”‚   β”œβ”€β”€ navbar.css               # Navigation bar & brand logo styling
β”‚   β”œβ”€β”€ classroom.css            # Google Classroom assignment lists & status badges
β”‚   β”œβ”€β”€ calendar.css             # Interactive monthly & weekly calendar views
β”‚   β”œβ”€β”€ timeline.css             # Activity timeline heatmaps & charts
β”‚   β”œβ”€β”€ note.css                 # Markdown note-taking & LocalSend sharing interface
β”‚   β”œβ”€β”€ notice.css               # University & CR notice viewers
β”‚   β”œβ”€β”€ changelog.css            # "What's New" modal styling & desktop min-width
β”‚   └── responsive.css           # Mobile breakpoints, compact dropdowns, sidebar drawers
β”‚
β”œβ”€β”€ js/                           # Organized Categorical JavaScript Architecture
β”‚   β”œβ”€β”€ admin/                   # Administrative Operations & Data Migration
β”‚   β”‚   β”œβ”€β”€ activity-logger.js   # Admin-level activity logging
β”‚   β”‚   β”œβ”€β”€ admin-api.js         # Administrative utility APIs
β”‚   β”‚   β”œβ”€β”€ migrate-activity-logs.js # Historical activity log migration
β”‚   β”‚   └── update-user-semesters.js # Semester auto-promotion batch tooling
β”‚   β”‚
β”‚   β”œβ”€β”€ core/                    # Core Infrastructure & Foundations
β”‚   β”‚   β”œβ”€β”€ app.js               # Application orchestrator, event listeners, auth routing
β”‚   β”‚   β”œβ”€β”€ auth.js              # Firebase Authentication wrapper & session timer
β”‚   β”‚   β”œβ”€β”€ db.js                # Firestore CRUD, normalized ID lookups & local fallbacks
β”‚   β”‚   β”œβ”€β”€ firebase-config.js   # Firebase SDK credentials & service initialization
β”‚   β”‚   β”œβ”€β”€ firestore-listener-manager.js # Real-time snapshot listeners for tasks/notices
β”‚   β”‚   β”œβ”€β”€ permission-manager.js# Role capability matrix & permission enforcement
β”‚   β”‚   β”œβ”€β”€ routing.js           # Hash-based SPA routing with scroll position resets
β”‚   β”‚   β”œβ”€β”€ ui.js                # Common UI notifications, loading screen, modal handling
β”‚   β”‚   └── utils.js             # Formatting, section grouping, and storage helpers
β”‚   β”‚
β”‚   β”œβ”€β”€ features/                # Application Domain Features
β”‚   β”‚   β”œβ”€β”€ approvals.js         # Faculty self-registration review & approval modal
β”‚   β”‚   β”œβ”€β”€ calendar-view.js     # Monthly/weekly calendar renderer with task badges
β”‚   β”‚   β”œβ”€β”€ changelog-modal.js   # "What's New" release notes modal
β”‚   β”‚   β”œβ”€β”€ classroom.js         # Google Classroom integration & task sync
β”‚   β”‚   β”œβ”€β”€ cr-notice.js         # Section notice creation & deadline management
β”‚   β”‚   β”œβ”€β”€ facultyClassroom.js  # Faculty classroom stream & announcement manager
β”‚   β”‚   β”œβ”€β”€ notes.js             # Personal notes module, Catbox uploads, LocalSend
β”‚   β”‚   β”œβ”€β”€ notice.js            # UCAM university notice reader & PDF viewer
β”‚   β”‚   β”œβ”€β”€ profile.js           # Profile settings, cooldown timers, theme selection
β”‚   β”‚   β”œβ”€β”€ raids-feed.js        # UITS Event Raiders live RSS/JSON syndication
β”‚   β”‚   β”œβ”€β”€ task-export.js       # PDF (with Unicode Bangla support), Markdown, and TXT task exporter
β”‚   β”‚   β”œβ”€β”€ timeline-data.js     # Activity timeline aggregation
β”‚   β”‚   └── timeline-ui.js       # Heatmap visualization & bar charts
β”‚   β”‚
β”‚   β”œβ”€β”€ notifications/           # Notification Systems
β”‚   β”‚   β”œβ”€β”€ notification-manager.js # Browser Push notification orchestrator
β”‚   β”‚   β”œβ”€β”€ notification-content-formatter.js # Payload and badge formatting
β”‚   β”‚   └── notifications-types.js  # Notification category constants
β”‚   β”‚
β”‚   └── pwa/                     # Progressive Web App & Offline Experience
β”‚       β”œβ”€β”€ cache-manager.js     # Local cache management & user storage cleanup
β”‚       β”œβ”€β”€ install-prompt.js    # Custom 3-row PWA installation banner
β”‚       β”œβ”€β”€ manifest-generator.js# Dynamic manifest generator
β”‚       β”œβ”€β”€ offline-indicator.js # Top-level push-down offline banner
β”‚       β”œβ”€β”€ offline-manager.js   # Connectivity detection & event listeners
β”‚       β”œβ”€β”€ pwa-detector.js      # Standalone / browser environment detection
β”‚       β”œβ”€β”€ pwa-init.js          # Service worker registration & lifecycle
β”‚       └── sw-update-manager.js # Service worker update notifications
β”‚
└── doc/                         # Comprehensive Project Documentation
    β”œβ”€β”€ DOCUMENTATION.md         # Full chronological project documentation
    β”œβ”€β”€ FIREBASE_SETUP.md        # Step-by-step Firebase configuration guide
    └── prompts/                 # Complete archive of implementation plans & walkthroughs

πŸš€ Quick Setup Guide

Prerequisites

  • Modern Web Browser (Chrome, Edge, Firefox, Safari, Brave)
  • Code Editor (VS Code recommended)
  • Firebase Account (Free Spark Plan is sufficient)

Step 1: Firebase Project Setup

  1. Follow the step-by-step setup guide in doc/FIREBASE_SETUP.md.
  2. Create Firestore collections (users, tasks, events, cr_notices, resourceLinks, metadata).
  3. Deploy the security rules from firestore.rules in the Firebase Console under Firestore Database β†’ Rules.

Step 2: Configure Firebase in Project

Open js/core/firebase-config.js and add your project configuration:

const firebaseConfig = {
  apiKey: "YOUR_API_KEY_HERE",
  authDomain: "YOUR_PROJECT_ID.firebaseapp.com",
  projectId: "YOUR_PROJECT_ID",
  storageBucket: "YOUR_PROJECT_ID.appspot.com",
  messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
  appId: "YOUR_APP_ID"
};

Step 3: Run Locally

You can run the application with any local HTTP server:

  • VS Code Live Server: Right-click index.html β†’ Open with Live Server
  • Python: python -m http.server 8000
  • Node.js: npx.cmd serve .

πŸ”’ Security & Access Control

Firestore security rules enforce strict privilege separation:

  • Public / Unauthenticated: Can read active user IDs/emails for credential resolution (if firestore.rules is published) and general app metadata.
  • Students: Can create personal tasks, update/delete tasks they created, view section group tasks, and manage their own notes.
  • CRs: Can create and edit section-level tasks, post and manage section notices, and delete group tasks.
  • Faculty: Can post department-wide notices, manage departmental tasks, and access Faculty Classroom tools.
  • Department Coordinators (DptCoor): Full faculty permissions plus account approval rights and role modifications for faculty/students within their department.
  • Admins: Unrestricted platform management, user role assignments, UID lookups, system-wide task/event management, and the Admin Role Preview Mode.

πŸ› οΈ Deployment

Vercel (Recommended)

npm install -g vercel
vercel

Netlify

npm install -g netlify-cli
netlify deploy --prod

Firebase Hosting

npm install -g firebase-tools
firebase login
firebase init hosting
firebase deploy --only hosting

🀝 Feature Requests & Progress Tracking

  • Quick Navbar Navigation: Clickable brand logo and title to return to Dashboard with smooth scroll-to-top.
  • FAQ Section: Expandable accordion explaining sections, permissions, roles, and profile settings.
  • Theme System: Light Mode, Dark Mode (blue accent #3b82f6), and High Contrast (neon green #89d134).
  • Monthly & Weekly Calendar: Responsive calendar views with task deadline badges and modal details.
  • Google Classroom Synchronization: Automated assignment discovery, status tracking, turned-in verification, and task sync.
  • Activity Timeline: Heatmap and frequency bar charts for tracking daily productivity and academic engagement.
  • Integrated PDF Viewing: Native in-app viewer for routines, academic calendars, and university notices.
  • Faculty Roles & Dedicated Workspaces: Role segregation, faculty-specific set-details, and department notice broadcasting.
  • Semester Auto-Promotion: Automatic semester advancement every July and January on user login with 30-day manual profile protection and an Admin fail-safe bulk update tool.
  • Mobile Pending Tasks Optimization: Compact dropdown filter (Filters: [Set Filter] [Clear]) and shortened button labels (Add, Old, Reset).
  • PWA Install Experience: Solid themed backgrounds and 3-row architecture for the install banner.

πŸ™ Appreciation

Thanks to these individuals who helped with testing, suggestions and support.

Faculties

Seniors

Classmates

Juniors

About

University Scheduler Project | Learning SPA, Backend, Firebase

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Contributors

Languages