Skip to content

Releases: ECarry/photography-website

v2.3.0

08 Feb 06:50

Choose a tag to compare

What's New in v2.3.0

🔒 Security

  • S3 upload validation: Server-side contentType whitelist (only image formats) and file size limit
  • LIKE injection prevention: Escape SQL wildcards in photo search input
  • Visibility enforcement: Public pages now only return photos with visibility: "public"
  • Protected procedures: photos.getOne and photos.getMany restricted to authenticated users

⚡ Improvements

  • Database transactions: photos.create and photos.remove wrapped in transactions for data consistency
  • Environment validation: Zod-based server env validation — app fails fast with clear errors on missing config
  • DB connection pool caching: Prevent connection leaks during Next.js HMR in development
  • ctx.db migration: All tRPC routers now use ctx.db instead of direct imports (better testability)
  • updatedAt timestamps: Photo updates now correctly refresh the updatedAt field
  • Error handling: photos.remove re-throws TRPCError to preserve original error codes

🐳 Docker

  • Added .dockerignore: Smaller build context, faster builds
  • Externalized secrets: docker-compose.yml now uses ${VAR:-default} syntax, overridable via .env

🧪 Testing

  • Vitest setup: Test framework with mocks for React cache, next/headers, S3 client, auth session
  • 16 photo procedure tests: Full coverage of create, update, getOne, getMany, remove including edge cases

v2.2.0

19 Dec 15:51

Choose a tag to compare

What's New in v2.2.0

🐳 Docker Support

  • Full Docker deployment with RustFS and Standalone modes
  • Simplified deployment process

✨ Major Features

Screensaver

  • Animated grid screensaver with photo flip transitions
  • Settings modal with fullscreen toggle and auto-hide controls
  • Photo data prefetching for smooth performance

Individual Photo Pages

  • Dedicated photo detail view with metadata generation
  • Blurred background image effect
  • Loading skeleton state for better UX

Cloudflare Integration

  • Optimized image delivery via Cloudflare image loader
  • Improved performance for image-heavy pages

Enhanced Mapbox

  • Multi-marker support with drag-and-drop positioning
  • Map auto-centering when selecting photos in discover view
  • Limited zoom level to 10 for optimal UX

🎯 Improvements

  • Next.js: Upgraded from 16.0.0 → 16.0.10
  • Photo sorting by date (newest/oldest first)
  • Increased city sets display limit from 9 to 12
  • Better screensaver grid with fixed row count and dynamic sizing
  • Improved photo preview card responsive layout

🔧 Technical Updates

  • Added PostgreSQL support for database flexibility
  • Renamed and reorganized S3 utility functions
  • Standardized zod imports and validators
  • Fixed sidebar skeleton width calculation
  • Addressed YouTube extension typing issues

📚 Documentation

  • Added screenshots section to README
  • Added warning about custom image loader configuration

📊 Statistics

  • 31 commits from v2.1.0 to v2.2.0
  • 75 files changed: +1,721 insertions, -1,722 deletions

Full Changelog: v2.1.0...v2.2.0

v2.1.0

22 Nov 16:15

Choose a tag to compare

What's New in v2.1.0

🎯 Major Features

Mapbox Integration

  • Interactive map embeds with location toolbar functionality
  • Map preview with zoom controls in MapboxToolbar dialog
  • Drag rotate and drag pan controls for enhanced map interaction
  • Location-based content embedding support

Editor Enhancements

  • Added dedicated Heading toolbar component
  • Split Color and Highlight into separate toolbar components
  • Numeric font size display replacing generic Type icon

⚡ Performance

  • Optimized editor toolbar performance using useEditorState hook

🔧 Improvements

  • Extracted Tiptap editor styles to dedicated CSS file
  • Improved image component responsiveness
  • Normalized YouTube extension indentation (4→2 spaces)
  • Simplified RichTextViewer component

🐛 Bug Fixes

  • Added explicit type="button" to prevent unintended form submissions in editor components

📊 Statistics

  • 13 commits from v2.0.0 to v2.1.0
  • 28 files changed: +1,846 insertions, -750 deletions

Full Changelog: v2.0.0...v2.1.0

v2.0.0

19 Nov 07:26

Choose a tag to compare

Highlights

  • City detail pages

    • Added full city detail page UI with cover photo, info cards, and photo listing.
    • Implemented city description editing and improved city detail layout and styling.
    • Fixed URL-encoded city names in page metadata.
    • Introduced a FramedPhoto component and redesigned the city photo gallery layout.
    • Replaced the old commented photo grid with the new FramedPhoto-based layout.
  • Discover map & photo selection

    • Added a photo selection panel on the discover map with click handlers.
    • Improved the photo grid layout and spacing in the discover panel.
    • Implemented a mobile drawer for photo selection in the discover view.
    • Added a conditional single-column layout when photos are selected.
  • Photo gallery & image handling

    • Iteratively refined gallery layout, spacing, max heights, and metadata display.
    • Improved empty state UI for the photo slider.
    • Standardized responsive grid layouts across photo galleries.
  • Rich text editor & blog posts

    • Added a Tiptap-based rich text editor with custom extensions, toolbar, and form integration.
    • Implemented S3 image upload and deletion in the editor using presigned URLs.
    • Updated post form schema with a content field and visibility enum.
    • Added post edit and detail pages, plus update mutation support.
    • Added a visibility filter to blog post slug queries and improved post form layout.
  • File uploader & S3 integration

    • Redesigned the FileUploader with a modern UI, better UX, and skeleton loading states.
    • Implemented safe file deletion with loading and error handling.
    • Added max-width constraints and prevented deleted images from reappearing.
    • Passed folder parameters to presigned URL creation and renamed Cloudflare/R2 constants and modules to S3-oriented names for clarity.
  • Dashboard, profile, and security

    • Standardized dashboard layout padding and reorganized components into view modules.
    • Added real-time dashboard statistics with loading states and skeletons.
    • Reorganized the profile page into a tabbed interface and extracted shared auth utilities.
    • Improved security and profile management with enhanced device info and styling.
    • Simplified navigation user dropdown and sidebar navigation.
  • Map & geospatial data

    • Added configurable map interaction controls.
    • Consolidated visited countries queries into a single GeoJSON-powered endpoint.
    • Adjusted dashboard layout to better accommodate maps and spacing.
  • Performance, UX, and refactors

    • Optimized image quality settings and improved loading placeholders.
    • Simplified multiple components, reorganized editor files, and cleaned up unused extensions.
    • Replaced various legacy names and modules to improve clarity and provider flexibility.
  • Documentation

    • Expanded the photo URL migration guide with more detailed upgrade steps.
    • Improved the main README formatting and added a star history section.

Upgrade Notes

  • Image and file handling now rely on S3-style configuration and presigned URLs.
  • Rich text content and visibility are now first-class fields in the post schema.
  • Some editor and dashboard components have been moved into new directory structures; custom imports may need to be updated accordingly.

v2.0.0-beta.1

07 Nov 14:57

Choose a tag to compare

🚀 Major Features:

  • Upgrade to Next.js 16 with React 19 and latest React Compiler
  • Implement TanStack Query v5 for advanced data fetching and caching
  • Integrate tRPC v11 for end-to-end type-safe APIs
  • Add comprehensive photo management with EXIF data extraction

🗺️ Enhanced Map Features:

  • iPhone photo album integration with automatic location extraction
  • Interactive map visualization using Mapbox GL JS
  • Geolocation-based photo clustering and discovery
  • Travel route visualization with photo markers

📊 Brand New Dashboard:

  • Real-time analytics and statistics
  • Photo upload management with drag-and-drop
  • Interactive charts for photo distribution by location and time
  • Travel timeline with map integration

🛠️ Technical Stack:

  • Next.js 16 + React 19 + TypeScript
  • TanStack Query + tRPC for data layer
  • Drizzle ORM + PostgreSQL for database
  • Better Auth for authentication
  • Tailwind CSS + shadcn/ui for modern UI
  • Cloudflare R2 for image storage
  • Mapbox for mapping features

✨ Additional Improvements:

  • Modern responsive design with mobile-first approach
  • Advanced image optimization and lazy loading
  • Real-time photo metadata extraction
  • Enhanced SEO and performance optimizations

v1.0.0

12 Jun 06:16

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: https://github.com/ECarry/photography-website/commits/v1.0.0