JSPM

harvest-er

1.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q25723F
  • License MIT

Node integration with Harvest

Package Exports

  • harvest-er

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (harvest-er) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

harvest-er: Harvest Automation Server

NPM version NPM downloads Dependency Status License

Getting Started

Harvester requires Node.js and npm, which can both be installed by following the instructions on https://nodejs.org/. Installing Node.js also installs npm.

Install from source: git clone https://github.com/sbolel/harvest-er

Install with npm: npm install harvest-er

npm install - Install node modules

  1. npm run debug - Start the application using Supervisor with debug messages enabled

The Harvest data will be downloaded and saved to Dropbox each time the server runs. To re-run the download, execute rs in supervisor.

Setting up Harvest

  1. Add the admin users email/password to your environment

    export HARVESTER_ADMIN_EMAIL="admin@thinkcrazy.co"
    export HARVESTER_ADMIN_TOKEN="abc-def-123-456"
  2. Set your Harvest subdomain in server/harvester.js and the email/password for the admin user:

    var harvester = new Harvest({
        subdomain: process.env.HARVESTER_SUBDOMAIN,  // your harvest subdomain
        email: process.env.HARVESTER_ADMIN_EMAIL,
        password: process.env.HARVESTER_ADMIN_TOKEN
    }),

Getting Today's Expense and Time Entries data from Harvest (see app.js)

  1. Require harvest and harvester
var Harvest = require('harvest');
var Harvester = require('./harvester');
  1. Initialize Harvester and download the data using a promise array
function getTodaysData(){
  var harvest = new Harvest({
    subdomain: process.env.HARVESTER_SUBDOMAIN, 
    email: process.env.HARVEST_ADMIN_EMAIL,
    password: process.env.HARVEST_ADMIN_TOKEN
  });
  var harvester = new Harvester(harvest);
  var tasks = [];
  harvester.loaded().then(function(teamData){
    tasks.push(harvester.getExpenses());
    tasks.push(harvester.getTimesheets());
    Q.all(tasks).then(function(results){
      debug(harvester.val());
    });
  });
}

Future work

Setting up Dropbox

  1. Create a new Dropbox app at https://www.dropbox.com/developers/apps/create

    • Go to the settings for your new Dropbox app
    • Take note of the App key and App secret
    • Click "Generate" to get a Generated access token
  2. Add the admin users email/password to your environment

    export HARVESTER_DROPBOX_KEY=2abcdef1234t53e
    export HARVESTER_DROPBOX_SECRET=vn5aaf3bb5dd3qt
    export HARVESTER_DROPBOX_TOKEN=rUY9dxaAABBCCDDeeXJctUSUA_c8SuvABfzNwDAdFmTACAa6mUrpAAmcc7Gg7Qch
  3. Set your Dropbox credentials in server/dropboxer.js:

var client = new Dropbox.Client({
  key: process.env.HARVESTER_DROPBOX_KEY,
  secret: process.env.HARVESTER_DROPBOX_SECRET,
  token: process.env.HARVESTER_DROPBOX_TOKEN
});