Giter Club home page Giter Club logo

kmg's Introduction

Knowledge Media Guide

Systematization and recommendation service about professional Knowledge Media, supposed to be driven by community of experts.

Vexor status

kmg screenshot

Problem

To be good specialists we have to know a lot about our profession and it's history. Otherwise we will reproduce all mistakes and reinvent all the wheels over and over again.

We have to read, listen, watch, but as far as I can see, there are not so much people doing it. And I understand why. It is not so trivial to come up with decision: what to invest first in any particular moment of your career. Especially in the beginning of your path.

From my practice of being a software developers trainer I know that you can read some essential books to accelerate your professional growth significantly.

And around the middle of 2013 I came up with the idea of Knowledge Media Guide application. It is obviously possible to systematize essential Knowledge Medium by Specialization and recommend it to professionals just in time they need it most.

So I wanted to make a platform easy to use by Experts and quite simple to implement.

Solution

When I came up with this idea in 2013 my main technologies were JavaEE and Ruby On Rails. But I felt like there is too much accidental complexity there even with Rails. I couldn't start implementing application until I mastered Clojure and especially Datomic database in 2014. It impressed me so much and architectural puzzle was solved.

As we know from Pragmatic Programmer book, plain text is the most powerful format. Therefore, the basic idea is to represent knowledge base as an easily editable plain text. So Experts could contribute to Knowledge Base by sending Pull Requests editing plain text files. It is possible thanks to elegant text representation of domain entities as Clojure EDN maps with meaningful references between them. These maps are loadable Datomic entities.

Example of how knowledge base will look like is here.

Here is the data model.

Installation

Run tests

To be able to run tests do the following

./install-datomic.sh
lein test

Run web application with sample data

Sample data shows main features of application. To run web application do:

./run-transactor.sh
./import-sample-data.sh
lein ring server

Run web application with Knowledge Base for IT Domain

To check current state of Knowledge Base for IT Domain:

./run-transactor.sh
./import-knowledge-base-4-it.sh
lein ring server

Installation roadmap

Making Docker containers for application and transactor.

License

Copyright © 2017 Alexander Petrov (a.k.a. Lysenko by passport)

Distributed under the Eclipse Public License version 1.0.

kmg's People

Contributors

alexpetrov avatar dnnx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

dnnx

kmg's Issues

Static site generation from knowledge base

Yesterday I came up with the idea that makes me excited!
Yesterday I finished migration from SPA to server side rendering with Enlive templates.
And since I have Enlive template, I can use it to statically generate all content for public part of the site.
It gonna be one page per specialization with all recommendations. There must be all specializations on the sidebar with links to corresponding generated page.
Once it gonna be finished, I have to consider hosting this static site on GitHub Pages with CI service.

Make kmg SPAless

I figured out, that I don't want to keep up with the pace of frontend technologies. I don't want to invest my time to support client side code base to be able to work with constantly changing browsers, Google Closure, ClojureScript and all that stuff.
I decided to make application "SPAless". I will use only server side rendering and classic MVC model.
To do that I have to change Enfocus2 library to Enlive.
Enfocus2 is amazing but the only reason to quit using it is "SPAless" approach.

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.