Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
8a8ed7b
(SP: 1) [Security] Enforce origin posture for shop APIs (admin/checko…
liudmylasovetovs Jan 18, 2026
0d6a89b
Merge branch 'develop' of https://github.com/DevLoversTeam/devlovers.…
liudmylasovetovs Jan 18, 2026
52a7d03
(SP: 1) [DB] Align stripe_events.order_id FK CASCADE across schema an…
liudmylasovetovs Jan 19, 2026
aa5654b
feat(i18n): localize quiz anti-cheat, header and blog filters (#175)
TiZorii Jan 21, 2026
d18554b
feat(Blog): Adding last published post to the blog and category page,…
KomrakovaAnna Jan 21, 2026
0cf755c
feat(Blog): merge develop
KomrakovaAnna Jan 21, 2026
fed94e4
Merge pull request #176 from DevLoversTeam/sanity
ViktorSvertoka Jan 21, 2026
a0c39e0
Update leaderboard-style
AlinaRyabova Jan 21, 2026
7f1b350
Merge branch 'develop' of https://github.com/DevLoversTeam/devlovers.…
AlinaRyabova Jan 21, 2026
9b494a8
Update leaderboard-style
AlinaRyabova Jan 21, 2026
9222998
Merge pull request #177 from DevLoversTeam/feature/leaderboard-style
ViktorSvertoka Jan 21, 2026
f6845d7
teat(Blog): fix of hover on author, fix of the line
KomrakovaAnna Jan 21, 2026
1a50573
Merge branch 'develop' into sanity
KomrakovaAnna Jan 21, 2026
1df5a40
Merge pull request #178 from DevLoversTeam/sanity
ViktorSvertoka Jan 21, 2026
8c11bc2
(SP: 3) [Observability] Extend structured logging + correlation IDs a…
liudmylasovetovs Jan 22, 2026
9c4376a
fix conflicts with deleted files and project structure file
liudmylasovetovs Jan 22, 2026
bd8aa59
(SP: 1) [Admin][Security] Add safe product delete (PRODUCT_IN_USE) + …
liudmylasovetovs Jan 22, 2026
5447700
fix: npm installing
liudmylasovetovs Jan 22, 2026
de6793a
(SP: 1) [Admin] Align products list in use checks with DB column name…
liudmylasovetovs Jan 22, 2026
e6480db
Merge pull request #179 from DevLoversTeam/lso/feat/shop
ViktorSvertoka Jan 22, 2026
882393f
fix:Update leaderboard: fixed background
AlinaRyabova Jan 22, 2026
7618c2c
fix: remove email from CurrentUser type to prevent PII exposure
AlinaRyabova Jan 22, 2026
5951e3a
Merge pull request #180 from DevLoversTeam/feature/leaderboard-style
ViktorSvertoka Jan 22, 2026
cfc14d0
refactor: align leaderboard UI with brand style (fixed bg, css vars, …
AlinaRyabova Jan 22, 2026
3f22192
(SP: 1) [Frontend] About Us Page. Fixed game, topics, mobile layout
yevheniidatsenko Jan 22, 2026
654e70c
Merge pull request #182 from DevLoversTeam/feature/leaderboard-style
ViktorSvertoka Jan 22, 2026
f5977f1
Merge pull request #183 from DevLoversTeam/yd/feat/about/page-improve…
ViktorSvertoka Jan 22, 2026
c485e9c
refactor: update accent color hover effects to Footer
YNazymko12 Jan 22, 2026
45e6ff7
Merge branch 'develop' into yn/refactor/footer-theme-styles
YNazymko12 Jan 22, 2026
2193852
refactor: improve accessibility
YNazymko12 Jan 22, 2026
96c5634
Merge pull request #185 from DevLoversTeam/yn/refactor/footer-theme-s…
ViktorSvertoka Jan 22, 2026
ee4363c
(SP: 1) [Shop] Fix Stripe checkout success redirect (remove duplicate…
liudmylasovetovs Jan 23, 2026
9e4e262
fix:leaderboard update leaderboard-style (#187)
AlinaRyabova Jan 23, 2026
6088e69
fix:leaderboard update leaderboard-style on mobile (#188)
AlinaRyabova Jan 23, 2026
272951e
(SP: 1) [Frontend] Changing hero headline on shop main page (#190)
liudmylasovetovs Jan 23, 2026
ed9b560
(SP: 1) [Frontend] Fix styles shop home page, buttons (#191)
liudmylasovetovs Jan 24, 2026
82efdb1
Feature/leaderboard style update (#192)
AlinaRyabova Jan 24, 2026
0da8434
(SP: 7) [UI] Quiz UI polish: tabs styling, category accents, color sc…
LesiaUKR Jan 24, 2026
806ec7a
Sanity (#196)
KomrakovaAnna Jan 24, 2026
a6f6bef
(SP: 3) [AI] Add AI word helper with Groq integration (#200)
TiZorii Jan 25, 2026
09131de
Sanity (#202)
KomrakovaAnna Jan 25, 2026
dc4d582
Sanity (#203)
KomrakovaAnna Jan 25, 2026
56f7430
(SP: 3) [Frontend] Refactor Header UI and navigation states (#201)
YNazymko12 Jan 25, 2026
6046e26
(SP: 3) [Testing] Vitest config + unit + integration tests for quiz m…
LesiaUKR Jan 25, 2026
a4c3835
Feature/leaderboard style update (#206)
AlinaRyabova Jan 25, 2026
66ec01e
test(q&a): add comprehensive qa tests and coverage setup (#208)
ViktorSvertoka Jan 25, 2026
c94beb3
(SP: 1) [Frontend] Remove Contacts References (#211)
ViktorSvertoka Jan 25, 2026
5f1d933
Sanity (#209)
KomrakovaAnna Jan 25, 2026
113a436
chore(release): update changelog for v0.5.0
ViktorSvertoka Jan 25, 2026
d93afa7
chore(release): v0.5.0
ViktorSvertoka Jan 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ yarn-error.log*

# Coverage directory
/coverage
/coverage-quiz

# Dotenv files
*.local
Expand Down Expand Up @@ -64,7 +65,7 @@ next-env.d.ts
# Documentation (development only)
.claude/
CLAUDE.md
frontend/docs/
frontend/_dev-notes/
frontend/.env.bak


Expand Down
50 changes: 50 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,3 +159,53 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
- Stabilized shop checkout, refund, inventory, and webhook flows
- Improved Neon performance and reduced CU-hours usage
- Cleaned up redundant files, comments, and legacy code

## [0.5.0] - 2026-01-26

### Added

- AI-powered Word Helper for Q&A:
- Text selection with floating “Explain” button
- Multilingual explanations (uk / en / pl)
- Draggable modal with caching and rate limiting
- Extensive automated testing:
- 90%+ coverage for Quiz core logic (unit + integration)
- Full Q&A component, hook, and API test coverage
- SEO & content enhancements for Blog:
- Breadcrumb navigation (posts & categories)
- Schema.org JSON-LD (Article, BreadcrumbList)
- Improved metadata (descriptions, dates, authors)
- Improved navigation & UX:
- Refactored responsive header with clear active states
- GitHub stars indicator in header
- Enhanced mobile menu with scroll locking
- Visual & UX polish across platform:
- Unified category accent colors across Quiz & Q&A
- Refined Leaderboard layout and mobile responsiveness
- Updated About page interactions and game mechanics
- Infrastructure & environment support:
- GROQ API integration for AI features
- New environment variable support and documentation

### Changed

- Quiz UI unified with Q&A design system:
- Shared CategoryTabButton component
- Category-based accent colors across full quiz flow
- Traffic-light countdown timer (green / yellow / red)
- Blog experience refined:
- Improved search relevance and filtering UX
- Better author navigation and category presentation
- Header, footer, and navigation styles aligned to brand tokens
- Shop UI polish:
- Button styles and hero messaging updated
- Stripe checkout success redirect fixed
- Removed deprecated Contacts page and all references

### Fixed

- Stabilized Leaderboard layout, spacing, and mobile behavior
- Fixed quiz timer persistence and anti-cheat messaging UX
- Improved accessibility and visual consistency across components
- Resolved locale duplication in Stripe checkout redirects
- Cleaned up redundant UI states, placeholders, and legacy styles
9 changes: 9 additions & 0 deletions frontend/.env.example
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# --- Core / Environment
APP_ADDITIONAL_ORIGINS=https://admin.example.test
APP_ENV=
APP_ORIGIN=https://example.test
APP_URL=
NEXT_PUBLIC_SITE_URL=

Expand Down Expand Up @@ -83,10 +85,17 @@ STRIPE_WEBHOOK_RL_WINDOW_SECONDS=60
STRIPE_WEBHOOK_INVALID_SIG_RL_MAX=30
STRIPE_WEBHOOK_INVALID_SIG_RL_WINDOW_SECONDS=60

# SECURITY: If true, trust Cloudflare's cf-connecting-ip header for rate limiting.
# Enable ONLY when traffic is fronted by Cloudflare (header is set by Cloudflare at the edge).
# Default: false (0). Keep 0 in untrusted environments to avoid IP spoofing.
TRUST_CF_CONNECTING_IP=0

# SECURITY: If true, trust x-real-ip / x-forwarded-for headers for rate limiting.
# Enable ONLY behind Cloudflare or a trusted reverse proxy that overwrites these headers.
# Default: false (empty/0/false).
TRUST_FORWARDED_HEADERS=0

# emergency switch
RATE_LIMIT_DISABLED=0

GROQ_API_KEY=
5 changes: 3 additions & 2 deletions frontend/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

# testing
/coverage
/coverage-quiz

# next.js
/.next/
Expand Down Expand Up @@ -45,5 +46,5 @@ next-env.d.ts

# Documentation (only for development)
CLAUDE.md
docs/
.claude
_dev-notes/
.claude
Loading