Platforms: Linux, OSX, Win64
License: GNU AGPL
Posts and posting
- Character by character post updates
- Hovering quick reply for post authoring
- Dice roll, coin flip and eightball commands
- Desktop notifications and "(You)" links on quote
- Post link hover previews, including cross-thread
- Inline post link expansion
- Optional relative post timestamps
- Non-temporal and recursive post linking
- No posts per thread or threads per board limit
- Forced anonymity display mode
- Post hiding
- Option to display only the last 100 posts in a thread
- Optional automatic deletion of unused threads and boards
- Automatic URL linkification
- Automatic intelligent quoting of selected text, when quoting a post
- Live programming code tags with syntax highlighting
- Automatic open post recovery after a disconnect
- Toggleable non-live post creation
- Keyboard post navigation
- Explicitly visible sage
- Responsive seen post detection
Files and images
- JPEG, PNG, APNG, WEBM, MP3, MP4, OGG, PDF, ZIP, 7Z, TAR.GZ and TAR.XZ are supported
- Transparent PNG and GIF thumbnails
- Configurable size limits
- Inbuilt reverse image search
- No file is ever thumbnailed or stored twice, reducing server load and disk space usage
- Any file already present on the server is "uploaded and thumbnailed" instantly
- Title metadata extraction
- Gallery mode
Performance
- Low memory and CPU usage
- No frameworks and optimized code on both client and server
- File upload processing written in C with GraphicsMagick and ffmpeg
- Inbuilt custom multi-level LRU cache
Client UI
- Works with all modern and most outdated browsers (such as PaleMoon)
- Works with JavaScript disabled browsers
- Multiple themes
- Custom user-set backgrounds and CSS
- Mascots
- Configurable keyboard shortcuts
- Work mode aka Boss key
- Customisable top banner board link list
- Optional animated GIF thumbnails
- Settings export/import to/from JSON file
Board administration/moderation
- Support for both centralized and 8chan-style board ownership
- Global admin -> users notification system
- User board creation and configuration panels
- 4 tier staff system
- Board-level and global bans
- Transparent post deletion
- Viewing of all post made by same IP
- Option to disable search indexing on board
- Sticky threads
- Public ban list
- Public moderation log
Internationalization
- Client almost entirely localized in multiple languages
- More languages can be added by editing simple JSON files
Miscellaneous
- Documented public JSON API
- Optional R/a/dio Now Playing banner
- Synchronized time counters (for group watching sessions and such)
- Thread-level connected unique IP counter
- Internal captcha system
- PostgresSQL >= 9.5
- ffmpeg >= 3.0 shared libraries (libavcodec, libavutil, libavformat) compiled with:
- libvpx
- libvorbis
- libopus
- libtheora
- libx264
- libmp3lame
- GraphicsMagick shared library compiled with:
- zlib
- libpng
- libjpeg
- postscript
A reference list of commands can be found in ./docs/installation.md
- Go >= 1.8 (for building server)
- Node.js >= 5.0 (for building client)
- GCC or Clang
- git
- make
- pthread
- pkg-config
- ffmpeg and GraphicsMagick development files
- Run
make
- Install MSYS2
- Open MSYS2 shell
- Install dependencies listed above with the
mingw-w64-x86_64-
prefix with pacman - Navigate to the cutechan root directory
- Run
make
- See
./cutechan help
for server operation - Login into the "admin" account via the infinity symbol in the top banner with the password "password"
- Change the default password
- Create a board from the administration panel
- Configure server from the administration panel
- See
./docs
for more documentation ./cutechan
or./cutechan debug
run the server in development modemake server
andmake client
build the server and client separatelymake watch
watches the file system for changes and incrementally rebuilds the clientmake update-deps
updates all dependenciesmake clean
removes files from the previous compilationmake distclean
in addition to the above removes uploaded files and their thumbnails- To enable using Go tools in the project add the absolute path of
./go
to your$GOPATH
environment variable