NYSC Digital Attendance Tool for Community Development Service(CDS) activities across local governemts in Nigeria.
# 🇳🇬 NYSC Attendance & Clearance Portal
**An attendance management system for NYSC Local Government Inspectors (LGIs) and Corps Members.**
**Link:
nysc-lagos-island.web.app
---
## 📋 Table of Contents
- About the Project
- Features
- Tech Stack
- Project Structure
- Prerequisites
- Local Setup
- Firebase Setup Guide
- Environment Variables
- Deployment
---
## About the Project
This portal replaces paper-based CDS (Community Development Service) attendance sheets with a real-time, GPS-verified digital system. It was originally built for **NYSC Lagos Island LGA** but is structured to be forked and deployed for **any LGA across Nigeria** by simply updating the `.env` file and some parts of the code.
### The Problem It Solves
- Corps members signing attendance without getting to the local government ("ghost attendance")
- LGIs manually manually screening attendance from paper sheets
- No audit trail for attendance disputes
- Final Clearance bottlenecks at end of service year
### The Solution
- GPS geofence enforces physical presence at the CDS venue
- Device binding prevents credential sharing
- Real-time Firestore snapshots give LGIs instant visibility
- All records are immutable and timestamped on Firebase servers.
---
## Features
### 👤 Corps Members
| Feature | Description |
|---|---|
| **GPS Check-in** | Uses the Haversine formula to verify you're within a configurable radius of the CDS venue |
| **Device Binding** | Account is locked to the device used on first login — prevents sharing |
| **Attendance History** | Full paginated log of every CDS session with status badges |
| **Profile View** | Complete personal, academic, and official NYSC details |
| **Birthday Easter Egg** | Balloon animation on your birthday 🎈 |
### 🏛️ LGI Officials
| Feature | Description |
|---|---|
| **Real-Time Sheet** | Live attendance table that updates as corps members check in |
| **Status Management** | Approve / reject "Pending" entries (GPS sub …