node package manager


Treat your gist account like a database

☁️ Gist-DB ☁️

Treat your gist account like a database. Powered by TaffyDB and Github.

npm install --save gist-db
var config = {
  github: {
    username: "mcwhittemore"
var db = require("gist-db")(config);
db.event.on('refreshing', function(){
  console.log("LETS DO THIS");
db.event.on('refreshed', function(err){
  id = gist_id+"_"+filename,
  filename = filename,
  gist_id = gist_id,
  error: undefined,
  type: "mime type",
  language: "language the file is written in",
  raw_url: "https path to the raw text version of the file",
  size: numeric size of the file,
  gist: {
    id: gist_id
    public: boolean,
    created_at: date object,
    updated_at: date object,
    description: "the gist description"
# Clone the repository 
git clone
# Install dependencies, this will also run the build script 
npm install
# Try out the demo! 
node demo/demo.js

Please refer to the TaffyDB docs for more details

Create a new gist-db.


  • config: A settings object.
Required: {
Defaults: {
  refreshMin: 10,
    github: {
      per_page: 100,
      timeout: 5000,
      version: "3.0.0"
    local: {
      save: "NEVER", //NEVER, ON_REFRESH, ALWAYS  
      location: undefined
Available: {
  refreshMin: 10,
  github: {
    per_page: 100,
    timeout: 5000
    version: "3.0.0",
    authenticate: {
      type: "basic or oauth",
      username: "your_username_if_basic",
      password: "your_password_if_basic",
      token: "your_oauth_token_if_oauth"
    local: {
      location: "path and filename"
  • fileInit: function(file). A function that returns the file obj if it should be added to the DB and undefined if it should be excluded.

  • fileSave: function(file, callback). A function that allows for further parameter work on files after the raw data has been received. A functioning implementation of this MUST pass the file object as a parameter to callback to save changes to the DB. Note: this will perform an update to the database.

  • TaffyDB: Yes

  • Returns: All rows that meet the passed criteria. Not passing an object, will return all rows.

Inserts records into the database.

  • TaffyDB: Yes
  • Returns: A query pointing to the inserted records

Full use of the github module passed the github subsection of your config file.

An implementation of require("events").EventEmitter

Use to be notified when gist-db is connecting gist for a refresh.

Use to be notified when gist-db is done its current refresh. If err is set, this refresh was ended due to error.

Use to be notified of errors in gathering data on the gist files.


  • err: The error object that triggered this event
  • file: The file object that was being gathered when the error occurred

Use to be notified of errors when connecting with github.


  • err: the github module error object that triggered this event

  • res: The github module response object. Might contain good data about the error.

  • Added gist object to file for meta data on the gist the file is from.

  • Changed database refresh to use merge rather than insert so items won't duplicate

  • Added check just before getRawFile and the add to database that checks if the file is in the db and if it is compares if the gist.updated_at of the new file is newer than that of the old file. This was can lower the number of calls to github and speed up the code a bit.

  • Changed github module to be my fork which supports since on the gist endpoints. Will change back once a new version of node-github is in NPM

  • Added since param to github calls, so we will only return gists added/edited since our last call.

  • Added github authentication and thus the ability to access private gists
  • Added userFileSave function, which allows users to do custom (async) actions to a file after the raw data has been pulled in.
  • Request was being requried before each use, which was causing a timeout problems. Updated the code to use a single request object.
  • Added local storage functionality
  • Fix initDb to return empty taffyDb if was set to NEVER
  • Add local file loading
  • Add local file saving
  • Add tests
  • Add Update gist.github
  • Add Insert gist.github
  • Add Delete gist.github

All code not otherwise specified is Copyright 2016 Jonathan Nguyen and is released under the MIT License.

All code found in the node_modules directory is Copyrighted by its creators. Please see each module for further details.