Skip to content

serika-dev/Serika.art

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

125 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎨 Serika.art

A modern, feature-rich image board platform

Next.js TypeScript MongoDB Tailwind CSS

Live Site β€’ Android App β€’ API Docs β€’ Contact


✨ Overview

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

πŸš€ Features

Core Platform

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

Content Management

  • 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

API & Integration

  • 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

πŸ“± Android App

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

πŸ› οΈ Tech Stack

Frontend

  • Next.js 16 β€” App Router & Server Components
  • React 19 β€” UI library
  • Tailwind CSS β€” Utility-first styling
  • Framer Motion β€” Animations
  • Lucide React β€” Icon set

Backend

  • MongoDB β€” Document database
  • Backblaze B2 β€” Image storage & CDN
  • Sharp β€” Image processing
  • Serika Accounts β€” Authentication service

πŸ“‹ Prerequisites

  • 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

⚑ Quick Start

1. Clone & Install

git clone https://github.com/serika-dev/Serika.art.git
cd Serika.art
npm install  # or: bun install

2. Configure Environment

Create .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.com

3. Run Development Server

npm run dev  # or: bun dev

Open http://localhost:3000 πŸŽ‰


πŸ“ Project Structure

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

πŸ”Œ API Reference

Public Endpoints

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

Authenticated Endpoints

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


πŸš€ Deployment

Vercel (Recommended)

Deploy with Vercel

  1. Click the button above or import from GitHub
  2. Configure environment variables
  3. Deploy!

Self-Hosted

# Build
npm run build

# Start production server
npm start

# Or with PM2
pm2 start npm --name "serika-art" -- start

Docker

docker build -t serika-art .
docker run -p 3000:3000 --env-file .env serika-art

πŸ”§ Troubleshooting

Backblaze 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_URI format: mongodb://localhost:27017
  • Check database user permissions if using authentication
Authentication Problems
  • Verify Serika Accounts is accessible at ACCOUNTS_URL
  • Ensure ACCOUNTS_INTERNAL_KEY matches your configuration
  • Clear browser cookies and try logging in again

🀝 Contributing

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.


πŸ“„ License

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.


Built with ❀️ by the Serika team

Website β€’ Twitter β€’ Discord

About

Modern Danbooru Clone Using Serika-Auth

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors