A modern, open-source photography blog platform built with the latest web technologies. Share your photography journey with style and efficiency.
- 📱 Responsive design for all devices
- 🖼️ Automatic EXIF data extraction from photos
- 🔐 Secure authentication with Auth.js
- ☁️ Cloud storage with Cloudflare R2
- 🎨 Beautiful UI with Shadcn/ui components
- 🚀 Lightning-fast performance
- 📍 Location-based photo organization
- 🌐 SEO optimized
- 🎯 API powered by Hono.js
- 🌈 Dark
- 🌈 Light
- Framework: Next.js 15
- Database: Neon (Serverless Postgres)
- ORM: Drizzle
- Authentication: Auth.js
- UI Components: Shadcn/ui
- API Layer: Hono.js
- Storage: Cloudflare R2
- Deployment: Vercel
- Node.js 20+
- bun (recommended) or npm
- Neon Database
- Cloudflare R2 Account
Create a .env.local
file in the root directory:
# Database
DATABASE_URL=your_neon_database_url
# Auth
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
AUTH_SECRET=your_auth_secret
# Cloudflare R2
R2_ACCOUNT_ID=your_cloudflare_account_id
R2_ACCESS_KEY_ID=your_r2_access_key
R2_SECRET_ACCESS_KEY=your_r2_secret_key
R2_BUCKET_NAME=your_bucket_name
- Clone the repository:
git clone https://github.com/your-username/photography-website.git
cd photography-website
- Install dependencies:
bun install
- Set up the database:
bun db:push
- Start the development server:
bun run dev
Visit http://localhost:3000
to see your application.
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Feel free to open issues and pull requests.
If you find this project helpful, please give it a ⭐️ on GitHub!
// 🏞️ Photo Management
GET /api/photos // 📑 Retrieve all photos
GET /api/photos/{id} // 🔍 Retrieve a single photo
POST /api/photos // 📸 Add a new photo
PATCH /api/photos/{id} // 🖊️ Update a photo
DELETE /api/photos/{id} // 🗑️ Delete a photo