---
# System prepended metadata

title: Untitled

---

## Course Table
This table helps to track the courses that are held
| Name | Datatype | Constraint |
|------|----------| -----------|
| pk_course_id | Integer | pk |
| name | varchar(200) | not null |
| domain | varchar(200) | not null |
|whatsapp_grp_link| text | null |
| classroom_link | text | null |
| details | longtext | null |

## Registration Table

This table is used to store registration for courses. 

| Name | Datatype | Constraint |
| -------- | -------- | -------- |
| pk_registration_id | Integer| composite PK, auto-increment |
| name | varchar(200) | not null|
| email | varchar(200) | not null |
| branch | varchar(200) | not null |
| semester | integer | not null|
| fkCourseId | integer | not null |
| phoneNumber | varchar(10) | null |
| whatsapp| varchar(10) | null |
| registration_email_status| enum | PENDING/SENT|
| certificate_eligibility | boolean | not null, default FALSE |
| certificate_generation_status | enum | PENDING/SENT|
| certificate_link | varchar(250) | null |
 
For every courseId there can only one registration from a particular student.

## Class Table
This table maps the class dates with the course
| Name | Datatype | Constraint |
|-----|-------|------|
|pk_class_id| Integer | Not null, auto-increment |
|fkCourseId | Integer | not null|
|date | Date | not null |
| duration | varchar)20) | not null |
| details | longtext | null |
| venue | text | null |

## Attendance Table
|Name | Datatype | Constraint |
|----|----|---|
|pk_attendance_id | Integer | Not null, auto-increment |
| fk_registration_id | Integer | Not null |
| fk_class_id | Integer | not null |
| present | Boolean | not null, default FALSE|
| feedback | longtext | null |
| rating | integer | null|

----

## Work flow
1. First a course is created 
2. Students can register into a particular course (Uniqueness should be mantained for a particular course). When registration is done, an email will be sent to confirm the registration along with the whatsapp group link and classroom link.
3. Now a member can schedule a class for a particular course in the date of preference.
4. Notification will be made via email to the registered students about the date and class prior. This email will have an attached QR Code to it containing classID and registrationID for attendance.
5. On the day of the class, the members will scan the QR code of the students to check their registration and give them attendance.
6. When the class is over, there will be a feedback form sent to those who have attended the class.
