As I'm sure many other programmers would agree, writing coding tests on paper is a pain. Why can't we just bring our laptops in and write runnable code? That's why my team decided to implement a system for professors & students to connect to exams online.
What it does
Professors and users can register for accounts on our web app, preferably with their school issued emails. The professor can then create exams, which are stored in a database along with the questions. The professor then has to add the individual students to the exam, and they will then have access to write that exam using that email associated with their account.
How I built it
We build our entire app on Google's Firebase service, using React for the front end. We used services such as Authentication & Live Databases for our back end.
Challenges I ran into
No one in my team had any experience with either React or Firebase, so this was a learning experience for all of us.
Alongside this learning experience came a lot of problems, especially with the Firebase Database. We ran into troubles with the database API and changing/setting information in the right space. We also spent a long time designing our database to be both organized & easy for us to work with.
We ran into a lot of trouble with our React components and state management, as we thought it would be too complicated to learn and use Redux. Instead we used our own state management system, using the
props object to store an instance of firebase and the user. This allowed for us to not have to initialize a version of Firebase on every component which used it.
We also had a team member drop out last minute, so we spent some time looking for a teammate so we could have 4.
Accomplishments that I'm proud of
We're very happy with the finished product of our service, as it was a last minute idea for us and a lot of it was planning. stayed up for a long time :)
What I learned
- firebase API
- web application routing with react
What's next for Exam Goat
We plan on adding live coding to the web app, so professors can see what all their students are doing at all times. We also want to add a Facebook Messenger widget, allowing students to send messages to a bot to let the professor know they're in need of assistance. A command line would also be nice, allowing students to compile or run their code while going along, this way they can ensure their code works and professors can provide harder questions during the exams to test their abilities.