A little housekeeping for jedmund.com
Find a file
2026-01-08 00:43:13 -08:00
.storybook Prettier + build errors 2025-06-02 08:41:03 -07:00
docs fix: restore AlbumForm save functionality and update cleanup docs 2025-11-24 01:05:30 -08:00
prd docs: add PRD for privacy-friendly analytics 2025-11-03 23:03:44 -08:00
prisma fix: add missing migration for project header visibility fields 2025-11-23 06:05:42 -08:00
scripts fix: Svelte 5 migration and linting improvements (61 errors fixed) 2025-11-24 04:47:22 -08:00
src fix store reactivity with getter/setter 2025-12-11 19:04:17 -08:00
static Fix some console errors 2025-06-11 22:19:07 -07:00
tests chore: auto-fix linting issues with eslint --fix 2025-11-23 04:48:06 -08:00
.env.example Apple Music API 2025-06-13 21:22:39 -04:00
.gitignore fix: remove dev.db from git and configure Railway properly 2025-11-23 03:33:59 -08: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 fix: remove dev.db from git and configure Railway properly 2025-11-23 03:33:59 -08: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 lint: disable svelte/no-at-html-tags rule for trusted content 2025-11-24 05:45:14 +00:00
LOCAL_SETUP.md Admin WIP 2025-05-27 16:57:51 -07:00
package.json lint: remove unused imports and variables (11 fixes) 2025-11-23 14:26:56 +00:00
pnpm-lock.yaml lint: remove unused imports and variables (11 fixes) 2025-11-23 14:26:56 +00:00
pnpm-workspace.yaml add psn-api to pnpm build allowlist 2026-01-08 00:43:13 -08:00
railpack-plan.json fix: upgrade to pnpm 10 for psn-api compatibility 2025-11-23 03:50:52 -08: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 fix: Svelte 5 migration and linting improvements (61 errors fixed) 2025-11-24 04:47:22 -08: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