Inspiration

I still remember it. Four years ago, when I took my first test in Introduction to Java. The shock spread across my face as I saw the teacher pull out a stack of papers--

But seriously, why do they still exist? Of all classes, programming classes should be the ones most integrated online. We built this platform for the next generation of developers, in hopes that they never need to write 'public static void main(String[] args)' on paper ever again.

What it does

This is a classroom platform similar to that of Google Classroom. Users are able to create classes and let students join those classes via a join code.

Inside a classroom, teachers are able to create assignments for students. Are designed to be python functions with input + output. Teachers will have to write markdown for the problem description, then write in our web-python editor for the problem solution. Finally they must create some test cases that the code should be tested upon. The teacher is able to specify which of the test cases the student will be able to view. There is also a TLE feature, where if a single test case takes more than 2 seconds to run it will return a Time Limit Exceeded error. This is also very boring so we added a feature to let ChatGPT generate test cases for you, but it is very in development.

Students will be able to access assignments individually through a similar menu to the teacher's. Inside their individual assignments, they can compile and run their own code against the teacher's test cases. They can submit their results to the teacher by clicking a button.

For each assignment, the teacher is able to view each students' code & results.

How we built it

Next.js + Tailwind + Firebase baseline. To run python in the browser we used Pyodide, a python to Web Assembly javascript compiler.

'thank god react lifecycle exists i can't imagine working with vanilla js' - joshua 2023

Challenges we ran into

  • Typescript being strict with types >:(
  • Half of us have never built a website in our lives. Popped Howard's webdev cherry.
  • Compiling python in the browser (sending it to a server requires us to either face many security vulnerabilities or to run it inside a container which costs money)
  • Sleep deprivation
  • Github Merge Conflicts (omg why did package-lock.json break)
  • Ryan went to Vegas for 3 days so he couldn't do much.
  • We were in shambles

Accomplishments that we're proud of

  • FINISHING THE PROJECT WOOOO
  • Seriously it was pretty good especially since we have a combined average of 1 week of React.js experience.
  • Online python compiler & running against test cases.
  • Dynamic class creation system, being able to create an elaborate database with Classes, Assignments, and Submissions.

What we learned

  • How to use the React Lifecycle, interaction between React Components, etc.
  • Using Typescript (its surprisingly useful in a large complicated project)
  • Next.js basics.
  • TailwindCSS
  • Github Branch management for working with teams on projects.
  • Firebase Firestore & Authentication
  • Pyodide kinda.
  • Fixing errors by ignoring the problem.

What's next for ByTech

Compilers in more languages maybe? More OpenAI integration.

Built With

Share this project:

Updates