What inspired us the most was the experiences and observations we had made as our school moved all our classes online. There is SO much technology out there and it can be hard on those who may not be technically inclined. With that being said, we wanted to create something that is simple to use and makes online learning a better experience for everyone.
What it does
AcademeSpace creates a fully automated classroom setting through a Discord Bot and our web interface. It allows professors to setup a discord server within seconds of signing up by running one simple command. Once they have a classroom, they can invite students through a class code.
Communication can happen in realtime using discord through text and voice. The web interface acts as a portal for our tools provided for professors and teaching assistants. Some key features are automated groups, facilitated office hours through automated queues, and much more.
How we built it
- Discord Bot: Discord.js + NodeJS (for some endpoints)
- Frontend: React
- Backend: GoLang, Couchbase, GraphQL
Challenges we ran into
One challenge we ran into was with using the Discord.js library for our Discord Bot. We tried using the newest version, but the documentation was pretty bare and hardly readable, so we had to downgrade it a couple of times to make our lives much easier, but still function the same.
Another challenge we faced along the way was developing multiple different API endpoints to interact with the frontend, and the discord bot at the same time. We needed to have harmony between our three platforms, backend with Golang+GraphQL, Frontend with React, and Discord bot with Discord.js.
It was also my (Sullivan) first time working with Couchbase; I wanted to try to push my boundaries and find a platform that fits as closely as possible with our use case. Couchbase ended up being almost the perfect database for us, which was great! But it proved challenging to learn how to work with their system in building an application in three weeks' time. Luckily both of us think that hard work paid off.
Accomplishments that we are proud of
Our biggest accomplishment was seeing it all come together. We were happy to have 4 servers up and running, in a somewhat micro-servicey fashion. JWT Tokens are also tough, so it was really awesome to see our authentication come together really nicely. We also didn't use any design library like bootstrap! That was a personal goal for me (Brandon). I (Sullivan) was so excited to see the API come together and the interaction with the frontend and Discord bot working smoothly. It took some sleepless nights and too much coffee but seeing everything working together for the first time was super worth all of it!!
What we learned
For the backend, learning how to do JWT tokens for authentication took some time, especially in GoLang. Creating your own user authentication platform is definitely harder than it would seem, and we have lots of goals around improving that system moving forward! For example, adding 2FA with Twilio and Authy. For the Frontend, the biggest thing was not using any sort of design library. So, learning to design things from scratch really tested what we knew.
What's next for AcademeSpace
The next step for us is adding more features! We want this to be a really useful tool which makes online learning very fluid and easy to setup. We would also like to add additional support for things like Slack and maybe even our own in-house communication platform. Lastly, we want to get this in the hands of teachers and see how it does! Long term goals for the project will be a continued focus on security and improving our authentication platform, and creating new ways for educators to interact with their students. This platform and idea were born out of a pandemic but we hope to serve educators and students participating in distance or in-person learning far beyond our current world situation.