GithubHelp home page GithubHelp logo

bradkml / kotoba.js Goto Github PK

View Code? Open in Web Editor NEW

This project forked from wagonofdoubt/kotoba.js

0.0 0.0 0.0 12.92 MB

Yet another imageboard engine

License: MIT License

JavaScript 73.76% HTML 19.38% CSS 6.79% Shell 0.03% Dockerfile 0.04%

kotoba.js's Introduction

ことば.js

kotoba logo

Yet another imageboard engine written with node.js

This project is in active development. Most things are not implemented, so don’t try to use this in production yet. Pull requests are welcome.

Core design ideas

Despite the fact that there are many modern imageboard engines, obsolete engines like Wakaba, Kusaba and their forks are still very popular choice even for new imageboards. Those classic engines have minimal, yet sufficient set of features and familiar look. However, they have code that is no longer supported, written for obsolete versions of interpreters, don’t follow commonly accepted standards, have known unfixed bugs, and very hard to maintain. Most of them have HTML that still uses tables for layout and CSS that is not optimized for mobile. Last, but not least, installation and deployment can be a nightmare, especially for unexperienced users, with vague installation instructions and undocumented dependencies.

The goal of this project is to create feature-rich engine that looks and feels very familiar, but does not have the issues of classic imageboard engines. The ease of administration is highest priority. The installation process is automated and just cannot be easier; all customization is accessible through admin panel – no more source files editing for basic configuration. Kotoba.js can be deployed on almost any hosting and works right away out of the box.

Kotoba.js principles:

  • Frontend should be compatible with most standard Wakaba/Kusaba based imageboards, therefore third-party code like Dollchan Extension Tools and Overchan-Android require minimal modifications.
  • However, third party tools should not be necessary as most of features that they add are implemented in engine itself.
  • Templates must generate valid HTML5, use semantic elements and provide machine-readable output as much as possible.
  • Basic features like posting and reading should work without JavaScript enabled in browser.
  • Containerized application easy to deploy and get up and running. Easiest installation with no special skills required.
  • It should be highly customizable and user-friendly.

TODO

  • posts deletion
  • staff permissions system
  • bans and moderation features
  • auto-update and notifications
  • replies map
  • personal settings stored on server

License

MIT

How to run

  • install Docker and Docker Compose
  • git clone https://github.com/WagonOfDoubt/kotoba.js.git
  • cd kotoba.js
  • docker-compose up
  • go to localhost/manage/registration and create your admin account
  • add any news to generate main page, add some boards and tweak other settings, have fun.

Note that kotoba.js will run in development mode. Do not try to use this in production.

How it works

This containerized application consists of 3 main containers: nginx web server, node application, and mongo database. Relationships between containers are shown below.

+----------------------------------------------------------------------+
|                 +--------------------------------------------------+ |
|                 |                                                  | |
|      +----------+---------+                                        | |
|      |                    |       Saves files to                   | |
|      |  html folder       +<----------------------------+          | |
|      |  (shared volume)   |                             |          | |
|      |                    +------+                      |          | |
|      |                    |      | Serves files from    |          | |
|      +----------+---------+      |                      |          | |
|                 |                V                      |          | |
|                 |         +------+------+        +------+-----+    | |
|                 |         |    Nginx    |        |  Node app  |    | |
<---------------->|<------->|   reverse   |  api   |            |    | |
|     Requests 80 | Port 80 |80  proxy    |requests|            |    | |
<---------------->|<------->|        3000 +<------>+ 3000       |    | |
|                 |         |             |        |            |    | |
|                 |         +-------------+        |    27017   |    | |
|                 |                                +------+-----+    | |
|                 |         +-------------+               ^          | |
|                 |         |   MongoDB   |               |          | |
|                 |         |             |               |          | |
|                 |         |      27017  +<--------------+          | |
|                 |         |             |                          | |
|                 |         |             |                          | |
|                 |         +-------------+                          | |
|                 |Docker                                            | |
|Docker Host      +--------------------------------------------------+ |
+----------------------------------------------------------------------+

The main node app handles api requests, modifies database and generates static html files which are saved to /html folder and served to end user by nginx web server.

kotoba.js's People

Contributors

wagonofdoubt avatar mithgol avatar dependabot[bot] 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.