Project

truenorth

0.0
The project is in a healthy, maintained state
A command-line interface for checking availability, managing bookings, and interacting with NorthStar-powered facility reservation systems.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 2.0
~> 13.0
~> 3.0

Runtime

~> 0.2
~> 0.15
~> 1.15
~> 1.3
~> 0.12
~> 0.10
 Project Readme

Truenorth

A command-line client for NorthStar-powered facility booking systems (like club management portals built on Liferay with PrimeFaces).

Installation

gem install truenorth

Or add to your Gemfile:

gem 'truenorth'

Configuration

First, configure your connection:

truenorth configure

You'll be prompted for:

  • Base URL: Your club's portal URL (e.g., https://your-club.com)
  • Member ID: Your login ID (e.g., 12345-00)
  • Password: Your password

This stores your credentials securely in ~/.config/truenorth/ with restricted permissions (600).

Alternatively, use environment variables:

export TRUENORTH_BASE_URL="https://your-club-portal.com"
export TRUENORTH_USERNAME="12345-00"
export TRUENORTH_PASSWORD="your-password"

Usage

Check availability

# Today's availability
truenorth availability

# Specific date
truenorth availability 2024-03-15

# Days from today
truenorth availability +5

# Different activity
truenorth availability --activity golf
truenorth availability -a music

Make a booking

# Book a slot
truenorth book "7:30 AM"

# Book for a specific date
truenorth book "7:30 AM" --date 2024-03-15
truenorth book "7:30 AM" -d +5

# Specify court preference
truenorth book "7:30 AM" --court "Court 1"

# Dry run (test without booking)
truenorth book "7:30 AM" --dry-run

View your reservations

truenorth reservations

# JSON output
truenorth reservations --json

Check status

truenorth status

Activities

Supported activity types:

  • squash (default)
  • golf
  • music
  • meeting / room

Ruby API

require 'truenorth'

client = Truenorth::Client.new
client.login('12345-00', 'password')

# Check availability
slots = client.availability(Date.today + 5, activity: 'squash')
puts slots[:slots]

# Book a slot
result = client.book('7:30 AM', date: Date.today + 5, activity: 'squash')
puts result[:confirmation]

# List reservations
reservations = client.reservations

License

MIT License - see LICENSE file.