Inspiration

The inspiration behind UCF Attendance stemmed from a need for a more reliable and efficient attendance tracking system. While UCF Here (currently used by UCF) provided a convenient solution, there was a pressing demand for a more robust and foolproof approach. This motivated us to explore innovative technologies and develop a solution that not only streamlines the process but also ensures the utmost accuracy and security in attendance tracking.

What it does

UCF Attendance revolutionizes the way attendance is taken. It seamlessly combines QR code and face recognition technologies to provide a highly accurate and secure attendance tracking system. This means that students can check in with ease, and educators can trust that the records are reliable.

How we built it

We approached the development of UCF Attendance by breaking it down into four distinct components:

1. Backend: The backend is the core of our system, leveraging Django and Django Rest Framework to establish a seamless communication network through API endpoints. This layer interfaces with our Postgres DB and Redis to provide a robust RESTful foundation.

2. Web Interface: Our web interface, built with React, empowers professors to effortlessly showcase easily scannable QR codes on various screens. This intuitive interface ensures a smooth experience for both educators and students.

3. Student App: The dedicated student application, developed using React Native, enables students to efficiently scan QR codes using their mobile devices. This mobile solution ensures a convenient and reliable attendance tracking experience.

4. Image Processing Pipeline: This critical pipeline efficiently manages the intake and processing of images from mobile devices. Leveraging the power of Amazon S3, SQS, Lambda, and Rekognition, it adeptly extracts and transmits pertinent data to the backend. This ensures a precise and streamlined attendance tracking process, all seamlessly deployed with Terraform.

Challenges we ran into

1. QR Scanning in React Native: Implementing QR scanning posed a significant challenge, especially since it was our first time working with React Native. Overcoming this learning curve required extensive research and experimentation.

2. Secure Data Transmission from Lambda to Django on EC2: Another significant challenge revolved around securely transmitting data from Lambda back to our RDS. Initially, we considered providing the Lambda function with an API key and leverage the backend service. However, this raised concerns about maintaining the confidentiality of the key. Utilizing Key Management Service (KMS) was deemed inefficient for this purpose.

Alternatively, granting direct Lambda access to the RDS was considered. However, this approach introduced a multitude of complexities, including network configurations, database authentication, custom SQL code, and an extensive administrative overhead.

Ultimately, we arrived at a viable solution: we granted the Lambda function access to a dedicated port that exclusively allowed private IP access. Additionally, we implemented a mechanism to inject a special header, which is whitelisted for this router. This header is then verified by the application code. This approach struck a perfect balance between security and practicality, ensuring secure data transmission without imposing excessive administrative burdens.

Accomplishments that we're proud of

1. Successfully Achieved a Working MVP: We're thrilled to have developed a MVP that demonstrates the core functionality of UCF Attendance.

2. Substantial Learning Experience: Throughout the project, we embarked on a significant learning journey. We gained valuable insights into various technologies, problem-solving techniques, and best practices. This newfound knowledge will undoubtedly contribute to our future endeavors.

What's next for UCF Attendance

While UCF Attendance has made significant strides, we recognize that perfection is an ongoing pursuit. To further enhance its capabilities, we aim to implement Rekognition Liveness checks to ensure the authenticity of student verification. This additional layer of security will help thwart attempts to use static images, reinforcing the system's integrity.

Built With

Share this project:

Updates