A full-stack photo album solution that integrates AI intelligent processing, browser image compression, and other functions.
- 📷 Image upload and display with
hubBlob() - 🌐 Cloud Storage: Blob powered by NuxtHub (cloudflare R2)
- 🤖 AI Integration: Support for OpenAI and Gemini for intelligent image processing
- 🗜️ Image Compression: Multiple format support (JPEG, WebP, AVIF) with JSQuash
- 🎨 Modern UI: Beautiful components with shadcn-vue and inspira-ui
- 🏃🏻 View transition API The View Transitions API provides a mechanism for easily creating animated transitions between different DOM states while also updating the DOM contents in a single step
- 🔑 Nuxt Auth Utils Minimalist Authentication module for Nuxt exposing Vue composables and server utils
- NuxtHub - A Nuxt toolkit to build fullstack applications on the edge
- UnoCSS - The instant on-demand atomic CSS engine
- shadcn-vue - Beautifully designed components built with Reka UI and Tailwind CSS
- inspira-ui - Collection of beautiful UI components to build stunning animated interfaces
- VueUse - Collection of useful composition APIs
- ESLint with @nuxt/eslint-config, single quotes, no semi
- TypeScript
You can deploy this project on your Cloudflare account for free using NuxtHub.
- Make sure you have a Cloudflare account and R2 plan.
- fork this repository to your own GitHub account.
- Go to NuxtHub and sign in with your GitHub account.
- Click on the "Deploy" button and select your forked repository.
- Configure the environment variables as needed.
Note
If Github Actions created but not triggered, you can create a new commit to trigger the deployment (like modify README.md and commit).
npx nuxthub deployIt's also possible to leverage Cloudflare Pages CI for deploying, learn more about the different options on https://hub.nuxt.com/docs/getting-started/deploy
Learn more about remote storage on https://hub.nuxt.com/docs/getting-started/remote-storage
NUXT_ADMIN_PASSWORD(required) - A password to access the admin panel and upload images, will default toadminif not provided.NUXT_SESSION_PASSWORD(required) - A secret key for session encryption used by nuxt-auth-utils, will be generated automatically if not provided in development mode.NUXT_PUBLIC_TITLE- The title of the application, will default toExif Gallery Nuxtif not provided.NUXT_PUBLIC_DESCRIPTION- The description of the application, will default toA full-stack photo album solution that integrates AI intelligent processing, browser image compression, and other functionsif not provided.
- Clone this repository to your local machine.
- Install dependencies using the command
pnpm installor your favorite package manager. - Run the application with the command
pnpm devor your favorite package manager.
If you don't have pnpm installed, run:
corepack enable pnpm
pnpm devOnce you deployed your project, you can connect to your remote database locally running:
pnpm dev --remoteContributions are welcome! Feel free to open an issue to report a bug or submit a feature request via a pull request.
Thanks to exif-photo-blog Thanks to nuxt-image-gallery
