Commit Graph

155 Commits

Author SHA1 Message Date
eca50ef319 feat: add Iconify-based icon system with search and picker UI
- Replace Font Awesome with Iconify (@iconify/json collections)
- Add IconPicker component with search, collection filtering, lazy loading
- Create authenticated icon API endpoints (search, collections, individual icons)
- Update projects page to render icons via Icon.svelte component
- Pre-cache common icon collections (Lucide, Simple Icons, etc.) on startup
2026-01-06 16:01:09 -06:00
be718976d6 feat: add favicons, support embedded assets properly
- Refactor asset serving to check embedded assets before proxying
2026-01-06 12:26:51 -06:00
c6dd1dffb0 feat: add cookie-based session authentication system
- Add admin user management with Argon2 password hashing
- Implement session management with ULID-based tokens and 7-day expiry
- Add authentication middleware for protected routes and API endpoints
- Forward validated session to SvelteKit via trusted X-Session-User header
- Refactor admin panel to use server-side authentication checks
2026-01-06 11:33:38 -06:00
16bf2b76f3 feat: add admin panel with project and tag management
- Full CRUD interface for projects with GitHub integration and tagging
- Real-time event log with expandable metadata viewer
- Reusable component library (Badge, Button, Input, Modal, Table,
TagPicker)
- Server-side API client with Unix socket and HTTP support
- JWT-based authentication with Svelte 5 reactive stores
- Settings management for social links and site identity
- Remove /admin path from tarpit to allow legitimate access
2026-01-06 10:07:59 -06:00
045781f7a5 feat: add comprehensive tagging system with cooccurrence tracking
- Add tags, project_tags, and tag_cooccurrence tables with proper indexes
- Implement full CRUD API endpoints for tag management
- Add tag association endpoints for projects with automatic cooccurrence updates
- Include related tags and project filtering by tag functionality
2026-01-06 03:18:23 -06:00
b4c708335b feat: add PostgreSQL database integration for projects
- Add SQLx with Postgres support and migration system
- Create projects table with status enum and auto-updated timestamps
- Implement database queries and API response conversion layer
- Add Justfile commands for database management and seeding
- Integrate health checks for both Bun and database connectivity
2026-01-06 02:07:42 -06:00
3c6f61c4e4 feat: add prerendered error pages with Rust integration
- Prerender 20+ HTTP error codes (4xx/5xx) at build time
- Embed error pages in binary and serve via Axum
- Intercept error responses for HTML requests
- Add transient flag for retry-worthy errors (502/503/504)
2026-01-06 00:43:00 -06:00
2a710d584e feat: add connection tarpit for malicious bot traffic
Implements slow-drip response handler for known bot paths (wp-admin, phpmyadmin, etc.) to waste attacker resources. Includes per-IP and global connection limits, configurable delays, and random chunking. Also applies clippy lint fixes across codebase.
2026-01-05 18:19:09 -06:00
553bae5a7f fix: properly handle binary proxied responses, enforce bun usage, proper mobile-friendly frontend 2026-01-05 15:15:08 -06:00
96595b073d refactor: replace sveltekit-og with native Satori implementation
- Remove @ethercorps/sveltekit-og and bits-ui dependencies
- Implement direct Satori + Resvg rendering pipeline
- Add OgImage.svelte component for template generation
- Create /internal/ogp preview page for development
- Load fonts from node_modules via fs for production compatibility
- Add 2s startup delay before OG image regeneration
2026-01-05 15:15:08 -06:00
81d9541b44 feat: add health checks, OG image generation, and R2 integration
- Implement health check system with caching and singleflight pattern
- Add OG image generation via Satori with R2 storage backend
- Configure Railway deployment with health check endpoint
- Add connection pooling and Unix socket support for Bun SSR
- Block external access to internal routes (/internal/*)
2026-01-05 03:16:55 -06:00
9de3c84f00 feat: add Docker containerization with multi-stage build
Includes .dockerignore, Dockerfile with cargo-chef caching, and Justfile commands for building/running containerized app. Updates console-logger to support both JSON and pretty-printed logs based on LOG_JSON env var.
2026-01-04 20:23:11 -06:00
edf271bcc6 feat: add request validation and HEAD method support
- Validate Content-Type for API requests (application/json only)
- Add HEAD method handlers for all routes
- Add 1MB request body limit
- Improve method not allowed responses with Allow header
2026-01-04 19:21:53 -06:00
32f1f88a90 feat: embed SvelteKit client assets in Rust binary
- Add include_dir for serving /_app static bundles from binary
- Add console-logger.js for structured JSON logs from Bun
- Fix API routing edge cases and add method restrictions
2026-01-04 19:16:08 -06:00
d86027d27a feat: add Rust reverse proxy with JSON logging
- Axum-based API server with Unix socket and TCP support
- Custom tracing formatters for Railway-compatible JSON logs
- SvelteKit hooks and Vite plugin for unified logging
- Justfile updated for concurrent dev workflow with hl log viewer
2026-01-04 18:21:00 -06:00
af81d8e048 refactor: large refactor around monorepo
Just a commit point while I'm testing stuff. Already decided at this
point to simplify and revert away from PayloadCMS.
2026-01-04 13:18:34 -06:00
31b1804fc9 refactor: redesign homepage navigation and social links
- Move navigation to top-right header
- Replace simple underline links with styled card-based social links
- Add RSS and GitHub icons to header
- Remove About section from top nav
2026-01-03 13:45:38 -06:00
ac7618f2fd feat: redesign homepage with Radix UI and add dev environment defaults
- Replace title/tagline homepage with social profile design
- Add Radix UI Themes + icon libraries for modern UI components
- Provide sensible dev defaults for DB/secrets (no .env required)
- Add production safety checks for critical env vars
- Make optional features (cron, healthcheck) gracefully skip when unconfigured
2026-01-01 23:41:35 -06:00
da366b9538 chore: migrate from Tailwind v3 to v4 and upgrade dependencies
Major changes:
- Upgrade Tailwind CSS from v3 to v4 with @tailwindcss/postcss
- Remove deprecated Tailwind v3 configuration and PostCSS plugins
- Upgrade Zod from v3 to v4
- Update React Markdown and other dependencies to latest versions
- Remove @plaiceholder, @headlessui, and other unused dependencies
- Replace SCSS with standard CSS globals
- Add font packages (@fontsource-variable) for better typography
- Consolidate Prettier configuration to .prettierrc
- Remove legacy contact page and custom Payload SCSS
- Add Mantine hooks and Lucide React for improved UI components
2025-10-26 01:38:22 -05:00
0dcf6f93ba feat: migrate from Next.js Pages Router to App Router with Payload CMS
Complete architectural overhaul migrating from Directus+tRPC to Payload CMS with Next.js App Router. This represents a fundamental shift in how the application is structured and how data is managed.

Major changes:
- Migrated from Pages Router (src/pages/) to App Router (src/app/)
- Replaced Directus CMS with Payload CMS as the content management system
- Removed tRPC in favor of Payload's built-in API routes
- Added PostgreSQL database via Docker Compose for local development
- Implemented separate route groups for frontend and Payload admin
- Updated all API routes to App Router conventions
- Added Payload collections for Projects, Technologies, Links, Media, and Users
- Configured ESLint for new project structure

Infrastructure:
- Added docker-compose.yml for PostgreSQL database
- Updated environment variables for Payload CMS configuration
- Integrated @payloadcms/next for seamless Next.js integration
- Added GraphQL API and playground routes

Dependencies:
- Upgraded React from 18.2.0 to 19.2.0
- Upgraded Next.js to 15.5.6
- Added Payload CMS 3.x packages (@payloadcms/db-postgres, @payloadcms/next, etc.)
- Removed Directus SDK and tRPC packages
- Updated Sharp to 0.34.x
- Migrated to @tanstack/react-query v5
2025-10-26 00:58:10 -05:00
6c043630df feat: add internal healthcheck api route for directus 2025-07-20 22:53:21 -05:00
129a59340a Switched /api/resume to /resume with ISR, added additional classic redirects 2025-04-05 22:10:03 -05:00
b768f5a40d Fix req.method comparison METHOD check 2025-03-21 12:28:39 -05:00
5a1ab61c65 Fix /resume redirect links, add /api/resume route 2025-03-21 12:26:34 -05:00
ee1e1cfdf6 Continue improving projects page layout 2025-01-01 03:02:07 -06:00
697a6a7a18 Format change, sort by date_updated descending 2024-12-31 20:08:50 -06:00
95acb1cafa Remove extra console.log 2024-12-31 19:55:54 -06:00
23c6b68179 Allow passing CRON_SECRET via query parameter, use production only, don't return response directly 2024-12-31 19:54:21 -06:00
07872bcfbf Extend index page to 60 second revalidate
Main reason is because the edge requests are kinda spending a lot more
bandwidth than I should be allowing. I assume due to updown.io
2024-12-31 19:40:45 -06:00
fbe2834a0a Allow CRON_SECRET to be optional 2024-12-31 19:38:38 -06:00
ef44d6c1ba automatic update cron implementation, vercel cron, type guards 2024-12-31 19:36:01 -06:00
c3997a1df5 setup CRON_SECRET, DIRECTUS_API_TOKEN, GITHUB_API_TOKEN, static directus token authentication 2024-12-31 16:58:09 -06:00
9b003a5640 Fix navbar hotbox issues via z-index 2024-12-30 15:24:40 -06:00
85fb7781fd Switch to .env, use multiple projects 2024-12-29 17:00:53 -06:00
4141af5406 Make text selectable, because why not 2024-12-29 16:55:12 -06:00
a280b61c5e Vercel does not support multiple environments for free, so we use a hack instead :) 2024-12-29 16:49:41 -06:00
6f13f7814c OVERRIDE_TITLE env 2024-12-29 16:43:54 -06:00
692df157a1 Fix select-none affecting surrounding elements of title 2024-12-29 16:34:07 -06:00
0945d706f4 Fix linting errors, title padding, add subtitle 2024-12-28 21:36:16 -06:00
d75925ba1f Tune icons, allow div/a element based on link availability, 'Projects' h1 2024-12-28 21:30:11 -06:00
55b491bd33 Use directus return types, fix project link nested type API response 2024-12-28 21:01:25 -06:00
fe3d2aefbe Remove keyed project route, log error 2024-12-28 20:05:05 -06:00
c4c805c83b tune index/projects Dots animation fading 2024-12-28 18:25:16 -06:00
da6333d39a font awesome dynamic icons, use dynamic /projects from directus 2024-12-28 18:00:57 -06:00
1a6e6d93a2 Remove projects list from index page 2024-12-28 17:14:26 -06:00
7220e0878e Remove WIP component 2024-12-28 17:00:47 -06:00
f90ee1a969 Cull unused AppWrapper details 2024-12-28 16:59:16 -06:00
e35d8c0199 Fix headline select-none + padding prevent link hover/click, remove AppWrapper.hideNavigation 2024-12-28 16:57:31 -06:00
445687699f Use 'cn' utility with clsx/tailwind-merge 2024-12-28 16:57:05 -06:00
08ec8288d1 Remove body-gradient (lighter than Dots bg) 2024-12-28 16:34:52 -06:00