Skip to content

trueashik/ClassPing

Repository files navigation

ClassPing

Vanilla JS Vite Firebase

A real-time, role-based communication and scheduling platform for educational centers.

👉 Live Demo Link | 📺 YouTube Pitch Video


The "Why" (Problem & Solution)

  • The Problem: Educational centers often rely on fragmented communication methods—like scattered WhatsApp groups, endless email chains, and paper flyers. This frequently causes missed classes, miscommunications, and frustrated parents.
  • The Solution: ClassPing solves this by providing a unified, centralized hub. High-priority announcements are explicitly highlighted, schedules are updated in real-time, and role-based access keeps the noise down so parents see exactly what they need.

The "How" (Architecture & Tech Stack)

We focused on a clean architecture that guarantees real-time synchronization and clear role boundaries.

Tech Stack

  • Frontend: Modern Vanilla JavaScript (ESModules) bundled efficiently with Vite. Features custom SPA routing without the overhead of heavy frameworks.
  • Backend: Firebase Firestore for scalable, lightning-fast NoSQL data storage.
  • Authentication: Firebase Auth handling secure Email/Password and Google OAuth login workflows.
  • Notifications: Firebase Cloud Messaging (FCM) infrastructure to power prioritized, real-time update delivery.

Data Flow / Schema

Our NoSQL schema is optimized for independent scaling and fast real-time client read operations:

  • users: Stores custom profile details and explicit roles (admin vs. parent). Admin status enforces backend validation (e.g., verifying @classping.com domains).
  • classes: Focuses heavily on real-time scheduling state (tracking dateTime, status, and enrolled counts).
  • announcements: Maintained as a completely independent collection so that high-frequency feed updates never slow down core class scheduling queries.

Core Features (Role-Based Breakdown)

👨‍🏫 Admin & Staff

  • Class Management: Full CRUD operations directly in the dashboard to quickly schedule, update, or cancel classes.
  • Real-time Announcements: Push instant notifications and urgent updates to everyone seamlessly.

👩‍👧 Parents & Users

  • Real-Time Dashboard: Instantly see upcoming classes and center status—no page refreshes required.
  • Priority Feed Algorithm: The UI intelligently highlights critical or urgent updates so they never get buried under casual news.

The "Run It Yourself" (Local Setup)

If you're pulling this code to review or contribute, here is exactly how to get it running locally.

Prerequisites

  • Node.js (v18+ recommended)
  • A Firebase Project (with Authentication and Firestore enabled)

Installation Steps

  1. Clone the repository:

    git clone https://github.com/trueashik/ClassPing.git
    cd ClassPing
  2. Install dependencies:

    npm install
  3. Environment Variables: Create a .env file in the root of the project with your Firebase configuration keys. (Do not commit this file!)

    VITE_FIREBASE_API_KEY=your_api_key_here
    VITE_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
    VITE_FIREBASE_PROJECT_ID=your_project_id
    VITE_FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com
    VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
    VITE_FIREBASE_APP_ID=your_app_id
  4. Run the Development Server:

    npm run dev

    Your app will now be running on http://localhost:5173.


The Context

🏆 Hackathon Tag: Built entirely from scratch in 4 days for the GDG Virginia Tech Solution Challenge, specifically utilizing Google Technologies to solve real-world scheduling friction.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors