FotoBucket is a personal AI-powered photo organizer for mobile. Users import photos from their device's camera roll into the app and the AI handles all the sorting automatically.
When a photo is imported, Google Cloud Vision analyzes the image and generates descriptive labels. Those labels are then passed to Gemini (Google) which decides whether the image fits an existing bucket or whether a new bucket should be created. Bucket names are generated by Gemini based on the content of the images inside them. As more photos are uploaded, the AI continuously re-evaluates and refines the bucket organization.
Users also have manual control — they can rename any AI-generated bucket, create their own buckets with custom names, and Gemini will respect those buckets when sorting future uploads, treating them as valid destinations alongside the ones it created itself.
The goal is a zero-effort photo organization experience where the user never has to manually sort anything. The more photos imported, the smarter and more personalized the organization becomes.
Core Technologies Frontend: React Native with Expo Backend: Supabase Edge Functions (TypeScript/Deno) Storage & Database: Supabase Image Analysis: Google Cloud Vision API AI Decision Making: Gemini (Google)
snapbucket/
├── app/
│ ├── assets/
│ ├── components/
│ ├── screens/
│ └── app.tsx
├── supabase/
│ └── functions/
│ └── categorize-image/
│ └── index.ts
├── .env
├── .gitignore
└── LICENSE
- Clone the repo
- Install Expo CLI:
npm install -g expo-cli - Install dependencies:
npm install - Create a Supabase project and grab your project URL and service key
- Enable the Google Cloud Vision API and grab your API key
- Enable the Gemini API and grab your API key
- Add your keys to
.env: - Deploy the edge function:
npx supabase functions deploy categorize-image - Run the app:
npx expo start
🚧 In progress