Moderní full-stack vzdělávací platforma kombinující mikro-učení, gamifikaci a personalizovaný obsah pro efektivní a zábavný způsob učení.
LearnIt je interaktivní vzdělávací platforma, která propojuje krátké lekce, multimediální obsah a gamifikaci. Uživatelé si zvolí téma a systém jim připraví 5minutovou lekci s vysvětlením, videem a kvízem.
- Mikro-lekce - Max 5 minut, ideální pro „scroll & learn"
- Multimediální obsah - Text (Markdown) + YouTube videa + kvízy
- Rozšířená gamifikace - Body, 7 typů odznaků, úrovně, daily streaks, sledování pokroku
- Daily Streaks - Denní série učení s bonus body (až 20 bodů za streak)
- Vyhledávání & Filtry - Full-text search, filtry podle kategorie a obtížnosti, sorting
- Dark Mode - Přepínání mezi světlým a tmavým režimem
- Autentizace - JWT tokens, refresh tokens, bezpečné přihlášení
- RESTful API - Swagger dokumentace, validace, rate limiting
- Moderní frontend - Next.js 15, React 19, TypeScript, Tailwind CSS
- Testování - 74 unit a integration testů (100% pass rate)
LearnIt/
├── backend/ # Node.js/Express API
│ ├── __tests__/ # Jest unit & integration tests (74 tests)
│ ├── config/ # Environment, logger, Swagger
│ ├── data/ # Mock data (topics, lessons, quizzes)
│ ├── db/ # SQLite setup & models
│ ├── middleware/ # Auth, validation, rate limiting, error handling
│ ├── routes/ # API endpoints
│ ├── src/types/ # TypeScript type definitions
│ ├── utils/ # Helper utilities (db-helpers)
│ └── server.js # Main server entry
│
├── frontend/ # Next.js application
│ ├── app/ # App Router pages
│ ├── components/ # React components
│ ├── context/ # Auth context
│ └── lib/ # API client
│
└── docs/ # Documentation (guides, API tests)
# 1. Nainstalujte Docker Desktop
# https://www.docker.com/products/docker-desktop
# 2. Spusťte aplikaci
docker compose up -d
# 3. Aplikace běží na:
# Frontend: http://localhost:3000
# Backend: http://localhost:3001
# API Docs: http://localhost:3001/api-docs
# Zastavení
docker compose downVíce v DOCKER.md
- Node.js 18+ a npm
- Git
# 1. Klonovat repository
git clone https://github.com/Se8o/LearnIt.git
cd LearnIt
# 2. Backend setup
cd backend
npm install
cp .env.example .env # Upravit env variables
npm start # Production mode
# NEBO
npm run dev # Development mode s auto-reload
# 3. Frontend setup (v novém terminálu)
cd frontend
npm install
npm run dev
# 4. Otevřít v prohlížeči
Frontend: http://localhost:3000
Backend API docs: http://localhost:3001/api-docs# Server
PORT=3001
NODE_ENV=development
# Security
JWT_SECRET=your-super-secret-jwt-key-min-32-characters
JWT_REFRESH_SECRET=your-super-secret-refresh-key-min-32-characters
ACCESS_TOKEN_EXPIRY=15m
REFRESH_TOKEN_EXPIRY=7d
# CORS
CORS_ORIGIN=http://localhost:3000
# Logging
LOG_LEVEL=infoPOST /api/auth/register- Registrace nového uživatelePOST /api/auth/login- Přihlášení (access + refresh token)POST /api/auth/refresh- Obnovení access tokenuPOST /api/auth/logout- Odhlášení (revoke token)POST /api/auth/logout-all- Odhlášení ze všech zařízeníGET /api/auth/me- Informace o přihlášeném uživateliPUT /api/auth/profile- Aktualizace profilu
GET /api/topics- Seznam všech tématGET /api/topics/:id- Detail tématuGET /api/topics/category/:category- Témata podle kategorie
GET /api/lessons- Všechny lekceGET /api/lessons/:topicId- Lekce pro téma
GET /api/quiz/:topicId- Kvíz pro témaPOST /api/quiz/submit- Odeslat odpovědi a získat hodnocení
GET /api/user-progress- Pokrok uživatelePOST /api/user-progress/complete-lesson- Označit lekci jako dokončenouPOST /api/user-progress/save-quiz-result- Uložit výsledek kvízuPOST /api/user-progress/reset- Resetovat pokrok
Kompletní API dokumentace: http://localhost:3001/api-docs
- Fyzika - Newtonovy zákony pohybu (Začátečník, 5 min)
- Biologie - Buněčná stavba (Začátečník, 4 min)
- Psychologie - Základy motivace (Začátečník, 5 min)
Každé téma obsahuje:
- Markdown lekci s vysvětlením
- Integrované YouTube video
- Interaktivní kvíz (4 otázky)
- Klíčové body k zapamatování
- Runtime: Node.js + Express.js
- Databáze: SQLite (Better-SQLite3)
- Autentizace: JWT tokens, bcrypt
- Validace: Express-validator
- Dokumentace: Swagger/OpenAPI
- Logging: Winston
- Security: Rate limiting, CORS, helmet
- Testing: Jest, Supertest (74 tests, 100% pass)
- Připraveno pro TypeScript - Types definované, migration guide
- Framework: Next.js 15 (App Router)
- React: 19
- TypeScript: Plně typované
- Styling: Tailwind CSS
- HTTP Client: Axios
- Markdown: React-markdown
- State: Context API + React hooks
- Dokončená lekce: 10 bodů
- Kvíz: 1-10 bodů (podle výsledku)
- Daily Streak Bonus: 2-20 bodů (podle délky série)
- Každých 100 bodů = nová úroveň
- Perfect Score - 100% v kvízu
- Beginner - 3 dokončené lekce
- Bookworm - 20 dokončených lekcí
- Week Warrior - 7 dní v řadě
- Quiz Master - 10 perfektních kvízů
- Perfectionist - 5 perfektních kvízů v řadě
- All Topics - Lekce ze všech kategorií
- Current Streak - Aktuální denní série
- Longest Streak - Nejdelší zaznamenaná série
- Perfect Quiz Streak - Série perfektních kvízů za sebou
- Total Points - Celkový počet bodů
- Level Progress - Pokrok do dalšího levelu
# Spustit všechny testy
cd backend
npm test
# Spustit s coverage
npm run test:coverage
# Spustit watch mode
npm run test:watch
# Jednotlivé test suites
npm test -- __tests__/unit/
npm test -- __tests__/integration/Test Coverage:
- Unit tests: 41/41 (errorHandler, userModel, refreshTokenModel)
- Integration tests: 33/33 (auth API, quiz API)
- Total: 74/74 tests passing
users- Uživatelské účty (email, password_hash, name)refresh_tokens- JWT refresh tokenytopics- Vzdělávací tématalessons- Lekce s obsahemquizzes- Kvízyquiz_questions- Otázky kvízůuser_progress- Dokončené lekcequiz_results- Výsledky kvízůuser_stats- Body, úrovně, odznaky
Připraveno pro migraci na MSSQL/PostgreSQL
- JWT access tokens (15min expiry)
- Refresh tokens (7 days, revokable)
- Bcrypt password hashing (10 rounds)
- Helmet - Security HTTP headers (XSS, clickjacking protection)
- Input sanitization - XSS-clean & NoSQL injection protection
- Rate limiting (anti brute-force)
- Input validation (express-validator)
- Strong password policy - Min 8 chars, uppercase, lowercase, numbers, special chars
- Sensitive data protection - Passwords never returned in error responses
- CORS configured
- Error handling middleware
- SQL injection prevention (prepared statements)
- Automatic token cleanup - Expired refresh tokens removed periodically
- TODO: Migrate to HttpOnly cookies (currently localStorage - XSS risk)
- Quick Start Guide
- Backend API Tests
- Swagger Guide
- Refresh Token Guide
- TypeScript Migration
- MVP Complete
# Backend
cd backend
npm run dev # Development server s nodemon
npm run seed # Seed database with data
npm test # Run all tests
npm run test:watch # Test watch mode
# Frontend
cd frontend
npm run dev # Development server
npm run build # Production build
npm run lint # ESLint check- ESLint configured
- TypeScript ready
- Jest tests with 100% pass rate
- Winston structured logging
- Database helpers (no code duplication)
- Backend API s databází
- Frontend aplikace
- Autentizace
- Gamifikace
- Testing (74/74)
- Security (JWT, rate limiting)
- Admin panel pro správu obsahu
- Vyhledávání témat
- Filtry (kategorie, obtížnost)
- User dashboard s grafy
- Social features (sdílení, komentáře)
- OpenAI/Claude integrace
- AI generování obsahu
- Personalizované doporučení
- Adaptivní obtížnost
- Migrace na PostgreSQL/MSSQL
- Docker containerizace
- CI/CD pipeline
- Monitoring & analytics
- Mobile aplikace (React Native)
- Platební systém (Stripe)
- Studenti - Efektivní příprava na zkoušky
- Profesionálové - Rozšíření znalostí v oboru
- Firmy - Onboarding a školení zaměstnanců
- Lifelong learners - Osobní rozvoj a zábava
- Freemium - Základní témata zdarma
- Premium - Rozšířený obsah, AI funkce
- Business - Firemní licence, vlastní obsah
- Partnership - Spolupráce s tvůrci obsahu
Tento projekt je vytvořen pro vzdělávací účely.
Se8o - GitHub
LearnIt - Učení nikdy nebylo zábavnější!