EverestCamp is the most simple knoweldge base tool.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.meteor
client
lib
public
server
.babelrc
.gitignore
LICENSE
README.md
package.json
settings-default.json

README.md

EverestCamp is the most simple knoweldge base tool. Vision of this project:

  • Make the process of documentation worthwhile for your employees.
  • Provide tools to make use of the knoweldge of your employees.

Work in progress:

Screenshot Desktop

Screenshot Mobile

Features

  • Intuitive user experience
  • AutoSave everywhere
  • Image upload by drag and drop or paste
  • Taxonomy editor to organize knowledge articles.
  • Drag and drop sortable taxonomy tree
  • Responsive and reactive layout
  • Markdown editor with live preview
  • Instant fulltext search
  • Configurable access rights

Todo

  • Replace FS Collection with Meteor-Files
  • Move Access Control into components.
  • Multiple File paste
  • Filter not public images for public users
  • View visiblity Access - make nav el for unauthorized user in, add edit button on post view
  • Finishing change email process
  • Create AutoSave for every 3 seconds in editor.
  • Enable Tabulator usage in editor

Bugs

  • IE Image selector does not work
  • IE scrollbar does not show up
  • User Register return value is not processed
  • Fix ref error for input

Longterm Task

Done

  • On Page reload route.edit is denied -> rework redirect
  • Data Acess Control for users
  • If user cannot create node make sure he can create a post -> check type
  • User profile - change username, email, last and firstname, password
  • User Profile change process - reactiviy, change mail
  • Notifcations are not persistent on route change
  • find Notification tool that works - https://github.com/igorprado/react-notification-system or fork react-notify-toast or https://github.com/jaredreich/notie
  • Add user management site - table with search and role dropdown
  • Routing Access Control
  • Fix header title
  • Content optional?maybe?
  • Add username and lastname, firstname to form
  • Routing Config into Meteor Settings
  • Guest user Fronted - PostSearch with SingleView with content and last author.
  • FlowRouter not found konfigurieren
  • Bootstrap 4 - Replace form-group with p tag
  • slug title redirect
  • Update navigation / -> forntpage, post -> mainpage
  • post single does not work -> fuck
  • Limit is ignored by PostList
  • Insert image dialog https://facebook.github.io/draft-js/docs/quickstart-rich-styling.html#content
  • fix slug from post
  • fix author update in post
  • User role setup
  • Add save button for new version by user - https://github.com/aldeed/meteor-collection2
  • Email Verification redirect
  • Public checkbox for post and file
  • Inject image css into markdown parser
  • Make components dual -> either load data from props or subscription
  • Add Draft.js as Editor - https://facebook.github.io/draft-js/docs/overview.html#content
  • Replace the other bootstrap components
  • Rework subsription management > see files modal in post-edit
  • Copy paste in editor adds div
  • TreeView node list is also filtered
  • TreeView without subsciber
  • Fix undefined in className
  • Mark active Post in tree
  • NodeList selector causes sub twice
  • remove jquery validation (jquery and form validations)
  • Replace manual className adding with classnames
  • replace div with grid row
  • Focus Title field when open post or node -> only if id of post changed
  • Drag n drop is triggered two times
  • Draggable TreeView - http://webcloud.se/sortable-list-component-react-js/
  • Multi file upload in gallery
  • Add profile for user with empty collapsedNodes
  • Fix logout redirect
  • set max load for images
  • Create fulltext search - https://meteorhacks.com/implementing-an-instant-search-solution-with-meteor/
  • Add image search
  • Extend image gallery: name, delete
  • Enable copy and paste of image
  • Rename published to public
  • Add mobile media upload
  • Remove tags
  • Fix Frontend
  • Add Github flavored Markdown
  • Fix files upload by method
  • Add singup with email verification
  • Signup with E-Mail validation
  • Rename Buttons
  • Add fullscreen for Editor
  • Add Dialog for Nodes -> make like post and show edit page
  • Enable renaming and deletion of Nodes -> add edit with delete button and contentEditable
  • Update name of post in node list
  • add type and ref_id to Node
  • Add post to node
  • Image inline uploader
  • Finish Editor -> show markown on load, css, picture link
  • Fix pasting Text
  • getPath replace title with ID
  • search function that uses path to filter -> search for items that match and display their path

Rejected

Sources

Editor https://github.com/JedWatson/react-md-editor

Framework https://kadirahq.github.io/mantra/#sec-Server-Side-Rendering-SSR-

Treeview https://github.com/chenglou/react-treeview

Sample App https://github.com/mantrajs/mantra-sample-blog-app

React Blog https://github.com/themeteorchef/building-a-blog-with-react

Inline Upload https://github.com/Rovak/InlineAttachment

Content Editable https://github.com/lovasoa/react-contenteditable

Design Pattern https://medium.com/@SamCorcos/meteor-react-design-pattern-mixins-v-composable-components-990a5411e1b7

Meteor settings https://themeteorchef.com/snippets/making-use-of-settings-json/

Thinking in React https://facebook.github.io/react/docs/thinking-in-react.html

Drag n Drop Basics http://www.html5rocks.com/en/tutorials/dnd/basics/

ES6 modules http://www.2ality.com/2014/09/es6-modules-final.html

ES6 check http://www.2ality.com/2013/04/check-undefined.html

Basics of Subscriptions https://stackoverflow.com/questions/19826804/understanding-meteor-publish-subscribe/21853298#21853298

Multiple Subscriptions http://stackoverflow.com/questions/12632452/publishing-subscribing-multiple-subsets-of-the-same-server-collection

Extending user https://medium.com/all-about-meteorjs/extending-meteor-users-300a6cb8e17f#.2fgjfwejb

Docs

Run

meteor --settings settings-default.json

Roles and permissions

  • Admin: Full Access on files, nodes, posts, users
  • Builder: CRUD nodes, posts, files
  • Author: CRU posts, files
  • Public: R public posts, files

Naming concept

CamelCase is for visibility and unserscore_case is for readability.

Files

React components: CamelCase
Everything else: underscore_case

Functions

React functions: CamelCase
Everything else: underscore_case

ContentEditable

in Parent Component add:

constructor(props, context) {
  super(props, context);

  this.state = {
    shouldChildComponentUpdate: false,
    showModal: false
  };
};

componentWillReceiveProps(nextProps){
  // when parent has received new props also update child component
  this.setState({
    shouldChildComponentUpdate: nextProps.nodeId != this.props.nodeId
  });
}

componentDidUpdate(){
  // once parent is updated do not update child component
  this.state.shouldChildComponentUpdate = false
}

Then pass the shouldChildComponentUpdate state to the ContentEditable component. This will make sure, that the component only updates when the data context changes.

Crazy Bugs

When using subscriptions with parameters make sure to add an else statement.

if(Meteor.subscribe('posts.single', postId).ready()) {
  console.log("onData post-edit")
  const post = posts_single(postId).fetch()[0];
  onData(null, {post});
}else{
  onData(null, {});
}