ahpandClaude Sonnet 4.6 602d3f2f4d feat: remove glassmorphism from notification toast; improve video player UX
Task 4 — Event Registration Confirmation (glassmorphism removal):
- Replace translucent gradient + backdrop-blur-md toast in use-realtime.tsx
  with a solid bg-card container, full-opacity border, and a colored
  left accent bar — high contrast, readable in all themes, no blur

Task 5 — Video player UX (within anti-cheat constraints):
- Keyboard shortcuts: Space (play/pause), M (mute), ← (seek back 10s),
  F (fullscreen) — active globally, disabled when an input is focused
- Fullscreen button added to the control bar (F key shortcut)
- Volume slider (0–100%) replaces mute-only toggle; volume is persisted
  to localStorage across sessions under key `pargar:volume`
- Buffer range visualized as a translucent white bar behind the playback
  progress track so users see how much is buffered
- Exponential backoff auto-retry on video error: 1s, 2s, 4s … 30s cap;
  retry count shown in error message; manual retry clears the timer
- Speed controls (0.75x–2x) are intentionally absent: the verified-watch
  anti-cheat locks playbackRate=1; changing it would break the heartbeat
  accumulation that gates quiz unlock and certification
- HLS/ABR requires backend FFmpeg transcoding; the player is structured
  so swapping src=mp4 → src=.m3u8 + hls.js is a one-file change when
  the backend pipeline is ready

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-18 10:40:13 +03:30

Pargar mark

Pargar

A bootcamp learning path with no shortcuts.
Verified watch, quizzes with hearts, a skill tree, and a mentor. The product UI is Persian (پرگار).

release AGPL-3.0

Pargar is a gated LMS for a bootcamp. A student watches the lesson for real, passes that lesson's quiz, and only then opens the next branch of the skill tree. Alongside the path: mentor chat, events, a weekly league, a monthly challenge, and a certificate.

Public registration sits behind a phone whitelist. Invite links work on their own. Students cannot recover a password themselves; an admin sets a new one from that person's profile.

The path

Step What happens
Verified watch Watch time is checked with periodic heartbeats. Skipping ahead does not finish the lesson.
Quiz with hearts Each wrong answer spends a heart. An empty heart meter locks the account until staff reviews it.
Skill tree The next branch opens only after its parent is passed. Staff unlock the following lesson.
Community Mentor chat, events, a weekly league that resets on Monday, and a monthly challenge.
Certificate An unlisted digital link. A physical copy, when enabled, is offline payment only.

Three roles: a student walks the path, a mentor sees curriculum and student learning, and an admin also manages users, invites, site settings, and physical certificate orders.

Product detail: docs/product.md

Run it locally

Docker is required. Copy .env.example and replace every replace-with-… value. The admin password is ADMIN_PASSWORD. The default username is admin.

cp .env.example .env
./scripts/compose-dev.sh up -d --build

The app is at https://localhost. Traefik uses its own certificate, so the browser shows one warning. API health:

curl -k https://localhost/api/health

k3s and production: docs/deployment.md

Stack

Layer Technology
API Go, Postgres, Redis, S3/RustFS, WebSocket
UI Next.js 15, React, Tailwind
Edge Traefik, on Compose and Helm

The browser talks to one origin. Traefik splits the UI from /api. Detail: docs/architecture.md

Repository

backend/     API, migrations, seed data
frontend/    Next.js UI
deploy/      Compose, Traefik, Helm chart
scripts/     Local run, k3s, backup
docs/        Engineering docs
Doc Read it for
Product Student path, admin, invites, certificates
Architecture Data flow and service boundaries
Development Local workflow and tests
Deployment Compose, Helm, production
Security Sessions, secrets, rate limits, uploads
Operations Backup, metrics, troubleshooting
API Route contract
Configuration Environment variables

Index: docs/README.md

License

Released under AGPL-3.0.

S
Description
Bootcamp learning path with no shortcuts
https://pargar.panahifar.ir Readme AGPL-3.0
4 MiB
Languages
TypeScript 58.1%
Go 40.3%
CSS 1%
Shell 0.2%
Go Template 0.2%
Other 0.1%