An interactive, retro terminal–style learning app that teaches practical cybersecurity topics through bite-sized learning modules, quizzes, and progression mechanics. Built with React, TypeScript, Vite, and Tailwind CSS.
Cyber-Sec provides a gamified learning experience for cybersecurity fundamentals and practical topics. Users create a simple handle/pin, complete modules (videos, articles, and quizzes), earn points and badges, and appear on a local leaderboard powered by browser storage.
Key highlights:
- Retro terminal UI and audio cues for a nostalgic experience 🔊
- Rich library of learning modules covering phishing, authentication, malware, networking, and more ✅
- Quizzes with scoring, progress tracking, and leveling mechanics 🎯
- Leaderboard stored in
localStoragefor quick local competition 🏆
- Terminal-styled UI with loading animation and header/footer
- Login / session persisted in
localStorage(cyberSecUser) - Learning modules with videos, reading links, and quizzes
- Scoring system and per-module max score calculation
- Local leaderboard (
leaderboard) sorted bytotalScore - Sound feedback using Web Audio API (beeps, success, error)
- React + TypeScript
- Vite (dev server and build)
- Tailwind CSS for styling
- Lucide icons
Prerequisites:
- Node.js (recommended v18+)
- npm (or yarn)
Install and run locally:
# install deps
npm install
# start dev server
npm run dev
# build for production
npm run build
# preview production build
npm run preview
# lint the codebase
npm run lintOpen http://localhost:5173 (or the URL provided by Vite) in your browser.
src/App.tsx— Application root and view routingcomponents/— UI components (Dashboard, LearningModule, Leaderboard, LoginScreen, etc.)data/modules.ts— All learning modules and quizzesutils/sounds.ts— Web Audio helpers for UI feedbacktypes.ts— Shared TypeScript interfaces
- To add a new module, update
src/data/modules.tswith a newLearningModuleDataentry (id, title, difficulty, article links, quiz questions, andmaxScore). - Progress and leaderboard data are stored in
localStorage. Keys used:cyberSecUser— current user/sessionleaderboard— array of users for the leaderboard
- Sound utilities are in
src/utils/sounds.tsand use the Web Audio API. There are simple helpers:playBeep,playSuccess,playError.
Contributions are welcome! Suggested workflow:
- Fork the repo
- Create a feature branch
- Open a PR with a clear description of changes
Please run npm run lint before opening a PR.
If you plan to add a new learning module, include: videos (if available), authoritative article links, and at least a 3–5 question quiz with points and explanation fields.
This project references standard cybersecurity resources and guides such as OWASP, NIST, and SANS for content accuracy and further reading.
This repository does not include a license file yet. If you'd like to open-source it, add a LICENSE (e.g., MIT) file to clarify usage terms.
If you'd like, I can also add a short contributing guide, example module template, or a LICENSE file (MIT) — tell me which and I'll add it.