matej-kotrba / effio

Web application for creating online tests

Home Page:https://effio.vercel.app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Effio

Lines of Code

“25 000+ lines of code is a big project” - @ThePrimeagen

Table of Contents

About

Effio is an online tool for creating tests and quizes. Apart from only creating, Effio is designed to work as whole platform for taking tests, sharing them in groups and being able to export and import them to different formats with addition of few unique Effio question types. Whole project is being developed by Matěj Kotrba.

Features

  • Test creator
    • Question Types - Pick One, True/False, Connect, Write, Fill, Geography
    • Grades - custom marking
    • Comments - question responses
    • Import and export of GIFT format
    • Programming test
    • Test templates
  • Test taking
    • Being able to take tests and see results
    • Randomly ordered answers and questions
    • Question navigation, showing marks and points earned
    • Test overview page
  • Community place
    • Showing tests
      • Infinite scrolling functionality
      • Depending on release date and rating
      • Showing relevant tests which were released recently
      • Showing user specific relevant tests
  • Test History
  • Groups
    • Creating of groups
    • Inviting to groups
    • Sharing tests in group
    • Graphs of tests taken by participants of group and invidiual display of users results
    • Group channel chat
    • Editing, deleting groups and its channels
    • Showing relevant information and overall better design
  • Caching and security
    • Redis rate limitting
    • Caching of the frequently used endpoints
  • Adding AI implementation

Goals

  • Develop web application for creating, exporting and importing online tests in GIFT format
  • Eneble users to take tests and view results
  • Create community place where you can publish your own tests and browse tests of others
  • Make fully scalable, typesafe and performant application

Consultants

Techstack

About techstack

  • This techstack is inspired by Theo's T3 stack with replacement of Next with SvelteKit, main purpose of this techstack is to create typesafe serverless application using cloud based providers without need of self hosted (maintained) server

“The name is Sveltegen” - @ThePrimeagen

Used technologies:

Frontend
  • Svelte
    • Svelte French Toast
    • Shadcn Svelte
  • Tailwind
    • Daisy UI
    • tailwind-merge
  • Chart.js
  • GSAP
  • Other
    • Iconify
    • Leaflet
    • monaco-editor
    • SandboxJS
    • gift-pegjs
Backend
  • SvelteKit
    • Superforms
  • tRPC
    • trpc-sveltekit
  • Prisma
  • Auth
    • Auth.js (Oauth - Google, Github)
  • NodeJS
Database and providers
  • Supabase - PostgreSQL, connected via Prisma
  • Vercel - application hosting, serverless function hosting (sort of), CDN distribution,
  • Cloudinary - image bucket
  • Pusher - takes care of web sockets needs
  • Upstash Redis - caching and rate limitting
Both
  • TypeScript
    • ts-reset
  • Zod
  • Bundler - Vite
  • Package manager - PNPM

Timeline

  • January -> April - Learning stack and testing it separatly
  • April -> May - Designing and building frontend for Effio
  • May -> June - Building forentend, creating type definitions, routers, auth, DB and Prisma connection as well as building the test creation functionality
  • June -> July - Displaying tests, taking them and being able to visit previously taken ones, implemented drag and drop input creation in test creator
  • August -> October - Creating more input types, darkmode, refactoring and leveling up quality of life in app
  • November -> December - Programming test, many bug fixes, refactoring, comments and making quality of live features
  • December -> January - bug fixes, polishing app and writing documentation
  • January -> Now - better group options and implementation, optimizations, refactoring, polishing and bug fixing

Sources

Try it yourself

First thing you need to get started is to clone this repo and run

pnpm i

then there is file called .env-sample, rename it to .env and fill all the enviromental variables with your own keys.

Also to push database schema to your own DB use npx prisma migrate dev

You are good to go! 🥳🥳

About

Web application for creating online tests

https://effio.vercel.app

License:GNU Affero General Public License v3.0


Languages

Language:Svelte 76.7%Language:TypeScript 22.0%Language:JavaScript 0.8%Language:CSS 0.3%Language:HTML 0.2%