Giter Site home page Giter Site logo

matterwiki / matterwiki Goto Github PK

View Code? Open in Web Editor NEW
2.1K 61.0 176.0 7.88 MB

A simple and beautiful wiki for teams

Home Page: http://matterwiki.com

License: MIT License

JavaScript 81.65% HTML 0.92% CSS 16.52% Python 0.91%
wiki javascript react knowledgebase node collaboration wiki-engine matterwiki

matterwiki's Introduction

⚠️ Warning

Expect some things to be broken as we're actively working on a stable v0.3.0 release. Although the master branch is expected to work fine, we'd suggest you to wait until everything is completed.

If you'd like to help, drop in on any of the issues or pull requests, or email one of

  • na[dot]nishantarora[at]gmail[dot]com
  • hpkrishna07[at]gmail[dot]com

You can also get a preview of the next version on the v0.3.0/refactor branches


What is a wiki?

A website or database developed collaboratively by a community of users, allowing any user to add and edit content. Example: Wikipedia

Why do you need a wiki?

As your company grows it becomes difficult to keep track of all the knowledge in your team. It is difficult to communicate every detail about the company policies to new team members. Things get lost in Slack channels. It becomes difficult to keep things in context.

A wiki helps you keep track of all this information. Every article is filed under a topic to keep things organised among departments. Everything is transparent, who made what changes to which document and when.

Why Matterwiki?

Wiki softwares are too complicated for small teams. Matterwiki is just that, a simple wiki for teams to store and collaborate on knowledge. People use it to store documentation, notes, culture guidelines, employee onboarding content and everything else they want to.

Setup Instructions:

You need to have Node (version 7 or above) and npm installed on your system.

  1. Clone this repository git clone http://github.com/matterwiki/matterwiki
  2. Run npm install
  3. Edit config.js (present in the project root) and change the auth_secret value with any secret phrase. NOTE: This phrase will be used to encode and decode your access tokens. Keep it safe and private
  4. run npm run build
  5. At this point, running this with a process manager like PM2 would ensure that this is a background process and doesn't die out. A sample way of starting the app would be:
NODE_ENV=production PORT=8000 pm2 start index.js --name "matterwiki"

Some points to note here :

  • NODE_ENV could take one of these two values, dev or production.
  • PORT is optional. If it is not specified, then 5000 would be used.

However, if you do not need all this, running npm start should boot up the production build of the app. 6. Head to yoururl.com/#/setup and create the Admin account.

Replace yoururl.com with your URL. If you're running locally, replace with localhost:5000 7. Login with your new admin account and head to the Admin dashboard. 8. Create topics and add users to your Wiki.

NOTE - Using MySQL


By default Matterwiki uses **Sqlite**, which is a lightweight database management system perfect for an internal wiki. If your team size is huge and you need a concurrent and flexible DBMS you can change the config to use **MySQL**. As we use `Knex` as a query builder all you have to do use MySQL is to change the db object in `knexfile.js` (found the app root directory). Using MySQL requires MySQL 5.6.5 as a minimum.
  1. First setup MySQL

  2. Install mysql from npm

    npm install mysql
    
  3. Change the object from

module.exports = {
  client: 'sqlite3',
  connection: {
    filename: "./db/matterwiki.sqlite"
  },
  useNullAsDefault: true
}

to

module.exports = {
  client: 'mysql',
  connection: {
    host : '127.0.0.1',
    user : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test'
  },
  useNullAsDefault: true
}

Run with Docker:

You can run MatterWiki with Docker.

  1. Clone this repository git clone http://github.com/matterwiki/matterwiki
  2. Run docker build -t matterwiki .
  3. Start a docker container with docker run --name=matterwiki -p 5000:5000 matterwiki

You can add -v /<path>/db:/server/db to store the db on the host filesystem, and -v /<path>/config.js:/server/config.js to specify your own JWT secret configuration. Add --restart=always -d options to run it as a daemon.

Under the hood

Matterwiki uses a Node.js API with a React.js front-end and Sqlite3 for the database.

As the app is built atop a JSON API, it is simple to integrate your Wiki with your mobile app or blog. For more, read the API documentation.

Like it?

⭐ this repo

Found a bug?

Raise an issue!

Want to contribute?

We welcome all kinds of contributions. It doesn't matter if it's a grammar fix, or some refactoring, or an even an entire UI overhaul. So help us improve Matterwiki for everyone. Take a look at our contributing document for understanding local development setup and the code base.

Feature requests?

Before you create a new feature request please check our public roadmap for the v0.3.0 release. It lists the features we're currently working on. The issues tagged with the backlog label are next in line.

  • If you see we're already working on your feature, head to the issue relating to that and give a thumbs up.
  • If your feature is something that hasn't been requested yet, please create an issue.

Screenshots





Prior art

If you want to explore alternatives here are some other Wikis we love.

We're also referring to them for inspiration as we go along.

  1. Tettra, another simple wiki (comes with Slack integration) [PAID].
  2. Jingo, another Node.js based Wiki based on Git.
  3. MediaWiki, the code that powers Wikipedia.
  4. Dokuwiki, simple text file based wiki

matterwiki's People

Contributors

agezao avatar alexandermoskovkin avatar blupdew avatar ewert-online avatar k1ngf15h3r avatar krishnagopinath avatar miherlosev avatar nshntarora avatar otherjustin avatar siddharthkp avatar sujaykundu777 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

matterwiki's Issues

Feature request: Allow sorting articles inside topic

Currently the articles are only sorted by date of last change. For some topics it would be better to have also a manual or alphabetic sorting available to structure the content better (e.g. sorting by importance)

build script failing

npm run build - failed with the following error. MacBookPro

<replaced the folder path by ~/app in the logs below.>

`

[email protected] build ~/app/Matterwiki
cross-env NODE_ENV=production webpack --config ./webpack.config.prod.js --progress --profile --colors

/app/Matterwiki/node_modules/cross-env/dist/index.js:58
var envVars = Object.assign({}, process.env);
^
TypeError: Object function Object() { [native code] } has no method 'assign'
at getCommandArgsAndEnvVars (/app/Matterwiki/node_modules/cross-env/dist/index.js:58:24)
at crossEnv (/app/Matterwiki/node_modules/cross-env/dist/index.js:22:35)
at Object. (/app/Matterwiki/node_modules/cross-env/bin/cross-env.js:3:19)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3

npm ERR! [email protected] build: cross-env NODE_ENV=production webpack --config ./webpack.config.prod.js --progress --profile --colors
npm ERR! Exit status 8
npm ERR!
npm ERR! Failed at the [email protected] build script.
npm ERR! This is most likely a problem with the Matterwiki package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! cross-env NODE_ENV=production webpack --config ./webpack.config.prod.js --progress --profile --colors
npm ERR! You can get their info via:
npm ERR! npm owner ls Matterwiki
npm ERR! There is likely additional logging output above.
`

Nothing happens after node index

I've run the following but now nothing happens anymore.

npm run build
> [email protected] build /var/www/vhosts/fachinformatiker-wiki.de/httpdocs/matterwiki
> webpack -p
> Hash: 01c87c3d8a7aa4a49157
> Version: webpack 1.13.2
> Time: 14783ms
    Asset    Size  Chunks             Chunk Names
> bundle.js  369 kB       0  [emitted]  main
    + 262 hidden modules
node index
> The magic is happening on port 5000

Calling my url turns out in "403 Forbidden"

Feature request: Live demo

Creating a live demo that can be interacted with at first, would definitely help people getting to know the platform before installation.

Might even be some sort of read-only if easier/possible, just to give the reader an idea of how it all works.

This issue has been mentioned on both Reddit and Producthunt, just thought I would add it properly here as well to help track it :)

e2e tests

Matterwiki is a complex application.
I propose to write e2e tests and setup CI on travis or appveyor.
I can do this using testcafe.
What do you think about it?

Search function

Would love to have a search function to search across all categories for a certain article.

What do you think?

Translation

Are there any plans for translation or can I make translations for my own?

Would like to use matterwiki in german ...

User system

When do you release the user system, for example, change password.

[email protected] does not satisfy

[email protected] wants webpack@^2.2.0

npm verb cwd /home/landyu/work/matterwiki
npm ERR! Linux 3.11.0-15-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "--verbose"
npm ERR! node v4.7.0
npm ERR! npm  v2.15.11
npm ERR! code EPEERINVALID

npm ERR! peerinvalid The package [email protected] does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer [email protected] wants webpack@1 || ^2.1.0-beta || ^2.2.0-rc.0
npm ERR! peerinvalid Peer [email protected] wants webpack@1 || 2 || ^2.1.0-beta || ^2.2.0-rc
npm ERR! peerinvalid Peer [email protected] wants webpack@^2.2.0

Setup issues

I didn't see this in the readme and I think it could be useful to others. I followed your setup instructions on a fresh Ubuntu box, and besides a few dependency problems (the sqlite version was incompatible with the node version), the only real problem I have is that the server doesn't stay "online". I don't know if you have a recommendation for this but if you have any tips on how to get this to stay up I'd love to hear it. I don't know if maybe I did something wrong, maybe I need to set up some kind of uptime daemon, or what, but I constantly have to ssh into the box and run node index to start the server up again. Also, it defaulted to port 5000 and I couldn't find in the readme where to change this default port. Any tips for these 2 issues?

Unable to create first account

Hi,

Ive just installed following your guide. However when browsing to: 127.0.0.1:5000/#/setup. I get sent to the login page :(

How can I create the first user?

Thanks
Dan

[build request] GUI version for Windows

The project is really unfriendly for many Windows users, especially for those who know little about programming: they may use this for introducing their college societies, prepare their company introductions, etc.

feature request: public pages

There are some pages that can/should be public (even for teams)

Example:

  1. What is this project?
  2. How can I join this doc/get an account?

Feature request: Refuse to start with default signing secret

The application should refuse to start with the "factory default" signing secret, in order to prevent users who don't understand JWT from accidentally breaking the authentication system. This could alternatively only be enforced if the listening address isn't local host, which may be a good compromise to ease the development process.

Passwords not being hashed when updating user details

Updated user account details and was surprised to find that, instead of what I assume a bcrypt'ed password I found it sitting in the db in plaintext.
I'm using MySQL btw with the latest Matterwiki version on Ubuntu Xenial.

Failed at the [email protected] install script 'node-gyp rebuild'.

Hi there,

I've set up a fresh Ubuntu 16.04 server with npm version 3.5.2 and nodes 4.2.6.

Error

npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the bcrypt package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs bcrypt
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls bcrypt
npm ERR! There is likely additional logging output above.

Log

I've also attached the nom-log from the matter wiki directory.
npm-debug.log.zip

Firebase hosting support

It would be great if we can support hosting on Firebase. If we already support that, it would be great if you can show me how, or link me some reference that I can find out how to do it by myself.
Thanks !

Error when running knex migration with MySQL

I'm getting the following error when attempting to run the wiki configured with MySQL:

Knex:warning - migrations failed with error: create table `articles` (`id` int unsigned not null auto_increment primary key, `title` varchar(255), `body` text, `created_at` timestamp not null default
(datetime(CURRENT_TIMESTAMP,'localtime')), `updated_at` timestamp not null default (datetime(CURRENT_TIMESTAMP,'localtime'))) - ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(datetime(CURRENT_TIMESTAMP,'localtime')), `updated_at` timestamp not null defau' at line 1
Unhandled rejection Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(datetime(CURRENT_TIME
STAMP,'localtime')), `updated_at` timestamp not null defau' at line 1

Any thoughts? Could it be the function in misc.js?

Great project - I'm hoping to use this for our new company dev wiki.

Topics can't start with the same first word

Hi,

If I create a Topic with name "Server Test" and then try to create another topic with name "Server Documents" the 2nd topic is not created.

Please help in resolving.

Thanks
Dan

Default user/password

What is the default user and password? I am assuming there is one, as going to localhost:5000/#/setup presents me with a login screen, nothing else.

Open links in a new tab

Opening links in the wiki in a new tab instead of replacing the page that the user is currently reading. Thoughts?

Unhandled rejection throw out when creating account

I just setup a Matterwiki on my Debian system, when tried to run it. I got the warning.

Knex:warning - SQLite3 Foreign & Primary keys may only be added on create
Knex:warning - SQLite3 Foreign & Primary keys may only be added on create
Knex:warning - SQLite3 Foreign & Primary keys may only be added on create

Trying to ignore the warn, but I got this when trying to create an account

Unhandled rejection Error: insert into "users" ("about", "email", "id", "name", "password") values ('The boss', '[email protected]', 1, 'username', '$2a$10$YYfPRGDnszvNXMpOLiea3uwqABCDEFGHIJKBlyA8qvj3mLAq') - SQLITE_CONSTRAINT: UNIQUE constraint failed: users.id
    at Error (native)

BugReport:ES6=>Error

type in the content:
const a = () => { console.log('...')} and save. It only saves const a = () =.

installing fail on ubuntu server

Hi,

I'm new to use vps to run project. I really like how matterwiki looks. XD

When I run npm run build.
Below is my problems.

`
co@ubuntu:~/matterwiki$ npm run build

[email protected] build /home/connor/matterwiki
cross-env NODE_ENV=production webpack --config ./webpack.config.prod.js --progress --profile --colors

sh: 1: cross-env: not found

npm ERR! Linux 4.4.0-57-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "build"
npm ERR! node v6.9.4
npm ERR! npm v4.1.2
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! [email protected] build: cross-env NODE_ENV=production webpack --config ./webpack.config.prod.js --progress --profile --colors
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the [email protected] build script 'cross-env NODE_ENV=production webpack --config ./webpack.config.prod.js --progress --profile --colors'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the Matterwiki package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! cross-env NODE_ENV=production webpack --config ./webpack.config.prod.js --progress --profile --colors
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs Matterwiki
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls Matterwiki
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! /home/co/matterwiki/npm-debug.log
`
I do have the node version 6.9.4
and npm version 4.1.2

Could you tell me what happen ?

Thank you

Error when adding new user

Hey,

I've had the following two errors when either adding or saving users.

1|index    | Unhandled rejection CustomError: No Rows Updated
1|index    |     at Child.<anonymous> (/root/matterwiki/node_modules/bookshelf/lib/model.js:1020:19)
1|index    |     at Child.tryCatcher (/root/matterwiki/node_modules/bluebird/js/main/util.js:26:23)
1|index    |     at Promise._settlePromiseFromHandler (/root/matterwiki/node_modules/bluebird/js/main/promise.js:510:31)
1|index    |     at Promise._settlePromiseAt (/root/matterwiki/node_modules/bluebird/js/main/promise.js:584:18)
1|index    |     at Async._drainQueue (/root/matterwiki/node_modules/bluebird/js/main/async.js:128:12)
1|index    |     at Async._drainQueues (/root/matterwiki/node_modules/bluebird/js/main/async.js:133:10)
1|index    |     at Immediate.Async.drainQueues (/root/matterwiki/node_modules/bluebird/js/main/async.js:15:14)
1|index    |     at runCallback (timers.js:651:20)
1|index    |     at tryOnImmediate (timers.js:624:5)
1|index    |     at processImmediate [as _immediateCallback] (timers.js:596:5)
1|index    | Unhandled rejection TypeError: res.json(...).catch is not a function
1|index    |     at Child.<anonymous> (/root/matterwiki/api/users.js:118:13)
1|index    |     at Child.tryCatcher (/root/matterwiki/node_modules/bluebird/js/main/util.js:26:23)
1|index    |     at Promise._settlePromiseFromHandler (/root/matterwiki/node_modules/bluebird/js/main/promise.js:510:31)
1|index    |     at Promise._settlePromiseAt (/root/matterwiki/node_modules/bluebird/js/main/promise.js:584:18)
1|index    |     at Async._drainQueue (/root/matterwiki/node_modules/bluebird/js/main/async.js:128:12)
1|index    |     at Async._drainQueues (/root/matterwiki/node_modules/bluebird/js/main/async.js:133:10)
1|index    |     at Immediate.Async.drainQueues (/root/matterwiki/node_modules/bluebird/js/main/async.js:15:14)
1|index    |     at runCallback (timers.js:651:20)
1|index    |     at tryOnImmediate (timers.js:624:5)

Switch bcrypt to bcryptjs

I develop on windows and i've had problems with bcrypt pretty much every time it's used, can't even install it properly.

There's a library that is from what i've seen a drop-in replacement with zero dependencies (bcrypt has gigs of them for windows users and then even those don't work properly).

After a bit of frustration with trying to use bcrypt yet again, i decided to just uninstall it from my matterwiki installation, replaced it with bcryptjs, changed the 3 requires and it's working now.

Just thought i'd leave it as a suggestion.

bcrypt.js

Building fails on FreeBSD

Here's the error log:

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"freebsd","arch":"x64"})
npm ERR! FreeBSD 11.0-RELEASE-p2
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v7.5.0
npm ERR! npm  v4.1.2
npm ERR! code ELIFECYCLE

npm ERR! [email protected] install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script 'node-pre-gyp install --fallback-to-build'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the sqlite3 package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-pre-gyp install --fallback-to-build
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs sqlite3
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls sqlite3
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/user/wiki/npm-debug.log

Full debug log: http://sprunge.us/BFIf

I'm not sure why script builds it's own sqlite3 package when all platforms have their own package?
Could anyone assist, please? Thanks in advance!

Brand Update: Matterwiki Logo

Hello friends,

I'm working on some design updates for the Matterwiki app in my spare-spare time. In the process, ended up working on a new brand/logo concept to go with the UI updates.

Wanted to share it with everyone for thoughts or input. @nshntarora hope you like it!


Logo Usage
matterwiki-logo

New Logo in Nav
image

Change font

The font is very pretty for the most part, but the number one is far too similar to a capital i.

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.