tech-details
Database schema (users, messages, photos tables), environment variables, ImageKit storage structure, authentication flow, and service integrations. Use when working on database operations, API logic, authentication, or infrastructure.
$ インストール
git clone https://github.com/adeonir/golden-anniversary /tmp/golden-anniversary && cp -r /tmp/golden-anniversary/.claude/skills/tech-details ~/.claude/skills/golden-anniversary// tip: Run this command in your terminal to install the skill
SKILL.md
name: tech-details description: Database schema (users, messages, photos tables), environment variables, ImageKit storage structure, authentication flow, and service integrations. Use when working on database operations, API logic, authentication, or infrastructure.
Tech Details
Database Schema (Drizzle ORM)
users (Authentication)
id: UUID // Unique identifier
email: TEXT // Admin email
password: TEXT // bcrypt hashed password
createdAt: TIMESTAMPTZ
messages (Guestbook)
id: UUID
name: TEXT // Author name
message: TEXT // Message content (500 chars max)
status: ENUM // 'pending' | 'approved' | 'rejected'
createdAt: TIMESTAMPTZ
photos (Gallery)
id: UUID
filename: TEXT // File name in ImageKit
title: TEXT? // Optional photo title
url: TEXT // ImageKit CDN URL
fileId: TEXT // ImageKit file ID (for deletion)
size: INTEGER // Size in bytes
order: INTEGER // Position in gallery
category: ENUM // 'memory' | 'event'
createdAt: TIMESTAMPTZ
ImageKit Storage Structure
memories/{uuid}.{ext} # Memory photos
event/{uuid}.{ext} # Event photos
- Automatic image optimization and CDN delivery
- Blur placeholders via plaiceholder
- Staging prefix:
stg/(via IMAGEKIT_FOLDER_PREFIX)
Environment Variables
Required
DATABASE_URL # Neon PostgreSQL connection string
JWT_SECRET # Min 32 chars for token signing
IMAGEKIT_PRIVATE_KEY # Server-side uploads/deletions
IMAGEKIT_PUBLIC_KEY # Client-side (NEXT_PUBLIC_)
IMAGEKIT_URL_ENDPOINT # CDN endpoint (NEXT_PUBLIC_)
Optional
IMAGEKIT_FOLDER_PREFIX # Staging prefix (e.g., "stg")
NEXT_PUBLIC_POSTHOG_KEY # Analytics project key
NEXT_PUBLIC_POSTHOG_HOST # PostHog host URL
Email (Cron notifications)
EMAIL_HOST # SMTP server (e.g., smtp.gmail.com)
EMAIL_PORT # SMTP port (e.g., 587)
EMAIL_USER # Sender email
EMAIL_PASS # App password
EMAIL_TO # Admin notification recipient
Authentication Flow
- Admin submits credentials via login form
- Server action validates with bcrypt
- JWT token created with jose library
- Token stored in httpOnly cookie
- Middleware validates JWT on /admin/* routes
- Middleware checks user exists in database
Service Integrations
PostHog (Analytics & Error Tracking)
- User analytics: section views, form submissions, link clicks
- Error tracking:
apiError,mutationError,queryError - All data hooks use
useErrorTrackingfor capture
ImageKit (Storage & CDN)
- Upload via server-side SDK
- Delete via fileId
- Automatic WebP conversion
- Blur placeholder generation
Email (Nodemailer)
- Daily digest at 8 PM via Vercel Cron
- Lists pending messages for moderation
- Fallback: GitHub Actions cron
Authorization Rules
- messages: Public read (approved only), admin write
- photos: Public read, admin write
- users: Admin only (no public access)
Repository

adeonir
Author
adeonir/golden-anniversary/.claude/skills/tech-details
4
Stars
0
Forks
Updated2d ago
Added6d ago