/CFA-Knowledge-Sourcing-Platform

CFA internal hackathon project. Knowledge sourcing platform for users to share important capabilities

Primary LanguageRuby

KSP - The Knowledge Sourcing Platform

Our internal hackathon's theme was education; we were given three problems within this field and had to choose one and come up with a solution.

  1. Poor access to tech education for disabled learners
  2. How do you know what you don’t know if self educating?
  3. Hard to accommodate both students who are struggling and excelling in a classroom

We were given a timeframe of two-days and optional weekend work.


Project

Our project revolves around the problem of "how do you know what you don't know if self educating?". To address this issue we built KPS : a Knowledge Sourcing Platform for self-learning developers. KPS is a software development community which allows both experienced and new developers to create/publish articles related to latest trends, learning suggestions, and programming fundamentals. The user base then has the ability to up and downvote each article based on their importance; creating an ever evolving list of learning essentials and allowing self-learners to explore previously unexplored areas of software development. Each user can:

  • Choose their preferred programming language;
  • The user will be directed to an index list of capabilities which are found in that specific programming language;
  • Each capability will contain at least one topic with detailed documentation and resources uploaded by an experienced user;
  • Users will be encouraged to upvote or downvote the topic; the highest voted topic will be at the top of the list;

Each post is reviewed by an Admin, who can edit and delete the posts.


Getting Started

Starting a new Rails Application

Terminal Commands:

$ rails new <projectname> --database=postgresql
$ rake db:create
$ rake db:migrate

To check if your rails application is running:

$ rails s

Gem Installations

Within the rails project, folder Gemfile the following gems were installed:

Gem Installation Usage
bootstrap gem 'bootstrap-sass' CSS framework
devise gem 'devise' authentication solution
rolify gem 'rolify' authorization system
pundit gem 'pundit' authentication system
acts as votable gem 'acts_as_votable' acts as votable
rpsec gem 'rspec-rails' allows testing

Gem Usage

For full installation instructions and usage for each gem, please visit the below links which will take you to their documentation.

Bootstrap Devise Rolify Pundit

Design Journey

Step One: Brainstorm Session

We focused our brainstorming session around problems two and three and wrote down words which we felt were related to each of these points. self-educating

classroom learning

Step Two: Building on Ideas

Some ideas we came up with based on our brainstorming discussions were:

Idea 1: The Bot

  • A bot which scans the code you are writing; maybe an atom plugin? And is able to recognise repetition of code structures or perhaps the repetition of gems which the user uses in all of their projects
  • The bot suggests alternative methods of code structures/methods, or different gems which the user can use instead
  • The bot provides these alternative methods which the user can acknowledge and get redirected to a page where all the bot's suggestions are; the user can read up on new material etc

Idea 2: Pair Programming Matcher

  • A platform which is able to match different skill levels in the class with each other
  • Allows exceeding students to gain new responsibilities of trying to teach/mentor less knowledgable students

Idea 3: Knowledge Platform

  • An area for self-educating developers to go and be able to see what other industry experts/students/workers think is important to know within the programming language
  • Voting system which is controller by users so that they can decide what topics are more important than others
  • Self-educators are able to go onto this platform and see what their knowledge gaps might be

Step 3: Chosen Idea

Idea 3 was chosen. We used Trello to start writing user stories and decide on our MVP. Trello was heavily used within our project to designate tasks, communicate with each other, write ideas and so on.

trello

Some wire-framing ideas and which types of models and pages we would need were also brainstormed.

wireframe models and pages

MVP Screenshots

Home Page

Topics Page

Post Show Page

Project Future

Features

There are a number of features that were not implemented in the prototype build of KSP. A future version of the product might include:

  • More functional styling;
  • The ability for users to "favourite" articles;
  • An in-built forum for user discussions;
  • The ability for users to "comment" on articles;
  • User profiles;
  • Social media sharing;
  • Greater admin and moderator capabilities (i.e. approving and merging articles, deleting users);

Outstanding issues

A number of issues present within the prototype still need to be resolved. These include:

  • "Back" button within post/show page unresponsive after a "vote" is placed. Requires mapping to previous topic_id.;
  • New post currently replacing topic_id with its own post_id in url upon creation;
  • Site currently unresponsive for mobiles, ipads;
  • Prototype built without using TDD. Greater testing required;

Collaborators

Marlon Kirsten Aljosa Charlotte