Giter Site home page Giter Site logo

eiritana / meguca Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bakape/shamichan

0.0 1.0 0.0 93.22 MB

anonymous realtime imageboard focused on high performance, free speech and transparent moderation

License: Other

Makefile 0.60% TypeScript 26.18% JavaScript 1.56% C++ 22.16% Go 45.62% HTML 0.01% CSS 3.80% Shell 0.06%

meguca's Introduction

GoDoc Build Status

meguca

real-time anonymous imageboard focused on high performance, free speech and transparent moderation

Platforms: Linux, OSX, Win64

License: GNU AGPL

Features

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
  • Score-based antispam system
  • Optional recursive post hiding
Files and images
  • JPEG, PNG, APNG, WEBM, MP3, FLAC, MP4, OGG, PDF, ZIP, 7Z, TAR.GZ, TAR.XZ, TXT 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
  • Deleting all posts with same IP
  • Option to disable search indexing on board
  • Sticky threads
  • Public ban list
  • Public moderation log
  • Mod image spoilering
  • Image banners
  • Custom per-board loading image
  • Default board theme setting
  • Optional poster country flag display
  • Option to hide NSFW boards from /all/
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

Runtime dependencies

Building from source

A reference list of commands can be found in ./docs/installation.md

Build dependencies

  • Go >=1.9.2 (for building server)
  • Node.js >=5.0 (for building client)
  • GCC or Clang
  • make
  • pkg-config
  • pthread
  • ffmpeg >= 3.1 libraries (libavcodec, libavutil, libavformat, libswscale) compiled with:
    • libvpx
    • libvorbis
    • libopus
    • libtheora
    • libx264
    • libmp3lame
  • GraphicsMagick compiled with:
    • zlib
    • libpng
    • libjpeg
    • postscript
  • ghostscript
  • git

Linux and OSX

  • Run make

Windows

  • Install MSYS2
  • Open MSYS2 shell
  • Install dependencies listed above with the mingw-w64-x86_64- prefix with pacman
  • Navigate to the meguca root directory
  • Run make

Setup

  • See ./meguca 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
  • To enable country flags on posts download and place GeoLite2-Country.mmdb into the root directory

Development

  • Prebuilt docker development image
    • Install Docker
    • docker build -t meguca_dev . to build the image
    • docker run -t -i meguca_dev to start and login into the image
    • service postgresql start to start the database server
  • See ./docs for more documentation
  • ./meguca or ./meguca debug run the server in development mode
  • make server and make client build the server and client separately
  • make watch watches the file system for changes and incrementally rebuilds the client
  • make update_deps updates all dependencies
  • make clean removes files from the previous compilation
  • make dist_clean 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

C++ client

For developing the new C++ client

  • Run git submodule update --init --recursive
  • Install Emscripten
  • Ensure Emscripten environment variables by running source emsdk_env.sh in your shell
  • Use DEBUG=1 make wasm and make wasm_clean to compile the C++ client and clean build directories
  • To use the C++ client for meguca add the ?wasm=true query string to the end of the URL

meguca's People

Contributors

bakape avatar lalcmellkmal avatar reiclone avatar dasdgdafg avatar soreil avatar koinoaoi avatar vampiricwulf avatar the8472 avatar underr avatar madouura avatar fourfivesix avatar kipukun avatar pat36 avatar idle-z avatar kagami avatar nbotz avatar sinini avatar lightsockie avatar nehalem9001 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.