A little housekeeping for jedmund.com
Find a file
Justin Edmund dcca9eb6e5 refactor(ui): update BasePane to use clickOutside action
Replace manual click event listener with clickOutside action for the
pane backdrop click handling. This simplifies the code and ensures
consistent click-outside behavior.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 22:00:54 -07:00
.storybook Prettier + build errors 2025-06-02 08:41:03 -07:00
docs docs: update autosave completion guide with new API 2025-10-07 16:16:32 -07:00
prd docs: capture autosave roll-out plan 2025-10-07 03:18:02 -07:00
prisma feat: add video upload support with ffmpeg processing 2025-08-23 03:13:36 -04:00
scripts feat(colors): improve color analysis with better algorithms and scripts 2025-06-24 01:13:12 +01:00
src refactor(ui): update BasePane to use clickOutside action 2025-10-07 22:00:54 -07:00
static Fix some console errors 2025-06-11 22:19:07 -07:00
tests refactor(tests): rename autoSaveController test file 2025-10-07 16:16:08 -07:00
.env.example Apple Music API 2025-06-13 21:22:39 -04:00
.gitignore chore: add server.log to .gitignore 2025-07-10 21:34:50 -07:00
.node-version Merge branch 'universe/posts' of github.com:jedmund/jedmund-svelte into universe/posts 2025-06-02 15:34:40 -07:00
.npmrc Initial commit 2024-07-01 22:46:33 -04:00
.prettierignore Initial commit 2024-07-01 22:46:33 -04:00
.prettierrc Removed trailing semicolons 2024-07-12 03:37:06 -04:00
CLAUDE.md Prettier + build errors 2025-06-02 08:41:03 -07:00
eslint.config.js Prettier + build errors 2025-06-02 08:41:03 -07:00
LOCAL_SETUP.md Admin WIP 2025-05-27 16:57:51 -07:00
package-lock.json feat: add video upload support with ffmpeg processing 2025-08-23 03:13:36 -04:00
package.json feat: add video upload support with ffmpeg processing 2025-08-23 03:13:36 -04:00
README.md feat: enhance editor with drag handle and UI improvements 2025-06-25 01:06:46 +01:00
svelte.config.js Increase body size limit 2025-06-02 16:49:21 -07:00
SVG_ANALYSIS_REPORT.md fix: drag handle actions now affect the correct block 2025-06-26 10:33:27 -04:00
test-db.ts Unify fullscreen editors 2025-06-13 14:17:26 -04:00
test-form-loading.js Prettier + build errors 2025-06-02 08:41:03 -07:00
tsconfig.json Initial commit 2024-07-01 22:46:33 -04:00
vite.config.ts fix: resolve scss global import path 2025-10-07 04:55:30 -07:00

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:

npm install

Start development server:

npm run dev

Build for production:

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:

# 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)

    # macOS
    brew install postgresql
    
    # Ubuntu/Debian
    sudo apt-get install postgresql-client
    
  2. Set environment variables in .env or .env.local:

    # 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

# 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

# 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:

npm run db:backup:sync

Before Deploying Schema Changes

Always backup the remote database:

npm run db:backup:remote

Recover from Mistakes

# 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