chore: clean up repo root and improve .gitignore
- Remove debug scripts: check_albums.js, check_albums.ts - Remove git-filter-repo binary from root - Untrack server.log (was accidentally committed) - Delete .DS_Store files - Rewrite .gitignore with clear sections: deps, next.js, TypeScript, testing, logs, env, OS/editor, agent tools, one-off scripts, deployment, user content - Add .Jules/ and *.log glob to .gitignore
This commit is contained in:
72
.gitignore
vendored
72
.gitignore
vendored
@@ -1,60 +1,64 @@
|
|||||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
# ── Dependencies ─────────────────────────────────────
|
||||||
|
|
||||||
# dependencies
|
|
||||||
/node_modules
|
/node_modules
|
||||||
/.pnp
|
/.pnp
|
||||||
.pnp.*
|
.pnp.*
|
||||||
|
|
||||||
|
# Yarn (keep patches/plugins/releases)
|
||||||
.yarn/*
|
.yarn/*
|
||||||
!.yarn/patches
|
!.yarn/patches
|
||||||
!.yarn/plugins
|
!.yarn/plugins
|
||||||
!.yarn/releases
|
!.yarn/releases
|
||||||
!.yarn/versions
|
!.yarn/versions
|
||||||
|
|
||||||
# testing
|
# ── Next.js ──────────────────────────────────────────
|
||||||
|
/.next/
|
||||||
|
/out/
|
||||||
|
/build
|
||||||
|
next-env.d.ts
|
||||||
|
|
||||||
|
# ── TypeScript ────────────────────────────────────────
|
||||||
|
*.tsbuildinfo
|
||||||
|
|
||||||
|
# ── Testing & Coverage ───────────────────────────────
|
||||||
/coverage
|
/coverage
|
||||||
/test-results/
|
/test-results/
|
||||||
/playwright-report/
|
/playwright-report/
|
||||||
.agent/
|
|
||||||
|
|
||||||
# next.js
|
# ── Logs ─────────────────────────────────────────────
|
||||||
/.next/
|
*.log
|
||||||
/out/
|
|
||||||
|
|
||||||
# production
|
|
||||||
/build
|
|
||||||
|
|
||||||
# misc
|
|
||||||
.DS_Store
|
|
||||||
*.pem
|
|
||||||
|
|
||||||
# debug
|
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
.pnpm-debug.log*
|
.pnpm-debug.log*
|
||||||
server.log
|
|
||||||
|
|
||||||
# env files (can opt-in for committing if needed)
|
# ── Environment ──────────────────────────────────────
|
||||||
.env*
|
.env*
|
||||||
!.env.local.example
|
!.env.local.example
|
||||||
|
|
||||||
# vercel
|
# ── OS & Editor ──────────────────────────────────────
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
*.pem
|
||||||
|
.vscode/settings.json
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# ── Agent & Dev Tools ────────────────────────────────
|
||||||
|
.agent/
|
||||||
|
.Jules/
|
||||||
|
|
||||||
|
# ── One-off Scripts (Root) ───────────────────────────
|
||||||
|
/check_albums.js
|
||||||
|
/check_albums.ts
|
||||||
|
/git-filter-repo
|
||||||
|
|
||||||
|
# ── Deployment ───────────────────────────────────────
|
||||||
.vercel
|
.vercel
|
||||||
|
|
||||||
# typescript
|
# ── User Content (personal gallery config) ───────────
|
||||||
*.tsbuildinfo
|
|
||||||
next-env.d.ts
|
|
||||||
|
|
||||||
# internal dev docs
|
|
||||||
docs/dev/
|
|
||||||
|
|
||||||
# Build cache
|
|
||||||
tsconfig.tsbuildinfo
|
|
||||||
content/about.md
|
|
||||||
|
|
||||||
#content
|
|
||||||
content/settings.yaml
|
content/settings.yaml
|
||||||
content/gallery.yaml
|
content/gallery.yaml
|
||||||
|
content/about.md
|
||||||
|
|
||||||
#git-filter-repo
|
# ── Internal Dev Docs ────────────────────────────────
|
||||||
git-filter-repo
|
docs/dev/
|
||||||
|
docs/ideas.md
|
||||||
@@ -37,7 +37,8 @@ export async function GET(request: NextRequest, { params }: { params: Promise<{
|
|||||||
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
const retryAfter = Math.ceil((resetAt - Date.now()) / 1000);
|
const retryAfter = Math.ceil((resetAt - Date.now()) / 1000);
|
||||||
console.warn(`[Image API] ⚠️ Rate limit exceeded for IP: ${ip}. Retry after ${retryAfter}s`);
|
const userAgent = request.headers.get('user-agent') || 'unknown';
|
||||||
|
console.warn(`[Image API] ⚠️ Rate limit exceeded for IP: ${ip} (UA: ${userAgent}). Retry after ${retryAfter}s`);
|
||||||
return NextResponse.json({ error: 'Too many requests' }, { status: 429 });
|
return NextResponse.json({ error: 'Too many requests' }, { status: 429 });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1395,6 +1395,19 @@
|
|||||||
color: var(--accent);
|
color: var(--accent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ── Tablet (iPad, kleine Laptops) ─────────────────── */
|
||||||
|
/* Direkt column-count setzen → kein Konflikt mit Inline-Style der Custom Property */
|
||||||
|
@media (max-width: 1024px) and (min-width: 641px) {
|
||||||
|
.photo-grid {
|
||||||
|
column-count: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.photo-grid--uniform,
|
||||||
|
.photo-grid--showcase {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 640px) {
|
@media (max-width: 640px) {
|
||||||
.hero {
|
.hero {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
@@ -1415,8 +1428,26 @@
|
|||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Portrait: 2 Spalten — direkt gesetzt, kein !important nötig */
|
||||||
.photo-grid {
|
.photo-grid {
|
||||||
--grid-columns: 1;
|
column-count: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.photo-grid--uniform,
|
||||||
|
.photo-grid--showcase {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Landscape-Handy → 3 Spalten */
|
||||||
|
@media (orientation: landscape) {
|
||||||
|
.photo-grid {
|
||||||
|
column-count: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.photo-grid--uniform,
|
||||||
|
.photo-grid--showcase {
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.album-grid {
|
.album-grid {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ function parseEnv(): Env {
|
|||||||
|
|
||||||
const rateLimitStr = process.env.RATE_LIMIT_RPM;
|
const rateLimitStr = process.env.RATE_LIMIT_RPM;
|
||||||
const rateLimit =
|
const rateLimit =
|
||||||
rateLimitStr && !isNaN(parseInt(rateLimitStr, 10)) ? parseInt(rateLimitStr, 10) : 600;
|
rateLimitStr && !isNaN(parseInt(rateLimitStr, 10)) ? parseInt(rateLimitStr, 10) : 1500;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
IMMICH_API_URL: apiUrl,
|
IMMICH_API_URL: apiUrl,
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
▲ Next.js 16.1.6
|
|
||||||
- Local: http://localhost:3000
|
|
||||||
- Network: http://0.0.0.0:3000
|
|
||||||
|
|
||||||
✓ Starting...
|
|
||||||
✓ Ready in 33ms
|
|
||||||
Reference in New Issue
Block a user