Introducing krypton - A Discord Classroom Manager Bot π§βπ«
Taking the unconventional classroom, way up a notch
Online learning is rapidly becoming one of the most cost-effective ways to educate the worldβs rapidly expanding workforce.
-Jack Messman
Hello World π
It's Suyash and this post is about my latest project Krypton, built for the super-awesome HarperDB + Hashnode Hackathon. As the project was announced, I began pondering over an idea that would impact the masses. Being a class representative (and a student first :p) I noticed how Discord - despite being loaded with powerful features, was not even considered for being a viable option for online classroom activities.
Inspired and driven, thanks to the Hackathon deadline, I got to work and the result is krypton - The Discord Bot for Classroom Management.
So what exactly is krypton?
TLDR;
krypton is a Discord bot that let's teachers manage Servers built for students and performs the functionalities like:
- Enrolling Students in different classrooms
- Creating Assignments
- Accepting Submissions
- Filtering Submissions and getting assignment specific report
Discord has always been promoting itself to be a viable destination for faculties and students to engage together (Source) with Discord even having a Public Study Server. It has several features and bots that allow a frankly ridiculous amount of functionality and attractive tools. One missing link - the ability to accept assignment submissions.
Enter, krypton!
Built with Node.js for back-end, HarperDB for Database and Heroku for deployment, Krypton aims to solve the problem of assignment submissions. All that a teacher has to do, is invite the bot to the server. From then on, student submissions can be tracked without hassle. Functionalities such as enrolling students, creating assignments for the class, accepting and filtering their submissions are possible just by the input of simple commands.
Codebase
Check out the Project here: - krypton
Help us by contributing. π
Contributions
Pull Requests are always welcome!
If you wish to contribute using Github, you can work on any features or create one on your own or create issues. After adding your code, send us a Pull Request.
Please contribute using GitHub Flow. Create a branch, add commits, and open a pull request.
Licensed under MIT
Invite/Test krypton
You can invite krypton to your server here.
or
If you want to just test it, you can join our Support Server here.
Design
Now let's get into the Technical Jargon
Usage
Server needs to have Teacher role and will be able to manipulate classroom.
Helping Yourself
You can view commands and their proper usage using command $help.
Creating a Classroom
Classroom can be initiated using $init command in channel. One thing to remember here is you need a Teacher role to create a classroom and the channel name will be set as classroom name.
Enrolling Students
Once classroom is created, Teachers can enroll students in their classroom.Enrolled students can submit assignments.
Creating an Assignment
Only Teachers can create assignments. To create an assignment, you need to send a assignment file with command:
$create {assignment_no} "{title}" {yyyy-mm-dd} {hh:mm}
Viewing Assignments and Reports
$view - Teacher/Students can see given assignments.
$view enrolled - Teacher/Students can see who are enrolled in the class.
$view {assignment_no} report - Teachers are allowed to get assignment report which includes students who submitted the assignment, their assignment url and the status i.e whether it was submitted before deadline.
$view !{assignment_no} report - Teachers are allowed to see which students have not yet submitted the assignment.
Submitting an Assignment
Enrolled students can submit the assignment.
$submit {assignment_no} <"comments"> - Students can submit the assignments. Students need to upload a file(any type) with the given command to submit the assignment. Comments are not compulsory.
Removing Enrollments/Assignments/Submissions
Teachers can remove enrolled students, created assignments and all the submissions of given assignments.
$remove enrolled @{handle} @{handle}... - Mentioned students will be unenrolled.
$remove submission {assignment_no} {assignment_no}... - Submissions of mentioned assignments will be deleted.
$remove assignment {assignment_no} {assignment_no}... - Mentioned assignments will be deleted.
Deleting Classroom
Teachers can delete a classroom using a simple command $destroy.
So, that's Krypton for you. In the upcoming days, we plan to release more cool features like Google Classroom integration, lecture scheduling and many more while taking feedback from our users. So do checkout the Project and we welcome all criticism.
That was my first blog... Suggestions are welcome π