npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

meat

v0.3.4

Published

Meeting room kiosk app for displaying meeting room schedules and booking rooms in your organization. Built against Google Apps, but other sources can be defined.

Downloads

14

Readme

#MEAT

##What It Is

MEAT is meant to be displayed outside your meeting rooms on any device with a modern web browser (we use iPads, but you can use netbooks, phones, or whatever). If you're signed up with Google Apps, MEAT will display status for all your meeting rooms and allow you to book time on the spot.

##Quick Start

There are two parts to MEAT: the web server, and the display. Generally all the setup is on the server, and the displays just hit a url. So...

Step 1: Get NodeJS with NPM

Download it from http://nodejs.org/

Step 2: Install MEAT

> npm install -g meat

Step 3: Store your data

The Node server requires a directory for saving configuration, logs and other data. Specify an empty directory using the environment variable $MEAT_HOME

On *nix:

> export MEAT_HOME=/path/to/meat-data

On Windows:

> set MEAT_HOME=C:\path\to\meat-data

Step 3: First run

> meat

The first time you run meat, it will populate your $MEAT_HOME directory with default configuration.

Step 4: Configure

Next edit $MEAT_HOME/config/core.js with any custom configuration. Since Google limits all requests given under a specific clientId, it is highly recommended that you pick your own Google Apps clientId and clientSecret instead of using the provided pair to avoid being throttled due to someone else using up the requests. The provided pair are only for testing. At 10k requests per day, with 1 request per meeting room per 10 minutes, it takes less than 70 people running MEAT with a single room before Google begins refusing requests.

To get your own Google API credentials, go to https://code.google.com/apis/console and sign up for an account. Be sure to turn on the Calendar API under Services. To obtain a clientId and clientSecret, go to API Access and click the big button to create OAuth access credentials. You want to get credentials for an Installed Application and choose "Other" instead of iPhone or Android.

Use the clientId and clientSecret in your $MEAT_HOME/config/core.js config file.

Step 5: Setup a Google Apps MEAT user

Set up a user you want to use MEAT as. All MEAT acivity will be done as this user. The user needs access to the meeting room calendars and must be allowed to book meetings. Any calendars you want to view in MEAT must also appear in the user's "My calendars" or "Other calendars" lists in the Google UI at http://calendar.google.com. If they don't appear there, you won't see them through MEAT.

Step 6: Run the server, authenticate

meat

The second time you run meat, it will open a browser window to Google OAuth, asking you to give it access to your calendars. Do so using a dedicated MEAT gooogle user if possible. Access will be granted indefinitely, so you won't have to do this again.

As soo as you authenticate, MEAT will start indexing your room calendars.

Step 7: Meeting Room Displays and Phones

Room displays should hit:

http://example.com?room={roomName}

Where {roomName} is the full, case-sensitive, URL-encoded name of the room they're in front of.

But, if you don't want to type the full, case-sensitive, URL-encoded name of the room, you can also hit the following URL and select the room from a list at:

http://example.com/setup/links

If you'd like to have a display show information for all rooms by default, then just hit:

http://example.com/

These URLs can be added to the Home screen on iPads and iPhones for quick booking later on.

Troubleshooting

Why can't I see any rooms?

One reason you might not be able to see any meeting rooms is that MEAT by default will only pick up "resource" rooms. See http://support.google.com/a/bin/answer.py?hl=en&answer=1033925 for more info. If you'd like to disable this and include all visible calendars, set { ... gapps: { ... resourcesOnly : false } } in your config file.

Another reason you might not see a room is that the calendar does not appear in your MEAT user's calendar list. Add it to your dedicated MEAT user's "Other calendars" list through the Google website: http://calendar.google.com

Security

Note: there is little to no security in MEAT. If your Google Apps information needs to be secure, you should run MEAT within a firewalled network. Otherwise, anyone who knows the url can view meeting room information, and make impromptu bookings.

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using grunt.

Release History

  • 0.3.4 - Google+ changes cause displayName to now be missing sometimes. So thanks to Hai Vu we fallback to an email (minus domain). We also fallback to 'None' now if there is no organizer at all or if we couldn't parse the email correctly (or it wasn't provided).
  • 0.3.3 - Increase max rooms from 100 to 250 (the max) for larger offices. Will eventually need to start making paged requests.
  • 0.3.2 - Fix LICENSE link in package.json
  • 0.3.1 - Set preferGlobal
  • 0.3.0 - Fix private meetings, add option to display the room name, add ability to see full room list from status page, add "Book me" link for some call-to-action on the status screen, /setup URL for getting links to each room quickly, accessibility improvements.
  • 0.2.4 - Fix bug when handling errors during a Booking.
  • 0.2.3 - Better styling of the UI. Switch 'X' to 'Back' link
  • 0.2.2 - Better datasource logging. Fix bug where timeout when loading events for the last room would cause event info to stop being updated.
  • 0.2.1 - Fix mobile Safari bug - no support for function.prototype.bind.
  • 0.2.0 - A web server pings Google, and all the client displays talk to the central server for data.
  • 0.1.0 - Used now deprecated GApps v2 API. Served static files only and each client pinged Google independently

What's next?

  1. I'd like to improve the UI. It is very simple now (which is good), but I could use space more wisely.
  2. I'd like to make it more pluggable. It would be great if people could add their own features and have them show up on the MEAT displays.
  3. If there is demand, I would like to expand MEAT outside of google Apps to work with Microsoft Exchange, or whatever other calendar software people are using.

License

Copyright (c) 2012 Adam Ahmed Licensed under the MIT Expat license.