A single-page application (SPA) that helps students manage academic tasks, assignments, exams, and events with personalized department-specific content.
π Documentation π
- π± 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
- A text editor (VS Code recommended)
- Modern web browser (Chrome, Firefox, Edge)
- Firebase account (free)
- 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
- Open
- Open
js/firebase-config.js - 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"
};-
Backup your current
index.html:mv index.html index-old-backup.html
-
Rename the new file:
mv index-new.html index.html
-
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.htmlin your browser
- Right-click
-
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
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
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
Edit in Firebase Console β Firestore β metadata β departments:
{
"list": ["CSE", "IT", "CE", "EEE", "BBA", "YOUR_NEW_DEPT"]
}Edit in Firebase Console β Firestore β metadata β semesters:
{
"list": ["1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th"]
}Edit in Firebase Console β Firestore β metadata β sections:
{
"CSE-1st": ["A1", "A2"],
"CSE-2nd": ["A1", "A2", "B1", "B2"],
"IT-1st": ["A1", "A2"]
}- Go to Firebase Console β Firestore β
resourceLinks - Create a document with Department ID (e.g.,
CSE) - 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"
}
]
}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]
}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]
}refer to: activity-timeline--migration and firebase_timeline.md
run in browser console:
migrateActivityLogs()
-
Install Vercel CLI:
npm install -g vercel
-
Deploy:
vercel
-
Follow prompts:
- Link to your project
- Deploy!
-
Install Netlify CLI:
npm install -g netlify-cli
-
Deploy:
netlify deploy
-
For production:
netlify deploy --prod
-
Push to GitHub:
git add . git commit -m "Initial commit" git push origin main
-
Enable GitHub Pages:
- Go to repository settings
- Scroll to "Pages"
- Source: main branch
- Save
-
Install Firebase CLI:
npm install -g firebase-tools
-
Login:
firebase login
-
Initialize hosting:
firebase init hosting
-
Deploy:
firebase deploy --only hosting
Users can sign up themselves. No manual intervention needed.
- Go to Firebase Console β Firestore
- Navigate to
taskscollection - Click "Add document"
- Fill in fields and save
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);
});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
- 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
Solution: Check that Firebase CDN scripts are loaded before your app scripts in index.html
Solution:
- Check Firestore Security Rules
- Verify user is authenticated
- Check browser console for detailed errors
Solution:
- Verify tasks exist in Firestore with matching department/semester/section
- Check browser console for errors
- Ensure
statusfield is "active" - Check deadline is in the future
Solution:
- Check
resourceLinkscollection has document for user's department - Verify
resourcesarray field exists - Check URLs are valid
- β Chrome/Edge (latest)
- β Firefox (latest)
- β Safari (latest)
- β Mobile browsers
This project is licensed under the MIT License - see the LICENSE file for details.
- Make changes to HTML/CSS/JS files
- Test using Live Server or local HTTP server
- Check browser console for errors
- Test on different screen sizes
- Update UI components in respective files
- Add new routes in
routing.jsif needed - Create new database operations in
db.js - Update UI rendering in
ui.js
For issues or questions:
- Check
FIREBASE_SETUP.mdfor backend setup - Check
REDESIGN_PLAN.mdfor architecture details - Review browser console for error messages
- Complete Firebase setup (see
FIREBASE_SETUP.md) - Update
js/firebase-config.jswith your credentials - Replace
index.htmlwithindex-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!
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! π
Thanks to these individuals who helped with testing, suggestions and support.
Faculties
Seniors
- Md Kamruzzaman Shishir (1814355002)
- Md. Sakibul Hakim (Sadab) (2114951038)
- Zobayer Hasan (2215151106)
- Mohammad Masud Chowdhury Mahir (2215151105)
- Md Sakib Hosen (0432220005101058)
- Akib Reza (0432220005101061)
- Md. Safrid Bhueyan (0432310005101080)
- K. M. Jakaria (0432310005101037)
- Md. Robiul Hassan (Rabin) (0432310005101096)
- Md. Mahfuz (0432310005101057)
- Md. Masud Rahman (0432320005101064)
- Kazi Md. Azhar Uddin Abeer (0432320005101120)
- Md.Jihad Hossan (0432320005101017)
- Md. Muhaiminul Islam (0432320005101207)
- Rudro Antony Mrong (0432320005101059)
Classmates
- Jannatul Ferdus (0432410005101058)
- Shalehin Ahmed (0432410005101083)
- Shamiur Hasan (0432410005101053)
- Md. Jubair Ahammed (0432410005101112)
- Saha Pradyumna Prasad (Ankur) (0432410005101159)
- Manik Halder (0432410005101113)
- @Helal Udding Patwary (Shakil) (0432410005101086)
Juniors







