GithubHelp home page GithubHelp logo

jdotpz / openbadges-badgekit Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mozilla/openbadges-badgekit

0.0 2.0 0.0 6.21 MB

Home Page: badgekit.openbadges.org

License: Mozilla Public License 2.0

openbadges-badgekit's Introduction

BadgeKit

BadgeKit is a software tool for issuing Open Badges. With BadgeKit, Mozilla aims to make it easier to get started badging by providing lightweight, modular, open options for the community of badge issuers. The BadgeKit private beta was launched in March 2014, offering badge issuing organizations a chance to sign up for hosted access to the tools. Alternatively, you can host your own instance of BadgeKit using the code in this repo. See the config information below or the Self-Hosting Guide for a fuller overview of how to build your own instance of BadgeKit.

Background

BadgeKit is framed around a set of action verbs. Each verb represents an invitation to innovation around defining and refining the user experience for the particular action that the user is attempting to do. Here are the verbs: Build, Assess, Issue, Collect, Share, Discover and Use.

BadgeKit evolved out of several years of work in the badging field as well as LOTS of user testing and research. Much of BadgeKit was inspired by the work we did for the Chicago Summer of Learning, the Connected Educators Month and the Mozilla Summit. Each project helped us to produce some great open source solutions for distinct badging experience ranging in size from one badge to thousands of badges being issued. With each project, we user tested, got feedback and iterated - so just think of BadgeKit as our next big iteration on our offering.

More tools are being developed and will be announced throughout 2014, see also Open Badges Discovery.

Using BadgeKit

BadgeKit is made up of two distinct parts: an API and a Web app. This repo hosts the Web app - you can sign up to access the hosted private beta version at BadgeKit.org. The code in this repo lets you use the exact same components as the Mozilla hosted version, and you can of course alter the code to suit the needs of your own organization.

The BadgeKit Web app is an admin tool for badge issuers - it lets issuer personnel create badges, defining their metadata and designing their appearance, as well as publishing and issuing them. BadgeKit also provides badge application management for issuers. The app doesn't actually store the data for the badges published through it - this is handled by the API. To install your own instance of BadgeKit, you therefore need the code in this repo and the BadgeKit API Repo.

The BadgeKit API handles the data associated with published badges. You can call on the API webhooks to provide a custom front-end interface for your community of badge earners, so that you control the interaction and communication with them, while the BadgeKit app provides back-end badge issuing admin.

You can run the BadgeKit API without the Web app, but the Web app depends on a running installation of the API.

Setup

BadgeKit can be configured using three different methods (in order of priority):

  • command line arguments
  • a JSON configuration file
  • environment variables

These can be accessed within the app like so:

var config = require('./lib/config');

var port = config('PORT', 3000);
var cookie_secret = config('COOKIE_SECRET');

If a default value is given, it will be returned if not found elsewhere in the configuration. If it is not given, and no value is found, a ReferenceError will be thrown.

Command line arguments

Pass these in when starting the app, like so:

> node app --port 3456 --cookieSecret chocolatechips

JSON configuration

If the app finds a config.json file in the root, it will use parameters in this file where possible.

{
  "PORT": 3456,
  "COOKIE_SECRET": "chocolatechips"
}

Environment variables

Finally, configuration will be picked up from the environment. This is most easily done by writing a config.env file (or similar):

export PORT=3456
export COOKIE_SECRET='chocolatechips'

Then you can source the file like . config.env.

App Environment

The following environment variables are currently used:

  • COOKIE_SECRET: Should be a large, unguessable string. Required
  • PORT: The port that the BadgeKit server should listen on. Defaults to 3000.
  • OPENBADGER_URL: The URL of the BadgeKit API that this application should talk to. Required
  • OPENBADGER_SECRET: The shared secret defined by the BadgeKit API. Required
  • OPENBADGER_SYSTEM: The default system slug to use in the BadgeKit API. Required
  • DATABASE_DRIVER: Database driver. Required, currently only MySQL supported.
  • PERSONA_AUDIENCE: Should be set to the app's url (example: "http://localhost:3000"). Required
  • ACCESS_LIST: An array of regular expressions that define "administrator" email patterns. e.g. ["^[email protected]$"]. These users will automatically be members of the OPENBADGER_SYSTEM system.
  • API_SECRET: A string used as a shared secret for BadgeKit's API functions (currently this is only add/delete user functionality). Required
  • BRANDING: A short string used by the badge studio to add a label to the branding ribbon. Alternatively, this can be an object keyed by system slug.
  • DEBUG: If set to true, enables additional logging. Defaults to false.

For a MySQL database, you'll also want to set:

  • DATABASE_HOST: Database host. Defaults to localhost.
  • DATABASE_USER: Database user.
  • DATABASE_PASSWORD: Database password.
  • DATABASE_DATABASE: Name of the database to use.

Tests

Tests can be run with npm test.

You will need to define the following configuration parameters through one of the methods outlined above:

  • TEST_DATABASE_DRIVER: Database driver. Required, currently only MySQL supported.
  • TEST_DATABASE_HOST: Database host. Defaults to localhost.
  • TEST_DATABASE_USER: Database user.
  • TEST_DATABASE_PASSWORD: Database password.
  • TEST_DATABASE_DATABASE: Name of the database to use.

openbadges-badgekit's People

Contributors

christensenep avatar zeejab avatar andrewhayward avatar cmcavoy avatar suesmith avatar stenington avatar secretrobotron avatar jbuck avatar xmatthewx avatar brianloveswords avatar iamjessklein avatar

Watchers

James Cloos avatar JP Schneider avatar

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.