damjan_savic
d824a8c2e0
Merge origin/master
2026-01-25 19:45:16 +01:00
damjan_savic
ffd85a1352
Merge origin/master
2026-01-25 19:44:20 +01:00
damjan_savic
7324a87385
Merge origin/master
2026-01-25 19:39:57 +01:00
damjan_savic
b3f2105066
Merge origin/master
2026-01-25 19:39:43 +01:00
damjan_savic
7272a17296
Merge origin/master
2026-01-25 19:37:01 +01:00
Damjan Savic and GitHub
6affc0d40c
Merge pull request #3 from damjan1996/auto-claude/030-add-unit-tests-vitest-configured-but-no-tests-exis
...
auto-claude: 030-add-unit-tests-vitest-configured-but-no-tests-exis
2026-01-25 19:25:14 +01:00
damjan_savic and Claude Sonnet 4.5
281627beda
fix: Rate limiter fail-open bug - wrap createClient in try/catch (qa-requested)
...
Fixes:
- Rate limiter now properly fails open when Supabase unavailable
- Moved createClient() calls inside try/catch blocks
- Prevents unhandled exceptions from reaching API handler
- Improved error logging for debugging
Impact:
- isRateLimited() - Wrapped createClient (line 22)
- getRemainingAttempts() - Wrapped createClient (line 93)
- getTimeToReset() - Wrapped createClient (line 128)
Context:
- QA Session 2 found API returning 500 errors
- Root cause: Database table doesn't exist (requires manual migration)
- This fix ensures rate limiter fails gracefully when DB unavailable
- With DB present, rate limiting will work as designed
Verified:
- TypeScript compiles without errors
- Code follows fail-open pattern
- Error logging improved
QA Fix Session: 2
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 13:09:40 +01:00
damjan_savic
e036a83e5a
auto-claude: subtask-4-1 - Remove old in-memory rate limiter file
2026-01-25 12:12:24 +01:00
damjan_savic
09b31fd7c1
auto-claude: subtask-3-5 - Add JSDoc to webVitals.ts
2026-01-25 11:57:04 +01:00
damjan_savic
40aafb04ab
auto-claude: subtask-2-3 - Add IP extraction utility for Next.js requests
2026-01-25 11:55:45 +01:00
damjan_savic
a64647cce0
auto-claude: subtask-3-4 - Add JSDoc to supabaseClient.ts
2026-01-25 11:55:17 +01:00
damjan_savic
cf6b80201c
auto-claude: subtask-3-3 - Add JSDoc to serviceWorkerRegistration.ts
2026-01-25 11:54:12 +01:00
damjan_savic and Claude Opus 4.5
43484c5023
Add blog posts, cleanup unused files, update components
...
- Add 100 blog posts covering AI, development, and tech topics
- Add .env.example for environment configuration
- Add accessibility and lighthouse audit scripts
- Remove obsolete SEO reports and temporary files
- Remove dev-dist build artifacts and backup files
- Remove unused portrait images (moved/consolidated elsewhere)
- Update contact form and component improvements
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 11:42:11 +01:00
damjan_savic
b4f9ac947b
auto-claude: subtask-3-2 - Add JSDoc to fontLoader.ts
2026-01-25 06:42:26 +01:00
damjan_savic
30d2b76056
auto-claude: subtask-2-2 - Create tests for errorHandling.ts (AppError, handl
2026-01-25 06:41:41 +01:00
damjan_savic
e9082be2d9
auto-claude: subtask-2-1 - Create Supabase-based rate limiting utility
2026-01-25 06:41:28 +01:00
damjan_savic
4d9e0d3a29
auto-claude: subtask-3-1 - Add JSDoc to constants.ts
2026-01-25 06:40:57 +01:00
damjan_savic
a033c0d9e6
auto-claude: subtask-2-3 - Add JSDoc to analytics.ts
2026-01-25 06:39:22 +01:00
damjan_savic and Claude Sonnet 4.5
aaaa60f5db
auto-claude: subtask-2-1 - Create tests for cache.ts (TTL, get/set, expiration logic)
...
- Created comprehensive test suite for cache.ts covering:
- set() and get() operations with various data types
- TTL expiration logic (default, custom, and edge cases)
- has() method for checking key existence
- delete() method for removing individual keys
- clear() method for removing all keys
- Expiration boundary testing
- Different TTL values for different items
- TTL reset when items are overwritten
- Fixed vitest.config.ts to include src/utils/** tests
- Fixed tsconfig.json to include src/utils/** files
- Used vi.useFakeTimers() for deterministic time-based testing
- All tests properly isolated with beforeEach/afterEach hooks
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:38:18 +01:00
damjan_savic
9860aa0dd2
auto-claude: subtask-2-2 - Add JSDoc to csrf.ts
2026-01-25 06:37:23 +01:00
damjan_savic
09c6f31ff0
auto-claude: subtask-2-1 - Add JSDoc to auth.ts (checkAuth, signOut functions)
2026-01-25 06:36:11 +01:00
damjan_savic
f2b4c0a227
auto-claude: subtask-1-4 - Add JSDoc to api.ts (fetchWithTimeout function)
2026-01-25 06:35:04 +01:00
damjan_savic and Claude Sonnet 4.5
baa3ad0571
auto-claude: subtask-1-3 - Add JSDoc to rateLimiting.ts (RateLimiter class and methods)
...
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:33:46 +01:00
damjan_savic
d1b8665652
auto-claude: subtask-1-2 - Add JSDoc to cache.ts (Cache class and its 5 methods)
2026-01-25 06:32:11 +01:00
damjan_savic
db13754e24
auto-claude: subtask-1-1 - Add maxSize parameter and access tracking to Cache
2026-01-25 06:31:54 +01:00
damjan_savic
ac36667dad
auto-claude: subtask-1-1 - Add JSDoc to errorHandling.ts (AppError class, han
2026-01-25 06:30:49 +01:00
damjan_savic
c934eeaad8
auto-claude: subtask-1-1 - Create throttle utility function
2026-01-25 06:23:46 +01:00
damjan_savic and Claude Opus 4.5
52937b94c1
Portfolio Update: Recrobot hinzugefügt, Blog-Beitrag entfernt, UI verbessert
...
- Neues Portfolio-Projekt: Recrobot (KI-gestütztes Recruiting Tool)
- Portfolio-Projekt: Website mit KI hinzugefügt
- Blog-Beitrag "Automatisierte Ad Creatives" entfernt
- Gradient-Overlay von Portfolio-Karten entfernt
- Projekt-Ordner für Cover-Bilder erstellt
- Übersetzungen für alle drei Sprachen (DE, EN, SR)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-13 21:11:57 +01:00
damjan_savic
e69e68242c
Implementierung - SEO - 01.08.2025
2025-08-01 20:33:47 +02:00
damjan_savic
f176743885
Implementierung - SEO - 01.08.2025
2025-08-01 14:26:05 +02:00
damjan_savic
7aa0543001
Fix Cookie Banner.
2025-04-18 16:16:07 +02:00
damjan_savic
867168ae99
Fix Cookie Banner.
2025-04-18 16:06:14 +02:00
damjan_savic
5c3da709df
Fix Cookie Banner.
2025-04-18 13:48:11 +02:00
damjan_savic
bba0e331a8
First Commit - Portfolio Page
2025-02-10 00:55:39 +01:00