Skip to content

magicxor/Hikkaba

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

493 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hikkaba [pre-alpha]

build and push docker image Coverage Badge Ask DeepWiki

Hikkaba is an imageboard written using ASP.NET Core and Entity Framework Core, designed with minimal JavaScript usage.

Features

Core Functionality

  • Multiple files per post: Supports attaching various file types:
    • Audio
    • Video
    • Pictures
    • Documents
  • SAGE support: Prevents thread bumping on reply
  • Search: Allows full-text searching through posts
  • Server-side paging: Efficiently handles navigation through category indexes (Sakura.AspNetCore.PagedList)
  • Thread-local user hashes: Option to display unique user identifiers (Blake3.NET)
  • Docker support: Ready for containerized deployment
  • Thread archiving
  • API for third-party integration
  • Internationalization (multi-language support)
  • User-created boards
  • Virtual /all category (shows threads from all non-hidden categories)
  • Tor and I2P network support

Content & Formatting

  • Thumbnail generation: Creates thumbnails for image and video files (ImageSharp)
  • BBCode markup: Supports common formatting tags (BBCodeParser):
    • [b], [i], [u], [s], [code], [sub], [sup], [spoiler], [quote]
    • >>postId - Creates a link to another post within the same thread
  • URI detection: Automatically converts http://, https://, and ftp:// links
  • Timezone display: Shows post datetimes adjusted to the current user's timezone (Moment.js)
  • Post backlink display (shows replies to a post)
  • Country flag display (using GeoIP)
  • User agent icon display (e.g., browser type or OS type) (HttpUserAgentParser)
  • Audio metadata display (Audio Tools Library)
  • Media gallery view
  • Content embedding (YouTube, Vimeo, Coub, Twitter, Instagram, etc.)
  • Detection of duplicate attachments within a thread
  • Tripcodes
  • Visual style/theme switching
  • Post reactions (e.g., likes, dislikes, etc.)
  • User post highlighting (on hash click)
  • Long message truncation
  • Automatic reply fetching

Storage

  • Multiple storage backends: Flexible file storage options (20|20 Storage):
    • Local File System (default)
    • Azure Blob Storage
    • Amazon S3
    • Google Cloud Storage

Moderation & Administration

  • Captcha: Protects against automated posting (DNTCaptcha.Core)
  • Administration panel
  • Per-category moderator assignments
  • Moderation functions
  • Ban system: Supports banning by IP address or range
    • Board-wide or category-specific bans
    • Options for post deletion upon banning: single post, all posts in the category, or all posts board-wide
  • Thread locking: Prevents further replies
  • Thread stickying: Pins threads to the top
  • Identity lockout (Account security feature)
  • Two-factor authentication (TOTP)
  • Passcodes (user captcha bypass)
  • Password-based post deletion
  • Post reporting system
  • DNSBL integration (spam prevention)
  • Thread moving (between boards)
  • Modlog (audit trail for staff actions)
  • Wordfilter (regex support, configurable actions: replace, hide, deny)

Limits & Configuration

  • Custom attachment count limit per post
  • Maximum size per individual file attachment
  • Maximum total size of all attachments per post
  • Custom maximum number of threads per category
  • Allowed file extensions filter
  • Bump limit (per category and/or per thread)
  • Cycling thread mode (deletes old posts when limit is reached)

Observability

Testing

Screenshots

Home page

home

Reply form

reply form

Board category

category

Search

search

Usage

Database migrations can be applied using the following command:

dotnet ef database update --project Hikkaba.Data --startup-project Hikkaba.Web --connection "Server=tcp:localhost,41443;Encrypt=False;Database=Hikkaba;User ID=SA;Password=YOUR_PASsWORD;Persist Security Info=False;TrustServerCertificate=True;MultiSubnetFailover=True"

Run the application using:

dotnet run --project Hikkaba.Web

Seed the database with test data using:

$headers=@{}
$headers.Add("content-type", "application/json")
$response = Invoke-WebRequest -Uri 'http://localhost:5000/api/v1/maintenance/seed?key=YOUR_KEY' -Method POST -Headers $headers