Inspiration 💡

As a college student, I witnessed instructors spending 10-15 minutes each class manually taking attendance from paper rosters or Excel sheets. This tedious process wastes valuable teaching time and often leads to errors or disputes about attendance records. I wanted to create a solution that would digitize and simplify attendance tracking while making it accessible to all educators, regardless of their technical expertise.

What it does 🎯

VNSG Attendance is an Android app that transforms the traditional attendance-taking process into a seamless digital experience:

  • Import student data from Excel files with just one tap
  • Mark attendance with intuitive Present/Absent buttons for each student
  • Visual feedback with color-coded status badges (green for present, red for absent)
  • Export attendance records as timestamped Excel files for easy record-keeping
  • Smooth loading animations that enhance user experience

The app eliminates paper waste, reduces human error, and saves instructors valuable class time that can be redirected toward teaching.

How we built it 🛠️

I built this project using:

  • Kotlin for Android development
  • RecyclerView & Custom Adapters for efficient list rendering of students
  • Apache POI library for Excel file import/export functionality
  • Material Design Components for a modern, intuitive UI
  • Lottie animations for engaging loading states
  • Coroutines for asynchronous file operations to keep the UI responsive

Technical Architecture

The app follows a clean MVC pattern:

  • Student data class holds student information
  • StudentAdapter manages the RecyclerView display
  • MainActivity handles file operations and user interactions

Challenges we ran into 🚧

Excel File Parsing: Working with Apache POI to correctly read different Excel formats and handle edge cases (empty cells, merged cells) was initially challenging. I had to implement robust error handling to ensure the app wouldn't crash with unexpected file formats.

UI Responsiveness: Loading large Excel files (200+ students) on the main thread caused the app to freeze. I solved this by implementing Kotlin Coroutines to handle file I/O operations asynchronously while displaying a Lottie animation.

State Management: Ensuring attendance status updates persisted correctly when scrolling through long student lists required careful RecyclerView adapter implementation with proper ViewHolder binding.

Accomplishments that we're proud of ✨

  • Created a fully functional app that solves a real-world problem experienced daily by educators
  • Successfully integrated complex Excel operations into a mobile environment
  • Designed an intuitive UI that requires zero training for instructors to use
  • Implemented smooth animations and visual feedback that make the app feel polished
  • Built the entire project in under 3 weeks while balancing college coursework

What we learned 📚

  • How to work with Apache POI for advanced Excel file manipulation
  • Best practices for RecyclerView optimization with large datasets
  • Implementing asynchronous operations using Kotlin Coroutines
  • The importance of user feedback through animations and color-coded UI elements
  • How small optimizations in code can dramatically improve user experience

What's next for VNSG Attendance 🚀

Short-term improvements:

  • Add attendance analytics dashboard showing present/absent percentages
  • Implement multiple class session support with date-wise history
  • Create student self-check portal where students can view their attendance records

Long-term vision:

  • Add cloud sync so instructors can access attendance across devices
  • Implement QR code attendance for larger lecture halls
  • Create automated alerts when student attendance drops below thresholds
  • Develop web dashboard for administrators to track institution-wide attendance trends

Our goal is to make attendance tracking so seamless that it becomes invisible, allowing educators to focus on what truly matters: teaching and inspiring students.

Built With

Share this project:

Updates

Submission history