“25 000+ lines of code is a big project” - @ThePrimeagen
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.
- 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
- Showing 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
- 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
- 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
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
- 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
- Youtube
- Docs
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! 🥳🥳