{"id":51479382,"url":"https://github.com/onur-tellioglu/fauvault","last_synced_at":"2026-07-07T00:30:48.562Z","repository":{"id":362675453,"uuid":"1213992521","full_name":"onur-tellioglu/fauvault","owner":"onur-tellioglu","description":"Open-source exam-prep platform for university courses: lecture summaries, quizzes, flashcards, and a focused exam mode. Add your own course.","archived":false,"fork":false,"pushed_at":"2026-06-29T16:27:52.000Z","size":1903,"stargazers_count":17,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-29T17:04:16.991Z","etag":null,"topics":["edtech","education","exam-prep","flashcards","learning","nextjs","open-source","quiz","react","spaced-repetition","students","study-app","typescript","university"],"latest_commit_sha":null,"homepage":"https://fauvault.space","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/onur-tellioglu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"onur-tellioglu"}},"created_at":"2026-04-18T01:48:26.000Z","updated_at":"2026-06-29T16:20:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"573ce925-6ac7-4611-8092-935cd5784e2e","html_url":"https://github.com/onur-tellioglu/fauvault","commit_stats":null,"previous_names":["onur-tellioglu/fauvault"],"tags_count":48,"template":false,"template_full_name":null,"purl":"pkg:github/onur-tellioglu/fauvault","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onur-tellioglu%2Ffauvault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onur-tellioglu%2Ffauvault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onur-tellioglu%2Ffauvault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onur-tellioglu%2Ffauvault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onur-tellioglu","download_url":"https://codeload.github.com/onur-tellioglu/fauvault/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onur-tellioglu%2Ffauvault/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35210429,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["edtech","education","exam-prep","flashcards","learning","nextjs","open-source","quiz","react","spaced-repetition","students","study-app","typescript","university"],"created_at":"2026-07-07T00:30:48.462Z","updated_at":"2026-07-07T00:30:48.550Z","avatar_url":"https://github.com/onur-tellioglu.png","language":"TypeScript","funding_links":["https://github.com/sponsors/onur-tellioglu"],"categories":[],"sub_categories":[],"readme":"# fauvault\n\nAn open-source study and exam-prep web app for university courses. Each course\nbundles lecture summaries, interactive quizzes, flashcards, an exam-prep mode,\nand a community leaderboard — so studying for finals is active, not passive.\n\nLive: **[fauvault.space](https://fauvault.space)**\n\n\u003e Built originally for [FAU](https://www.fau.eu/) courses, but the platform is\n\u003e course-agnostic — anyone can add their own course (see\n\u003e [Contributing](#contributing)).\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://fauvault.space\"\u003e\n    \u003cimg src=\".github/screenshots/landing.png\" alt=\"FAUVault — choose a course\" width=\"820\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/screenshots/quiz.png\" alt=\"Practice quiz with multiple-correct questions and explanations\" width=\"49%\"\u003e\n  \u0026nbsp;\n  \u003cimg src=\".github/screenshots/lecture.png\" alt=\"Lecture concept summary with key facts to memorize\" width=\"49%\"\u003e\n\u003c/p\u003e\n\n## Features\n\n- **Lectures** — readable, Markdown-rendered concept summaries per lecture, with\n  LaTeX math support (KaTeX) for inline `$…$` and block `$$…$$` formulas.\n- **Quizzes** — single- and multiple-correct questions with explanations and\n  LaTeX-rendered math.\n- **Flashcards** — spaced front/back cards with progress tracking.\n- **Exam-prep mode** — focused review built from the highest-yield material.\n- **Leaderboard** — per-course ranking to keep a study group motivated.\n- **Accounts** — username/password auth with secure sessions; guest access for\n  read-only browsing of most pages.\n\n## Tech stack\n\n- **Framework:** [Next.js 15](https://nextjs.org/) (App Router, React 19, Turbopack)\n- **Database:** [Neon](https://neon.tech/) serverless Postgres\n- **Auth:** [`jose`](https://github.com/panva/jose) JWT sessions + [`bcryptjs`](https://github.com/dcodeIO/bcrypt.js)\n- **Rate limiting:** [Upstash](https://upstash.com/) Redis\n- **UI:** Tailwind CSS v4, [shadcn/ui](https://ui.shadcn.com/) + Radix, `lucide-react`\n- **Testing:** [Vitest](https://vitest.dev/)\n- **Hosting:** [Vercel](https://vercel.com/)\n\n## Getting started\n\n### Prerequisites\n\n- Node.js 24+ (see [`.nvmrc`](.nvmrc) — `nvm use` to match)\n- A [Neon](https://neon.tech/) Postgres database (free tier works)\n- Optionally, an [Upstash](https://upstash.com/) Redis database for rate limiting\n\n### Setup\n\n```bash\n# 1. Clone and install\ngit clone https://github.com/onur-tellioglu/fauvault.git\ncd fauvault\nnpm install\n\n# 2. Configure environment\ncp .env.example .env.local\n#   then edit .env.local with your DATABASE_URL, JWT_SECRET, and Upstash creds\n\n# 3. Apply database migrations (run each file against your database, in order)\n#    e.g. with psql:\npsql \"$DATABASE_URL\" -f src/lib/schema.sql\nfor f in migrations/0*.sql; do psql \"$DATABASE_URL\" -f \"$f\"; done\n\n# 4. Run the dev server\nnpm run dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000).\n\n### Environment variables\n\nSee [`.env.example`](.env.example) for the full list. Required: `DATABASE_URL`,\n`JWT_SECRET`. Recommended for production: `UPSTASH_REDIS_REST_URL`,\n`UPSTASH_REDIS_REST_TOKEN`.\n\n## Scripts\n\n| Command | Description |\n| --- | --- |\n| `npm run dev` | Start the dev server (Turbopack) |\n| `npm run build` | Production build |\n| `npm run start` | Serve the production build |\n| `npm run lint` | Run ESLint |\n| `npx vitest` | Run the test suite |\n\n## Project structure\n\n```\nsrc/\n  app/            Next.js App Router (routes, API handlers)\n    [course]/     Per-course pages: lecture, study, quiz, flashcard, exam-prep, leaderboard\n    api/          Route handlers: auth, progress, leaderboard, tips, ...\n  components/     UI components (layout, quiz, shadcn)\n  lib/\n    courses.ts    Course registry — register new courses here\n    content-*.ts  Per-course content (lectures, questions, flashcards)\n    types.ts      Content/Lecture/Question/Flashcard types\n    auth.ts       Session creation/verification\n    db.ts         Neon client\n    ratelimit.ts  Upstash rate limiter\nmigrations/       SQL migrations (apply in order)\n```\n\n## Contributing\n\nContributions are welcome — bug fixes, features, and **new courses**. Adding a\ncourse is the most impactful way to help: see\n[CONTRIBUTING.md](CONTRIBUTING.md) for the content schema and a step-by-step\nguide.\n\n**Please note:** course content must be your own original study material.\nNever commit copyrighted source lecture slides or PDFs to this repository.\n\n## License\n\n- **Source code:** [AGPL-3.0](LICENSE) — copyleft; distributed or network-hosted\n  forks must release their full source under the same license.\n- **Course content** (`src/lib/content-*.ts`): [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)\n\nSee [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonur-tellioglu%2Ffauvault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonur-tellioglu%2Ffauvault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonur-tellioglu%2Ffauvault/lists"}