Initial commit: Portfolio Website

Vollständige Next.js 15 Portfolio-Website mit:
- Blog-System mit 100+ Artikeln
- Supabase-Integration
- Responsive Design mit Tailwind CSS
- TypeScript-Konfiguration
- Testing-Setup mit Vitest und Playwright

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-01 15:07:20 +01:00
co-authored by Claude Opus 4.5
commit e1bbe5455d
315 changed files with 94124 additions and 0 deletions
+85
View File
@@ -0,0 +1,85 @@
# Supabase Migration Instructions
## Apply Migration: Create rate_limits Table
### Quick Steps
1. **Open Supabase SQL Editor**
- Go to: https://app.supabase.com/project/mxadgucxhmstlzsbgmoz/sql
2. **Copy Migration SQL**
- Open: `supabase/migrations/20260125_create_rate_limits_table.sql`
- Copy all contents (Ctrl+A, Ctrl+C)
3. **Execute Migration**
- Paste the SQL into the Supabase SQL editor
- Click the "Run" button (or press Ctrl+Enter)
- Wait for "Success. No rows returned" message
4. **Verify Table Creation**
- Go to Table Editor: https://app.supabase.com/project/mxadgucxhmstlzsbgmoz/editor
- Look for "rate_limits" table in the list
- Click on it to verify the schema
### Expected Table Schema
The `rate_limits` table should have:
| Column | Type | Description |
|--------|------|-------------|
| identifier | TEXT | Client identifier (IP address) |
| count | INTEGER | Number of requests in window |
| window_start | TIMESTAMPTZ | Start of rate limit window |
| created_at | TIMESTAMPTZ | When record was created |
| updated_at | TIMESTAMPTZ | When record was last updated |
**Primary Key:** (identifier, window_start)
**Indexes:**
- `idx_rate_limits_identifier_window` on (identifier, window_start DESC)
- `idx_rate_limits_window_start` on (window_start)
### Alternative: Using Supabase CLI (if available)
If you have Supabase CLI installed:
```bash
supabase db push
```
Or apply the specific migration:
```bash
supabase migration up
```
### Verification Query
Run this query in the SQL editor to verify the table exists:
```sql
SELECT
table_name,
column_name,
data_type,
is_nullable
FROM information_schema.columns
WHERE table_name = 'rate_limits'
ORDER BY ordinal_position;
```
You should see all 5 columns listed.
### Troubleshooting
**Error: "relation already exists"**
- The table already exists. You can verify by checking Table Editor.
**Error: "permission denied"**
- Make sure you're logged into the correct Supabase project.
- Verify you have admin/owner access to the project.
**Table not appearing in Table Editor**
- Refresh the page (F5)
- Check the SQL editor for any error messages
- Verify the SQL was executed successfully