AssignmentHub - An App to manage assignments for university professors - AWS Amplify Hackathon

AssignmentHub - An App to manage assignments for university professors - AWS Amplify Hackathon

Do you have to manage a lot of assignments as a teacher? I've a great app where you can manage the assignments and track the progress of each student

Background

In this lockdown period, I saw my professors were having a hard time maintaining records and tracking assignments. Even the online class platforms weren’t that efficient and user-friendly in keeping up and tracking individual students’ records. It was almost impossible for the professors to ping and verify each student and track their progress.

As I was scrolling through my feed on Twitter, I came to know about the AWS Amplify + Hashnode Hackathon. I knew I was already late but I still thought about giving it a shot xD.

As soon as I sat down to brainstorm, I received a notification on Microsoft Teams about my assignment submission. Now you know the motivation behind the idea of AssignmentHub, you’ll be wondering - "Why do we need a different app when platforms like Microsoft Teams and Google Classes are already providing us with the same product?"

You’re absolutely right!

But not all professors find it easy going to the platforms again and again just to check and maintain the assignment records. What if they just want a really easy-to-use interface where they can just mark the students and keep a copy for themselves as a backup? This is where my app comes into use.

AssignmentHub provides an extremely user-friendly interface for keeping a track record of students who’ve submitted the assignments.

gif

My target audience are the professors who still rely on making excel sheets or are still using the conventional methods of marking students on a paper-list

AssignmentHub - Manage teacher teachers 🔥

A day before starting the project, I sketched some screens using Figma, to have an idea of what I am going to build.

Here, are all the features in the app which help the teacher to manage the assignments.

  • Login: Allow the teachers to login in
  • SignUp: Allow the teachers to sign up
  • Verify OTP: Verify the email entered by the teacher on sign up.
  • Home: Shows the OnGoing and the ended assignment
  • Add Student: Add student in the database
  • Add Assignment: Assign assignment to the student
  • Profile: This allows the teacher to see the profile info
  • Detail of Assignment: Show the detailed info about the assignment and allow the teacher to change the student assignment status

Here is my Figma design:

Figma Screens.png

Tech Stack

  • Kotlin
  • Android
  • MVVM
  • Jetpack Components (Datastore)
  • AWS Amplify (Cognito, DyanmoDB, GraphQL)

This is how my GraphQL schema looks like:

type Teacher @model
{
    id: ID!
    name: String!
    email: String!
    assignments: [Assignment] @connection(keyName: "byAssignment",fields: ["id"])
}

type Assignment @model
@key(name: "byAssignment", fields: ["teacherID"])
{
    id: ID!
    teacherID: ID!
    name: String!
    subject: String!
    status: Status!
    branch: Branch!
    year: Year!
    branchYearID: ID!
    description: String!
    students : [StudentAssignmentMapping] @connection(keyName: "byAssignmentID",fields: ["id"])
    lastDateSubmission: AWSDate!
}

type StudentAssignmentMapping @model
@key(fields: ["studentID", "assignmentID"])
@key(name: "byAssignmentID", fields: ["assignmentID"])
@key(name: "byStudentID", fields: ["studentID"])
{
    id: ID!
    studentID: ID!
    assignmentID: ID!
    status: Boolean!
    student: Student @connection (fields: ["studentID"])
    assignment: Assignment @connection (fields: ["assignmentID"])
}

type Student @model
@key(name: "byStudent", fields: ["branchYearID"])
{
    id: ID!
    name: String!
    rollNo: Int!
    branch: Branch!
    year: Year!
    branchYearID: ID!
    email: String!
    assignments : [StudentAssignmentMapping] @connection(keyName: "byStudentID",fields: ["id"])
}

enum Branch{
    BCA,
    Btech,
    BBA
}

enum Year{
    FIRST,
    SECOND,
    THIRD,
    FOURTH
}

enum Status{
    ONGOING,
    ENDED,
}

Future Improvement

  • Student List
  • Ping students to automatically who didn't submit their assignment before the closing of the submission date.

If you wanna look into the source code here is the link AssigmentHub and here is the apk link. To ensure code quality Im using the Github actions of Build and Lint passing.

All this is possible because of the great AWS Amplify discord server because they are providing great support, specially thanks to Amplify staff - richardmcclellan and Nader Dabit for making awesome Youtube tutorials about AWS Amplify