A modern, feature-rich image board platform
Live Site β’ Android App β’ API Docs β’ Contact
Serika.art is a clean, modern Danbooru-style image board built from the ground up with Next.js 16. It features a beautiful responsive UI, comprehensive tagging system, user authentication via Serika Accounts, and a native Android app for mobile users.
| πΌοΈ Gallery | π Search | π± Mobile |
|---|---|---|
| Browse thousands of curated images | Powerful tag-based filtering | Native Android app available |
| Feature | Description |
|---|---|
| π¨ Modern UI | Beautiful, responsive design with dark mode and smooth animations |
| π Authentication | Secure login via Serika Accounts (accounts.serika.dev) |
| π€ Image Upload | Drag-and-drop upload with automatic thumbnail generation |
| π·οΈ Smart Tagging | Comprehensive tag system with auto-suggestions and categories |
| π Advanced Search | Filter by tags, rating, AI status, date, and more |
| β Interactions | Upvote, downvote, favorite, and comment on images |
| π€ User Profiles | Customizable profiles with upload history and favorites |
| π€ AI Detection | Mark and filter AI-generated content |
- Rating System β Safe, Questionable, and Explicit content ratings
- Artist Pages β Dedicated pages for artists with their full portfolio
- Tag Wiki β Community-maintained tag descriptions and guidelines
- DMCA Handling β Built-in copyright claim processing system
- Moderation Tools β Admin panel for content moderation and user management
- RESTful API β Full API access for third-party integrations
- API Keys β Generate personal API keys for programmatic access
- Danbooru Import β Import metadata and images from Danbooru
- Webhook Support β Receive notifications for uploads and interactions
A native Android app is available for mobile users:
- Download APK β Get the latest release
- Built with Kotlin & Jetpack Compose
- Material You design language
- Offline favorites support
- Push notifications
|
|
- Node.js 18+ or Bun 1.0+
- MongoDB 6.0+ (local or Atlas)
- Cloudflare R2 bucket (or compatible S3 storage)
- Serika Accounts instance for authentication
git clone https://github.com/serika-dev/Serika.art.git
cd Serika.art
npm install # or: bun installCreate .env.local with your credentials:
# Serika Accounts
ACCOUNTS_URL=https://accounts.serika.dev
ACCOUNTS_INTERNAL_KEY=your-internal-key
NEXT_PUBLIC_ACCOUNTS_URL=https://accounts.serika.dev
# MongoDB
MONGO_URI=mongodb://localhost:27017
MONGO_DB=serika-art
# Cloudflare R2
R2_ACCOUNT_ID=your-account-id
R2_ACCESS_KEY_ID=your-access-key
R2_SECRET_ACCESS_KEY=your-secret-key
R2_BUCKET_NAME=serika-art
R2_CUSTOM_DOMAIN=cdn.yourdomain.comnpm run dev # or: bun devOpen http://localhost:3000 π
serika.art/
βββ app/ # Next.js App Router
β βββ api/ # API routes
β β βββ images/ # Image CRUD operations
β β βββ upload/ # File upload handling
β β βββ tags/ # Tag management
β β βββ vote/ # Voting system
β β βββ ...
β βββ image/[id]/ # Image detail page
β βββ artist/[tagName]/ # Artist portfolio page
β βββ tags/ # Tag browser
β βββ upload/ # Upload form
β βββ admin/ # Admin dashboard
β βββ ...
β
βββ components/ # React components
β βββ ui/ # Shadcn/ui components
β βββ Navbar.tsx # Navigation bar
β βββ ImageCard.tsx # Image grid cards
β βββ ...
β
βββ lib/ # Utilities & services
β βββ db.ts # MongoDB connection
β βββ r2.ts # Cloudflare R2 client
β βββ auth.ts # Authentication helpers
β βββ models.ts # TypeScript interfaces
β
βββ android/ # Native Android app
β βββ ... # Kotlin + Jetpack Compose
β
βββ public/ # Static assets
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/images |
List images with pagination & filters |
GET |
/api/images/[id] |
Get single image details |
GET |
/api/tags |
Search and list tags |
GET |
/api/artists |
List artists |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/upload |
Upload new image |
POST |
/api/vote |
Vote on an image |
POST |
/api/favorite |
Toggle favorite status |
GET |
/api/users/[id]/favorites |
Get user's favorites |
π Full API documentation available at serika.art/api-docs
- Click the button above or import from GitHub
- Configure environment variables
- Deploy!
# Build
npm run build
# Start production server
npm start
# Or with PM2
pm2 start npm --name "serika-art" -- startdocker build -t serika-art .
docker run -p 3000:3000 --env-file .env serika-artBackblaze B2 Upload Issues
If you encounter upload failures:
- Verify B2 application key ID and secret are correct
- Ensure bucket name and endpoint are properly configured
- Use Node.js 18+ for better TLS support
- Check firewall/VPN isn't blocking Backblaze
- Verify bucket CORS settings allow your domain
MongoDB Connection Issues
- Ensure MongoDB is running:
systemctl status mongod - Verify
MONGO_URIformat:mongodb://localhost:27017 - Check database user permissions if using authentication
Authentication Problems
- Verify Serika Accounts is accessible at
ACCOUNTS_URL - Ensure
ACCOUNTS_INTERNAL_KEYmatches your configuration - Clear browser cookies and try logging in again
While this project uses a source-available license that restricts commercial use, we welcome:
- π Bug reports and feature requests via Issues
- π Documentation improvements
- π Translation contributions
Please read the LICENSE carefully before contributing.
Source Available License
This software is provided for viewing, educational, and personal use. You may:
- β View and study the source code
- β Fork for personal, non-commercial experimentation
- β Deploy locally on your private network (not exposed to the internet)
- β Submit bug reports and suggestions
You may NOT:
- β Use this software for commercial purposes
- β Deploy this software publicly on the internet
- β Use tunneling services (ngrok, Cloudflare Tunnel, etc.) to expose it
- β Redistribute or sublicense this software
- β Create derivative works for distribution
See the full LICENSE file for complete terms.