Skip to content

b1tranger/b1t-Sched

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

303 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

b1t-Sched - Academic Task Scheduler

A single-page application (SPA) that helps students manage academic tasks, assignments, exams, and events with personalized department-specific content.

πŸ‘‰ Documentation πŸ‘ˆ

✨ Features

  • πŸ“± Single-Page Application - Fast, seamless navigation
  • πŸ” Firebase Authentication - Secure email/password login with password reset
  • πŸ‘€ User Profiles - Set department, semester, and section once
  • πŸ“‹ Personalized Tasks - View tasks filtered by your academic details, with clickable links and collapsible descriptions
  • ✏️ Edit Entries - Users can edit their own tasks; admins can edit all tasks and events; CRs can create department events and manage their own
  • πŸ”— Dynamic Resource Links - Department-specific routine, calendar, and faculty contacts with built-in PDF viewer
  • πŸ“… Event Calendar - Track upcoming academic events with collapsible descriptions, department scope badge, and clickable links
  • πŸ“† Calendar View - Interactive monthly calendar with task visualization, date navigation, and responsive mobile layout (monthly/weekly toggle)
  • πŸ“£ CR Notices - Class Representatives can post, edit, and delete notices visible to their section group; supports priority levels and deadline tracking
  • πŸ“° University Notice Viewer - View UCAM university notices with PDF preview, powered by Vercel serverless backend with local caching
  • 🏫 Google Classroom Integration - View assignments and announcements from enrolled courses in a unified interface with OAuth session persistence
  • πŸ“ Note Taking - Personal notes with markdown support, auto-save, and file upload via catbox.moe/tmpfiles.org
  • πŸ“Š Activity Timeline - Visual heatmap and bar chart tracking user activity (logins, tasks, events) for productivity insights
  • πŸ”” Push Notifications - Real-time browser notifications for new tasks and events (mobile-compatible)
  • πŸ† Contributions - Leaderboard of top contributors (group-specific or global across all departments)
  • βš™οΈ Profile Settings - Update your details anytime (30-day cooldown)
  • ❓ FAQ Section - Collapsible accordion explaining how the site works, user roles, and profile settings
  • 🎨 Maroon Theme - Professional dark maroon and off-white color scheme
  • πŸ“± Fully Responsive - Works on desktop, tablet, and mobile
  • πŸ“² Progressive Web App - Installable app with offline support and service worker caching

πŸ“– For complete documentation, see doc/DOCUMENTATION.md


Stack

image

Screenshots

1 2 3 4 5 6 7 8

πŸš€ Quick Setup Guide

Prerequisites

  • A text editor (VS Code recommended)
  • Modern web browser (Chrome, Firefox, Edge)
  • Firebase account (free)

Step 1: Firebase Backend Setup

  1. Follow the complete Firebase setup guide:
    • Open FIREBASE_SETUP.md
    • Complete all steps to set up Firebase project
    • Create Firestore collections with sample data
    • Copy your Firebase configuration

Step 2: Configure Firebase in Project

  1. Open js/firebase-config.js
  2. Replace the placeholder values with your Firebase configuration:
const firebaseConfig = {
  apiKey: "YOUR_API_KEY_HERE",              // Replace with your API key
  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: Replace Old Index File

  1. Backup your current index.html:

    mv index.html index-old-backup.html
  2. Rename the new file:

    mv index-new.html index.html

Step 4: Test Locally

  1. Open the project:

    • Right-click index.html β†’ Open with Live Server (VS Code extension)
    • OR use Python: python -m http.server 8000
    • OR simply open index.html in your browser
  2. Test the flow:

    • βœ… Sign up with a new account
    • βœ… Set your department, semester, section
    • βœ… View personalized dashboard
    • βœ… Click resource links
    • βœ… Access profile settings
    • βœ… Update your details
    • βœ… Logout and login again

πŸ“ Project Structure

b1t-Sched/
β”œβ”€β”€ index.html                    # Main SPA entry point
β”œβ”€β”€ manifest.json                 # PWA manifest
β”œβ”€β”€ sw.js                         # Service worker
β”œβ”€β”€ README.md                     # This file
β”‚
β”œβ”€β”€ css/                          # Stylesheets
β”‚   β”œβ”€β”€ colors.css               # CSS variables (maroon theme)
β”‚   β”œβ”€β”€ main.css                 # Core styles
β”‚   β”œβ”€β”€ components.css           # Reusable components
β”‚   β”œβ”€β”€ dashboard.css            # Dashboard layout, modals
β”‚   β”œβ”€β”€ navbar.css               # Navigation bar
β”‚   β”œβ”€β”€ notice.css               # Notice viewer & PDF viewer styles
β”‚   β”œβ”€β”€ classroom.css            # Google Classroom styles
β”‚   β”œβ”€β”€ calendar.css             # Calendar view styles
β”‚   β”œβ”€β”€ timeline.css             # Activity timeline styles
β”‚   β”œβ”€β”€ note.css                 # Note-taking styles
β”‚   β”œβ”€β”€ responsive.css           # Mobile responsive styles
β”‚   └── ...                      # Additional styles
β”‚
β”œβ”€β”€ js/                           # JavaScript modules
β”‚   β”œβ”€β”€ firebase-config.js       # Firebase configuration (⚠️ UPDATE THIS)
β”‚   β”œβ”€β”€ auth.js                  # Authentication logic
β”‚   β”œβ”€β”€ db.js                    # Database operations
β”‚   β”œβ”€β”€ routing.js               # SPA routing
β”‚   β”œβ”€β”€ ui.js                    # UI rendering
β”‚   β”œβ”€β”€ profile.js               # Profile management
β”‚   β”œβ”€β”€ utils.js                 # Utility functions
β”‚   β”œβ”€β”€ notice.js                # University notice viewer
β”‚   β”œβ”€β”€ cr-notice.js             # CR notice management
β”‚   β”œβ”€β”€ notes.js                 # Note-taking module
β”‚   β”œβ”€β”€ classroom.js             # Google Classroom integration
β”‚   β”œβ”€β”€ calendar-view.js         # Calendar view (monthly/weekly)
β”‚   β”œβ”€β”€ activity-logger.js       # Activity tracking
β”‚   β”œβ”€β”€ timeline-data.js         # Timeline data processing
β”‚   β”œβ”€β”€ timeline-ui.js           # Timeline visualization
β”‚   β”œβ”€β”€ notification-manager.js  # Push notifications
β”‚   └── app.js                   # Main application logic
β”‚
β”œβ”€β”€ doc/                          # Documentation
β”‚   β”œβ”€β”€ DOCUMENTATION.md         # Complete project documentation
β”‚   β”œβ”€β”€ FIREBASE_SETUP.md        # Firebase setup guide
β”‚   └── ...                      # Additional docs
β”‚
β”œβ”€β”€ functions/                    # Firebase Cloud Functions
β”‚   └── index.js                 # Admin functions entry point
β”‚
└── images/                       # Image assets

🎨 User Flow

1. User visits website
   ↓
2. Login/Signup
   ↓
3. First login? β†’ Set Details (Department, Semester, Section)
   ↓
4. Dashboard
   β”œβ”€ Resource Links (3 cards: Routine, Calendar, Faculty)
   β”œβ”€ Pending Tasks (filtered by user settings)
   └─ Upcoming Events
   ↓
5. Click User Details Card (top-right)
   ↓
6. Profile Settings
   β”œβ”€ Edit Department
   β”œβ”€ Edit Semester
   β”œβ”€ Edit Section
   β”œβ”€ Save Changes
   └─ Logout

πŸ”§ Configuration

Adding Departments

Edit in Firebase Console β†’ Firestore β†’ metadata β†’ departments:

{
  "list": ["CSE", "IT", "CE", "EEE", "BBA", "YOUR_NEW_DEPT"]
}

Adding Semesters

Edit in Firebase Console β†’ Firestore β†’ metadata β†’ semesters:

{
  "list": ["1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th"]
}

Adding Sections

Edit in Firebase Console β†’ Firestore β†’ metadata β†’ sections:

{
  "CSE-1st": ["A1", "A2"],
  "CSE-2nd": ["A1", "A2", "B1", "B2"],
  "IT-1st": ["A1", "A2"]
}

Adding Resource Links

  1. Go to Firebase Console β†’ Firestore β†’ resourceLinks
  2. Create a document with Department ID (e.g., CSE)
  3. Add array field resources:
{
  "resources": [
    {
      "id": 1,
      "title": "CSE Routine",
      "description": "(Spring 2026)",
      "url": "https://docs.google.com/...",
      "icon": "πŸ“…",
      "type": "routine"
    },
    {
      "id": 2,
      "title": "Academic Calendar",
      "description": "(2026)",
      "url": "https://calendar.google.com/...",
      "icon": "πŸ“†",
      "type": "calendar"
    },
    {
      "id": 3,
      "title": "CSE Faculty List",
      "description": "(Spring 2026)",
      "url": "https://docs.google.com/...",
      "icon": "πŸ‘₯",
      "type": "faculty"
    }
  ]
}

Adding Tasks

Firebase Console β†’ Firestore β†’ tasks β†’ Add document:

{
  "title": "Operating Systems Assignment 1",
  "course": "CSE-3101",
  "department": "CSE",
  "semester": "3rd",
  "section": "A1",
  "deadline": "2026-03-15T23:59:59Z",  // Use timestamp picker
  "type": "assignment",  // assignment, homework, exam, project
  "description": "Complete chapters 1-3 exercises",
  "details": "Submit via email to instructor",
  "status": "active",
  "createdAt": [current timestamp]
}

Adding Events

Firebase Console β†’ Firestore β†’ events β†’ Add document:

{
  "title": "Spring Semester Final Exam",
  "date": "2026-05-20T09:00:00Z",
  "department": "ALL",  // or specific department
  "description": "Final examinations begin",
  "createdAt": [current timestamp]
}

Update Timeline Manually

refer to: activity-timeline--migration and firebase_timeline.md

run in browser console:

migrateActivityLogs()

πŸš€ Deployment

Option 1: Vercel (Recommended)

  1. Install Vercel CLI:

    npm install -g vercel
  2. Deploy:

    vercel
  3. Follow prompts:

    • Link to your project
    • Deploy!

Option 2: Netlify

  1. Install Netlify CLI:

    npm install -g netlify-cli
  2. Deploy:

    netlify deploy
  3. For production:

    netlify deploy --prod

Option 3: GitHub Pages

  1. Push to GitHub:

    git add .
    git commit -m "Initial commit"
    git push origin main
  2. Enable GitHub Pages:

    • Go to repository settings
    • Scroll to "Pages"
    • Source: main branch
    • Save

Option 4: Firebase Hosting

  1. Install Firebase CLI:

    npm install -g firebase-tools
  2. Login:

    firebase login
  3. Initialize hosting:

    firebase init hosting
  4. Deploy:

    firebase deploy --only hosting

πŸ› οΈ Admin Operations

Adding New Users (Manual)

Users can sign up themselves. No manual intervention needed.

Managing Tasks (Manual Method)

  1. Go to Firebase Console β†’ Firestore
  2. Navigate to tasks collection
  3. Click "Add document"
  4. Fill in fields and save

Bulk Import (Advanced)

Create a script to import from Google Sheets:

// Example: Import tasks from array
const tasks = [/* your tasks */];

tasks.forEach(async (task) => {
  await db.collection('tasks').add(task);
});

πŸ”’ Security

Firestore Security Rules

Already set up in FIREBASE_SETUP.md. Rules ensure:

  • βœ… Only authenticated users can access data
  • βœ… Users can only edit their own profile
  • βœ… Users can create tasks and edit/delete their own
  • βœ… Admins have full control over all tasks and events
  • βœ… CRs can create department events and manage their own events
  • βœ… Blocked users are restricted to read-only mode

API Key Safety

  • Firebase API keys are safe to include in client-side code
  • Security is enforced through Firestore Security Rules
  • Domain restrictions can be set in Firebase Console

πŸ› Troubleshooting

Issue: "Firebase not defined"

Solution: Check that Firebase CDN scripts are loaded before your app scripts in index.html

Issue: "Permission denied" errors

Solution:

  1. Check Firestore Security Rules
  2. Verify user is authenticated
  3. Check browser console for detailed errors

Issue: Tasks not showing

Solution:

  1. Verify tasks exist in Firestore with matching department/semester/section
  2. Check browser console for errors
  3. Ensure status field is "active"
  4. Check deadline is in the future

Issue: Resource links not appearing

Solution:

  1. Check resourceLinks collection has document for user's department
  2. Verify resources array field exists
  3. Check URLs are valid

πŸ“Š Browser Support

  • βœ… Chrome/Edge (latest)
  • βœ… Firefox (latest)
  • βœ… Safari (latest)
  • βœ… Mobile browsers

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘¨β€πŸ’» Development

Local Development

  1. Make changes to HTML/CSS/JS files
  2. Test using Live Server or local HTTP server
  3. Check browser console for errors
  4. Test on different screen sizes

Adding New Features

  1. Update UI components in respective files
  2. Add new routes in routing.js if needed
  3. Create new database operations in db.js
  4. Update UI rendering in ui.js

🀝 Support

For issues or questions:

  1. Check FIREBASE_SETUP.md for backend setup
  2. Check REDESIGN_PLAN.md for architecture details
  3. Review browser console for error messages

πŸŽ‰ Getting Started Checklist

  • Complete Firebase setup (see FIREBASE_SETUP.md)
  • Update js/firebase-config.js with your credentials
  • Replace index.html with index-new.html
  • Add sample data to Firestore (tasks, events, resource links)
  • Test signup/login flow
  • Test setting details
  • Test dashboard with personalized data
  • Test profile settings
  • Deploy to production
  • Share with students!

Feature Request:

from @S. M. Zafrul Islam (zafrul.islam@uits.edu.bd)

  • task cards divided into smaller cards for each detail (deadline in a card, title in another card) to make it easier to get innone look
  • promote to 59 batch juniors
  • click logo to go to home screen

from @Helal Udding Patwary (Shakil) (0432410005101086)

  • short faq explaining each section

from @K. M. Jakaria (0432310005101037)

  • dark theme 1d16168e1616d84040eeeeee
  • light theme 7d0a0abf3131ead196eeeeee
  • Add Monthly Calender view for mobile Tasks.
  • Add Classroom tasks atumatically adding to the tasks (Automation) (admin: added a button to "sync" the assignments and add them as tasks)

from @MuhammadShishir:

  • Time tracking,
  • Adding documents,
  • Adding AI support,
  • Add a timeline view and table view ....
I will need some elaboration:
1. Time Tracking: Timeline? like who posted what and when? Is it a different feature?
2. Document adding: I will be making a Qbank, Insha Allah. Will import that feature (adding questions) as other file upload here.
3. AI support: how about a model trained with my whole resources dump of all questions, notes, outlines collected?

Install clickup and see,

  • Time tracking is per task time tracking using a stop watch or timer button per task ( admin: added timeline, but no timer for each ask)
  • In a task many documents r generated or given to use, if we add them here it will be easy to maintain and later we can just share the link to people who need it ( admin: added temp uploads in notes )
  • AI support is for updating tasks, creating files and answering questions
  • The two views I mentioned r the easiest, just call ur tasks into two tabs, one should look like a table of task and another will have calender view and tasks in them showing u ur work timeline, just go to clickup for reference ....

from @foxxie911

  • need to refine data/files (all digital versions; routines formatted)
  • add PDF viewer: need to view resources inside the website/app (otherwise I am depending on outside sources --> not convincing)
  • Faculty-side ( admin: have added the roles, they have separate space for tasks in theory)
  • add a feature, the semester of each student will update automatically at the end of semester, or with only one push of button by admin

Ready to get started? Follow FIREBASE_SETUP.md first! πŸš€


πŸ™ 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

License

Stars

Watchers

Forks