Birthdex is a modern, interactive dashboard designed to track and celebrate student birthdays at Scaler School of Technology (SST). It serves as a digital "Rolodex" for the student community, ensuring no birthday goes unnoticed. The application features a responsive "Mobile-First" design, real-time search, dynamic filtering, and data visualization.
In large student communities (1000+ students), it is difficult to keep track of birthdays. Static lists are boring and hard to search. Students often miss celebrating their peers because there is no centralized, engaging platform to view upcoming birthdays. Birthdex solves this by providing a searchable, sortable, and visual interface for student birth dates.
- Dynamic Student Grid: Automatically renders student cards from a JSON dataset.
- Smart Search & Filtering:
- Real-time search (with debounce optimization) by Name or Roll Number.
- Filters for "Today", "This Week", "This Month", and "All".
- Interactive UI Elements:
- Flip Cards: Click any card to reveal "On This Day" historical trivia (fetched via API).
- Theme Switcher: 4 distinct themes (Default, Hacker, Ocean, Mars) with
localStoragepersistence. - God Mode Cursor: Interactive background blobs and a "torchlight" hover effect that follows the mouse.
- Data Visualization: A "Stats & Insights" modal displaying a doughnut chart of birthdays by month (using Chart.js).
- Personalization:
- Auto-calculated Zodiac Signs and Turning Age.
- Dynamic avatars based on student initials.
- Mobile-First Responsiveness: Optimized layout for smartphones (stacked navigation, touch-friendly buttons).
This project relies heavily on Vanilla JavaScript and DOM Manipulation concepts, including:
- Element Creation: Using
document.createElement()to generate student cards and avatars dynamically. - Event Delegation & Handling:
addEventListenerfor search input, filter buttons, and theme toggles.mousemoveevents for the parallax background and torchlight cursor effect.
- DOM Updates:
innerHTMLandtextContentfor updating stats and countdowns.classList.togglefor flipping cards and opening modals.
- State Management: Managing
currentDatasetvsallStudentsto handle filtering without re-fetching data. - CSS Variables via JS: Updating
--mouse-xand--mouse-ydynamically for hover effects. - Browser APIs:
localStorageto save the user's selected theme.fetch()API to load local JSON data and external trivia.
Since this project uses fetch() to load external JSON data, it cannot be run by simply double-clicking index.html (due to CORS policy).
- Open the Folder: Open the project folder in VS Code.
- Install Live Server: Install the "Live Server" extension by Ritwick Dey.
- Start Server: Right-click on
index.htmland select "Open with Live Server". - View: The project will open in your default browser at
http://127.0.0.1:5500.
- Core Logic: 100% Vanilla JavaScript (No frontend frameworks used).
- Visualizations:
Chart.jsis used strictly for the canvas-based chart in the Stats modal. It does not control the DOM or application logic. - Effects:
canvas-confettiis used for the celebration animation. - 3D Effects:
vanilla-tilt.jsis used for the card tilt effect.
- Static Data: The student data is currently loaded from a static
data.jsonfile. In a production version, this would be connected to a live database. - Trivia API: The "On This Day" feature relies on the external
numbersapi.com. If the API is down, fallback text is displayed.