This is a wiki engine with markdown template. It aims for performances on low and medium scale. It aims to implement ACL, user management, internal linking, internal search, versioning, tagging&listing, and be easy to mod. https://wiki.sceptique.eu
Go to file
2017-07-02 17:51:28 +01:00
public/assets Add bootstrap, some fixes, root url redirection 2017-06-29 13:04:32 +01:00
spec Rename the project to wikicr 2017-06-29 15:00:55 +01:00
src try anoher lib. i still don't get libgit2 2017-07-02 17:51:28 +01:00
.gitignore Add user login and register (no session yet) 2017-07-01 14:43:30 +01:00
.travis.yml Initialize project 2017-04-15 12:50:08 +01:00
LICENSE Initialize project 2017-04-15 12:50:08 +01:00
Makefile Rename the project to wikicr 2017-06-29 15:00:55 +01:00
README.md Remove some log, Update README 2017-07-01 21:05:45 +01:00
shard.lock try anoher lib. i still don't get libgit2 2017-07-02 17:51:28 +01:00
shard.yml try anoher lib. i still don't get libgit2 2017-07-02 17:51:28 +01:00

wikicr

Wiki in crystal and markdown

The pages of the wiki are written in markdown and commited on the git repository where it is started.

Installation

make

Usage

wikicr --help
  -b HOST, --bind HOST             Host to bind (defaults to 0.0.0.0)
  -p PORT, --port PORT             Port to listen for connections (defaults to 3000)
  -s, --ssl                        Enables SSL
  --ssl-key-file FILE              SSL key file
  --ssl-cert-file FILE             SSL certificate file
  -h, --help                       Shows this help

Configuration

Environment variables

  • WIKI_DATA (default "data/"): set the directory where the data will be stored. It will be removed in the future for a configuation manager
  • WIKI_SECRET: random value that init the sessions (crystal eval 'require "secure_random"; puts SecureRandom.hex(64)')

Development

Operations

  • (core) View wiki pages
  • (core) Write new wiki page, edit existing ones
  • (core) Chroot the files to data/: avoid writing / reading files outside of data/
  • (core) If page does not exists, form to create it: if a file does not exist, display the edit form
  • (core) Delete pages: remove the content of a page should remove the file
  • (core) Index of pages: each modification of a page should update and index with all thes pages (with first h1 and url)
  • (core) Choose between sqlite3 and the filesystem for the index: sqlite = sql, fs = easier
  • (core) Move page (rename): box with "mv X Y" and git commit

Git

  • (git) Commit when write on a file: every modification on data/ should be commited
  • (git) List of revisions on a file (using git): list the revision of a file
  • (git) Revert a revision (avoid vandalism): button to remove a revision (git revert)

Web

  • (web) Add content table: if titles are written, give a content table with them and links to anchors
  • (web) Sitemap: add a list of all the files available
  • (web) Search a page: an input that search a page (content, title) with autocompletion
  • (web) User login / registration: keep a file with login:group:bcryptpassords
  • (web) User LDAP basic (read / write): the groups have rights on directories
  • (web) Tags for pages (index): extended markdown and index to keep a list of pages
  • (web) Template loader (files in public/): load css, js etc. from public/
  • (web) File upload and lists: page that add a file in uploads/

Advanced usage

  • (core) Extensions loader (.so files + extended markdown ?): extend the wiki features with hooks
  • (web) Configuration page: title of the wiki, rights of the files, etc. should be configurable
  • (edit) Handle [[tag]]: markdown extended to search in the page index (url and title)
  • (conf) Handle environemnt variables in a .env file

Other

Contributing

  1. Fork it ( https://github.com/Nephos/wikicr/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

  • Nephos Arthur Poulet - creator, maintainer