- Move album routes from /photos/[slug] to /albums/[slug]
- Simplify photo permalinks from /photos/p/[id] to /photos/[id]
- Remove album-scoped photo route /photos/[albumSlug]/[photoId]
- Update all component references to use new routes
- Simplify content.ts to always use direct photo permalinks
- Update PhotoItem, MasonryPhotoGrid, ThreeColumnPhotoGrid components
- Update UniverseAlbumCard and admin AlbumForm view links
- Remove album context from photo navigation
Breaking change: URLs have changed
- Albums: /photos/[slug] → /albums/[slug]
- Photos: /photos/p/[id] → /photos/[id]
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
159 lines
3.7 KiB
Markdown
159 lines
3.7 KiB
Markdown
# jedmund.com
|
|
|
|
Personal portfolio website built with SvelteKit featuring a content management system for showcasing creative work, writing, and personal interests.
|
|
|
|
## Features
|
|
|
|
- Content management system for organizing and displaying various types of media
|
|
- Photo galleries with masonry layout and infinite scrolling
|
|
- Blog/journal section for long-form writing
|
|
- Music listening history integration via Last.fm API
|
|
- Gaming activity tracking from Steam and PlayStation
|
|
- Project showcase pages with detailed case studies
|
|
- Responsive design with customizable themes
|
|
|
|
## Tech Stack
|
|
|
|
- SvelteKit with Svelte 5 (Runes mode)
|
|
- Redis for caching external API responses
|
|
- SCSS for styling
|
|
- Integration with Last.fm, Steam, PSN, iTunes, and Giant Bomb APIs
|
|
|
|
## Development
|
|
|
|
Install dependencies:
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
Start development server:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
Build for production:
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
Required environment variables:
|
|
|
|
- `LASTFM_API_KEY` - Last.fm API key for music data
|
|
- `REDIS_URL` - Redis connection URL for caching
|
|
|
|
Optional environment variables:
|
|
|
|
- `DEBUG` - Enable debug logging for specific categories (e.g., `DEBUG=music` for music-related logs)
|
|
|
|
## Commands
|
|
|
|
- `npm run dev` - Start development server
|
|
- `npm run build` - Build for production
|
|
- `npm run preview` - Preview production build
|
|
- `npm run check` - Type check with svelte-check
|
|
- `npm run lint` - Check formatting and linting
|
|
- `npm run format` - Auto-format code with prettier
|
|
|
|
## Database Management
|
|
|
|
### Quick Start
|
|
|
|
Sync remote production database to local development:
|
|
|
|
```bash
|
|
# This backs up both databases first, then copies remote to local
|
|
npm run db:backup:sync
|
|
```
|
|
|
|
### Prerequisites
|
|
|
|
1. PostgreSQL client tools must be installed (`pg_dump`, `psql`)
|
|
```bash
|
|
# macOS
|
|
brew install postgresql
|
|
|
|
# Ubuntu/Debian
|
|
sudo apt-get install postgresql-client
|
|
```
|
|
|
|
2. Set environment variables in `.env` or `.env.local`:
|
|
```bash
|
|
# Required for local database operations
|
|
DATABASE_URL="postgresql://user:password@localhost:5432/dbname"
|
|
|
|
# Required for remote database operations (use one of these)
|
|
REMOTE_DATABASE_URL="postgresql://user:password@remote-host:5432/dbname"
|
|
DATABASE_URL_PRODUCTION="postgresql://user:password@remote-host:5432/dbname"
|
|
```
|
|
|
|
### Backup Commands
|
|
|
|
```bash
|
|
# Backup local database
|
|
npm run db:backup:local
|
|
|
|
# Backup remote database
|
|
npm run db:backup:remote
|
|
|
|
# Sync remote to local (recommended for daily development)
|
|
npm run db:backup:sync
|
|
|
|
# List all backups
|
|
npm run db:backups
|
|
```
|
|
|
|
### Restore Commands
|
|
|
|
```bash
|
|
# Restore a backup to local database (interactive)
|
|
npm run db:restore
|
|
|
|
# Restore specific backup to local
|
|
npm run db:restore ./backups/backup_file.sql.gz
|
|
|
|
# Restore to remote (requires typing "RESTORE REMOTE" for safety)
|
|
npm run db:restore ./backups/backup_file.sql.gz remote
|
|
```
|
|
|
|
### Common Workflows
|
|
|
|
#### Daily Development
|
|
Start your day by syncing the production database to local:
|
|
```bash
|
|
npm run db:backup:sync
|
|
```
|
|
|
|
#### Before Deploying Schema Changes
|
|
Always backup the remote database:
|
|
```bash
|
|
npm run db:backup:remote
|
|
```
|
|
|
|
#### Recover from Mistakes
|
|
```bash
|
|
# See available backups
|
|
npm run db:backups
|
|
|
|
# Restore a specific backup
|
|
npm run db:restore ./backups/local_20240615_143022.sql.gz
|
|
```
|
|
|
|
### Backup Storage
|
|
|
|
All backups are stored in `./backups/` with timestamps:
|
|
- Local: `local_YYYYMMDD_HHMMSS.sql.gz`
|
|
- Remote: `remote_YYYYMMDD_HHMMSS.sql.gz`
|
|
|
|
### Safety Features
|
|
|
|
1. **Automatic backups** before sync operations
|
|
2. **Confirmation prompts** for all destructive operations
|
|
3. **Extra protection** for remote restore (requires typing full phrase)
|
|
4. **Compressed storage** with gzip
|
|
5. **Timestamped filenames** prevent overwrites
|
|
6. **Automatic migrations** after local restore
|