Inspiration

We noticed how much time our teachers spend on creating tests to evaluate us, and other students, so we decided to make it easier on them by creating a simple interface which virtually eliminates the hours spent on the creation the quiz as well as the hours spent grading the quiz.

What it does

TestIt makes the process of creating, managing, and grading quizzes for educators easy.

When users first visit the platform, they’re prompted to sign up or log in using their email and password, along with profile details such as name, image url, and pronouns. After signing in, they're taken to a clean dashboard where they can either create a classroom or join an existing one using a class code.

Teachers can generate quizzes directly within their classrooms using our integrated local model, which assists in creating multiple-choice questions. Students, on the other hand, can take assigned quizzes and receive instant scores along with the problems they got wrong showing.

How we built it

We built TestIt using a modern, efficient tech stack focused on speed, usability, and AI-powered functionality.

On the backend, we used FastAPI to create a lightweight, high-performance API for authentication, classroom management, quiz creation, and grading. For AI-generated questions, we integrated Ollama, allowing us to run a local large language model that produces multiple-choice based on the file that the teacher uploaded.

The frontend was built with TailwindCSS for fast, utility-based styling and shadcn/ui for clean, accessible, and consistent UI components. This combination helped us design an interface that feels modern and intuitive.

To manage data and real-time interactions, we used Aeternity, providing a reliable foundation for user accounts, classroom codes, and quiz submissions.

We used Supabase for our main database, authentication, and real-time classroom syncing—making it easy for users to join classrooms, store quiz data, and keep everything up to date. Aeternity supported additional backend logic and data flow within the system.

Together, these tools allowed us to build a seamless experience where teachers can generate quizzes effortlessly and students can take them with instant grading and feedback.

Challenges we ran into

Throughout the development of TestIt, we encountered several technical and design challenges that pushed us to adapt and refine our approach.

One major challenge was integrating the Ollama local model with our FastAPI backend. Ensuring reliable model responses, managing prompt formatting, and handling performance constraints required careful debugging and optimization. The prompt engineering necessary for reliable functionality was astonishing.

We also faced hurdles connecting Supabase with our role-based authentication system. Making sure teachers and students had the correct permissions—while keeping data secure and synced across classrooms—took significant iteration. As well as the relations within supabase which caused major bugs throughout the development of TestIt.

On the frontend, aligning TailwindCSS with shadcn/ui components occasionally caused styling conflicts and required us to adjust our design system to maintain consistency. We also had to fine-tune the UI to make quiz creation and quiz-taking feel smooth and intuitive.

Finally, coordinating real-time interactions and data flow across FastAPI, Supabase, and Aeternity proved to be more complex than expected, especially when ensuring quizzes updated correctly for both teachers and students.

Despite these challenges, each hurdle helped us improve the stability, usability, and overall quality of TestIt.

Accomplishments that we're proud of

We’re proud of how much we accomplished while building TestIt, especially given the complexity of integrating AI with a full classroom management system.

One major achievement was successfully incorporating the Ollama local model into our workflow. Being able to generate high-quality multiple-choice and open-ended questions directly from teacher prompts felt like a breakthrough and significantly enhanced the platform’s usefulness.

We’re also proud of building a clean, intuitive UI using TailwindCSS and shadcn/ui. Creating a polished interface that feels natural for both teachers and students was a key goal—and we were able to deliver it.

Setting up Supabase to handle authentication, classroom syncing, and real-time data storage was another milestone. We managed to build a stable system where users can join classrooms, create quizzes, and see updates instantly.

Finally, tying all these systems together through a fast and reliable FastAPI backend—while using Aeternity to support additional logic—was a major technical accomplishment. The end result is a platform that works smoothly from end to end, despite the number of moving parts.

What we learned

Building TestIt taught us a lot about both the technical and human sides of creating a functional, user-friendly platform.

Integrating Ollama with our FastAPI backend helped us deepen our understanding of local LLMs—specifically how to structure prompts, handle response latency, and optimize model interactions. We learned how to balance AI capabilities with real-world constraints like speed and reliability.

Working with Supabase strengthened our knowledge of modern backend-as-a-service tools. We gained experience in authentication flows, real-time data syncing, role-based permissions, and database schema design—all essential for a classroom-focused app.

On the frontend, using TailwindCSS and shadcn/ui taught us how to build consistent, accessible interfaces quickly. We learned how to manage component styling, handle UI state cleanly, and design user flows that feel intuitive for both teachers and students.

Finally, coordinating all these technologies—FastAPI, Supabase, Aeternity, and our AI pipeline—taught us the importance of clear architecture, modular design, and teamwork. We came away with a much deeper appreciation for how complex systems communicate behind the scenes.

What's next for TestIt

Looking ahead, we have several improvements planned to make TestIt even more secure, reliable, and user-friendly.

One of our main priorities is strengthening authentication. We plan to introduce email verification to ensure users provide valid email addresses and enhance overall account security. Along with this, we aim to refine our onboarding flow to make signing up, joining classrooms, and navigating the platform even smoother.

We’re also planning to improve our quiz-generation pipeline by expanding prompt options, optimizing model response times, and giving teachers more control over question difficulty and formatting.

On the student side, we want to enhance the quiz-taking experience with better accessibility, clearer feedback, and more detailed explanations for incorrect answers.

Lastly, we hope to expand classroom features—such as analytics for teachers, improved user roles, and more collaboration tools—to make TestIt a more powerful all-in-one platform for learning and assessment.

Built With

  • aeternity
  • fastapi
  • python
  • shadecn
  • supabase
  • tailwind
Share this project:

Updates