Giter Club home page Giter Club logo

tatowiki's Introduction

#Introduction to Tatowiki

Tatowiki is a wiki in c++ built upon cppcms and cppcms-skeleton, it is made for generic purpose and high performance.

Note: This software is still at a very early stage, but since April 2013, it's now have several skin and a quite neutral and responsive one, so it can start to be used by people who need a basic wiki, with high performance and a low memory-print or a wiki that display fine on a mobile phone.

Other features will be added step by step. The goal at the end is to have a complete wiki, that can easily be extended with plugins.

#Requirement for Tatowiki

To run it you need:

  • cppcms
  • cppcms-skeleton
  • sqlite3
  • discount (libmarkdown)

To compile it you need a little more

  • python3
  • cmake
  • a compiler that supports c++11
  • clang

#Installation instruction

git clone https://github.com/allan-simon/tatowiki.git
cd tatowiki/app
mkdir build ; cd build ; cmake .. ; make

After this you need to create the dabatase schema, note for the moment we only support sqlite3 and you need to create it manually

if you're in the 'build' directory, simply do

sqlite3 ../data/sqlite6.db < ../sql/sqlite3.sql

Note: Of course the name and path for the database (sqlite6.db) is purely arbitrary and can be changed without problems (you simply need to adapt your config.js)

#Configuration

Edit app/config.js according to your needs (change YOURHOST by your hostname). On a local installation, you can use a local domain such as .tato.wiki.local and define it your /etc/hosts like this.

127.0.0.1       tato.wiki.test ja.tato.wiki.test en.tato.wiki.test de.tato.wiki.test ...

If you’re using a port different than 80, make sure to specify it in the baseHost option too, like this.

{
    "service" : {
            "api" : "http",
            "port" : 8081,
            "ip" : "0.0.0.0"
    },

    /* ... */

    "baseHost" : "tato.wiki.test:8081",

    /* ... */
}

Tatowiki needs to have write access to the following directories and files:

  • The sqlite database (app/data/sqlite6.db)
  • app/data/
  • app/upload/

#Running it

./tatowiki -c ../config.js #from the build directory

#Note:

For the moment you can't run it from a raw ip address as it use a subdomain for
storing the current interface language (it will be changed in the future)

tatowiki's People

Contributors

allan-simon avatar jiru avatar qdii avatar trang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

tatowiki's Issues

URLs should look different

Links should look different whether they are:
• external links
• internal links
• internal links to non-existing pages
• internal links to pages from other languages
• internal links to non-existing pages from other languages (?)

Cache pages

As the wiki is going to be read more often that it is edited, it would be better to cache the page, in order to not regenerate everything everytime

Error 500

2013-01-21 02:42:49; cppcms, error: Caught exception [sqlite3:database is locked]

Spelling mistakes

I have read and accepted the term of use.

term → terms

This is the default main page, you can edit it byclicking on the button on the right pane

byclicking → by clicking

tatowiki only listens on local interface

reproduction steps:

  1. deploy tatowiki on a remote server, port 42000
  2. try to connect from another host
  3. notice "connection failed"
  4. create a ssh tunnel between localhost:41000: and remote:42000
  5. try and connect to localhost:41000
  6. notice that the connection is established

config.js
{
"service" : {
"api" : "http",
"port" : 42000
},
"cache" : {
"backend" : "thread_shared"
},
"http" : {
"script_names" : ["/TatoWiki"]
},
"localization" : {
"messages" : {
"paths" : [ "../locale" ],
"domains" : [ "tatowiki.dodges.it" ]
},
"locales" : [ "en_GB.UTF-8", "fr_FR.UTF-8" ]
},
"session" : {
"expire" : "renew",
"timeout" : 604800,
"location" : "server",
"server" : {
"storage" : "memory"
}
},
"TatoWiki" : {
"interfacelangs" : [
["en" , "en_GB.UTF-8", "English"],
["fr" , "fr_FR.UTF-8", "Français"],
["de" , "de_DE.UTF-8", "Deutsh"]
],
"languages" : [
["en" , "English"],
["fr" , "French"],
["de" , "German"]
],
"sqlite3" : {
"path" : "../data/sqlite6.db",
"source" : "./sql/sqlite3.sql"
},
"baseHost" : "tatowiki.dodges.it:42000"
}
}

Being able to create a version of an article in an other language

Rather than being a "hack" with the mardown format (like mediawiki does) it should be better to have "same article in different languages" link as something separate, so that it will be easier to make manipulation on this latter (like looking for popular articles not yet having a XXX language version)

Improve markdown

Extend the markdown syntax, maybe like this:
• Add article titles slugification and allow [[page name]]
as a short for [page name](page name)
• [[page name/eng]] to do link to pages from other languages
• Disallow parenthesis or other characters that could mess up with
the link syntax in article names.

Missing translations

Almost all items are not translated

  • “incorrect password”
  • "history"
  • "edit"
  • "translate"
  • "translated in"

Being able to delete an article

Note: it may be interesting to not really delete articles but to rather move them and their history / discussions to a "hidden place" (in case the delete was a mistake, or after discussion we discover that a previous version of the article was "acceptable)

We should know when there's two edition at the same time

time 1 - A edits the page XXXX
time 2 - B edits the same page
time 3 - A save the modification
time 4 - B save the modification -> he should get a message telling him that a modification has been while he was editing

Of course the best would be to tell him at the time 2 , but locking the page means to know when to unlock it, which is very hard to know (what if the browser of A crash, if he closes the page etc. the page would stay locks , and putting a timer to unlock a page would cause additional problem, what if A is still editing when its locking timer expire etc.)

Get a prettier 404 page

Though people are not supposed to arrive on such a page, the 404 error should be pretty looking and contains link to go back on "normal" pages

Error 500 upon editting a new article

the server logs

2013-01-18 23:03:39; cppcms, error: Caught exception stoi

Note that the page was added in the database despite the error.


The title of the article was:

Awesome page

The text of the article was:

#AWESOME PAGE

#cool page

[ma page trop cool](http://www.qdii.fr)
elle est **super** !

Make clean removes source files

CMakeLists.txt has references to files that are not present in the repository.

  • tests/models/articles/add_translation_link.cpp
  • tests/models/articles/articles.cpp

EDIT: those files are being deleted when "make clean" is run.

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.