ShutterHub is a platform designed for photographers and event organizers to manage, showcase, and monetize their content. The platform includes user registration, content uploads, search functionality, and payment processing.
- Simplify photo sharing and selling.
- Provide a seamless user experience for both creators and buyers.
- Integrate with scalable third-party services like Vercel, Supabase, AWS, Cloudflare, and Midtrans.
- Event organizers (e.g., fun runs, weddings).
- Professional photographers and content creators.
- Individuals looking to purchase high-quality images.
-
User Authentication:
- Authentication system uses Better-Auth for enhanced security and simplicity.
- Email-based registration and login.
- Social login options (Google, Facebook, etc.).
- Password reset with email verification.
-
Profile Management:
- Editable user profiles with unique URLs (e.g.,
sh.id/<username>
). - Profile picture uploads.
- Editable user profiles with unique URLs (e.g.,
-
Content Management:
- Image uploads with metadata (tags, descriptions, etc.).
- Folder and subfolder organization.
- Image watermarking using Cloudflare Workers.
-
Search Functionality:
- Advanced search with filters (e.g., tags, prices, dates).
- Face Based Search
-
E-Commerce:
- Shopping cart for users to add and purchase content.
- Secure payment processing via Midtrans.
- Order history for users.
-
Balance Management:
- Top-up functionality integrated with Midtrans.
- Transaction records for transparency.
-
Dashboard:
- Metrics for creators (e.g., sales, views).
- Admin dashboard for managing users and content.
- Notifications via email (using Resend).
- Analytics tracking for user engagement.
- SEO optimization with meta tags and clean URLs.
- Framework: SvelteKit
- Styling: TailwindCSS
- State Management: Svelte Store
- Database: Supabase
- ORM: Prisma
- Server: Node.js (with SvelteKit server-side rendering)
- File Storage: Cloudflare R2.
- Payments: Midtrans.
- Email: Resend.
- Image Optimization: Cloudflare Workers (for resizing & watermarking).
- Image Search by face: AWS Recognition
- Hosting: Vercel
- DNS: Cloudflare
- CI/CD: GitHub Actions
- User signs up via email or social login.
- A confirmation email is sent to activate the account.
- Users complete their profile (add profile picture, set username, etc.).
- Creator uploads images to Cloudflare R2.
- Metadata (e.g., tags, price, and location) is added during the upload process.
- Watermarked versions are generated via Cloudflare Workers.
- Content is organized into Space.
- User enters search query.
- AWS Recognition returns relevant results based on metadata and similarity.
- Results are displayed with filters and sorting options.
- User adds content to the cart.
- Midtrans processes the payment.
- Order details are stored in the database.
- Users can download purchased content.
model User {
id String @id @default(uuid())
username String @unique
email String @unique
passwordHash String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
roles UserRole[]
profile Profile?
sessions Session[]
socialLogins SocialLogin[]
credits Balance?
transactions Transaction[]
orders Order[]
Space Space[]
}
model Content {
id String @id @default(uuid())
src String
fileName String
originalFileName String
fileId String
size Int
height Int
width Int
price Decimal
tags Json?
faceDetection FaceDetection[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
space Space? @relation(fields: [spaceId], references: [id])
spaceId String?
Cart Cart[]
}
- Order: Tracks user purchases.
- Balance: Manages user top-ups and withdrawals.
- Transaction: Logs payment activities.
- User authentication and profiles.
- Content upload and organization.
- Basic search functionality.
- Payment integration.
- Watermarking and image optimization.
- Dashboard for metrics and analytics.
- Advanced search with AWS Recognition.
- SEO improvements.
- Improved caching and performance.
- Multi-language support.
- Mobile app integration.
- Finalize database schema and initial setup.
- Implement user authentication.
- Develop content upload and organization features.
- Integrate Cloudflare and Midtrans Payment.
- Implement basic search functionality.
- Integrate AWS Recognition.
- Deploy MVP version on Vercel.