Inspiration
Issuing student passes can be a challenge and is often a hassle, and confusion on authenticity and time can lead to dangerous situations. This led us to build a digital classroom pass system for teachers and students to easily use.
What it does
Teachers can create classrooms for students to join using a 6-digit randomly generated class code. Teachers can then issue passes to students for specific classes and assign a location. Students can see the passes their teachers for their classes have issued. Teachers have the ability to revoke passes. Our authentication logic prevents students from performing actions only teachers are allowed to do.
How we built it
Our frontend is a mobile app built in React Native, our backend is a GraphQL API built-in Java Spring Boot with a CockroachDB database. Our front end uses the Apollo GraphQL client to make calls to our GraphQL API and the Firebase SDK to sign-in users. Our backend uses the Firebase Admin SDK to register users to Firebase and our own Cockroach DB database. Using Netflix DGS, our GraphQL schema code is automatically generated and methods are defined using DGS annotations. Using JPA and Hibernate, we map complex database relationships such as many students being able to belong to many classrooms. Our authorization logic has methods to verify users being either a student or teachers using roles in the decoded access token generated by Firebase when users sign in.
Challenges we ran into
Designing and mapping complex database relationships were challenging as certain fetch types prevented either data from being persisted or fetched. Circular dependencies were also another challenge as certain models were dependent on each other resulting in stack overflow exceptions.
Accomplishments that we're proud of
Accomplishments that we're proud of include building a GraphQL API with role-based authorization within a day, wiring the entire frontend with full registration and login functionality, and being able to send SMS notifications to teachers when students request passes.
What we learned
What's next for Digital Pass
What's next is to replace mock data on the Frontend with the relevant GraphQL mutations and queries and add more notifications to our logic enabling users to be more informed of their class passes.
Built With
- apollo
- cockroachdb
- dgs
- graphql
- java
- javascript
- react
- react-native
- springboot
- twilio
Log in or sign up for Devpost to join the conversation.