Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
= Giftsmas

Giftsmas is a web application designed for keeping track of gifts people
receive during an event.  It is designed around a moderate size family
keeping track of all gifts that any member of the family received for

== Demo

If you just want to play around with a demo, go to
and login with demo/demo.

== Command line setup

After cloning the repository from github, switch to the giftsmas directory:

  cd /path/to/giftsmas

Install the necessary gems from the Gemfile using bundler or rubygems.

Create the db and run the migration:

  createuser -U postgres giftmas
  createdb -O giftmas giftsmas
  sequel -m migrate postgres:///?user=giftsmas

Create an appropriate .env.rb file storing the rack session secret
and database connection URL environment variables:

  ENV['GIFTSMAS_SESSION_SECRET'] ||= '...' # >=64 bytes
  when :production
  when :test

Create your user(s):

  irb -I. -rmodels
  irb(main):001:0> User.create(:name=>'...', :password=>'...')

Modify the configuration for the server, if necessary:


Start the server:

== The web interface

Giftsmas, when run with rackup, runs on port 9292 by default (you can modify this in  So open up your webbrowser:

  $BROWSER http://localhost:9292
It will redirect you to the login page.  Put in a username and password that
you created earlier and click "Login".  It will ask you to create an event.
Choose an event name and click "Create New Event".  It will put you on the add
gift page.  Put in a gift name, sender name(s), and receiver name(s) and click
"Add Gift".  It will add the gift to the database and put you back at the add
gift page, but this time you'll have checkboxes for the senders and receivers
you entered.  If you want to use a sender or receiver that's not in one of
the select boxes, type the name in (you can separate names with a comma).  This
is true even if you want to use a sender or receiver that doesn't have a
checkbox (you can always type in the names, it doesn't create duplicates).

== Other pages

=== Event

* Associate Receivers: You can use this to associate other people as possible
  receivers in the current event (so they show up in the receivers select box
  on the add gift page).  Mostly useful if you have multiple events and most
  of the people in this event were also in a previous event.
* Associate Senders: Same as Associate Receivers, but for senders.
* Change Event: Change the currently used event, either by picking another
  event or adding a new event.

=== Reports

* In Chronological Order: Simple report listing all gifts received in
  chronological order.
* By Receiver: Gives separate reports for each receiver.  When printing the
  reports, uses one page per receiver.
* By Sender: Similar to By Receiver, but for senders.
* Summary: Shows the total number of gifts, as well as totals by sender
  and receiver.
* Summary Crosstab: Shows for each sender/receiver pair, how many gifts the
  sender gave the receiver.
* Thank You Notes: Gives separate reports for each receiver, showing gifts
  received from people who weren't receivers at the event.  When printing
  the reports, uses one page per receiver.
=== Other

This are simple scaffold pages for changing data in the database.  You can
use them to rename an event, person, or gift, to modify senders/receivers
of gifts after they have been added, or to delete gifts.
== Running the specs

=== Prerequisites to run the specs

* rake
* minitest 5.7.0+
* capybara

=== Setup

Create the db and run the migration:

  createdb -O giftsmas giftsmas_test
  sequel -m /path/to/giftsmas/migrate postgres:///giftsmas_test?user=giftsmas

== Running the specs

The specs are run with rake:

  rake spec # Unit tests
  rake integration # Integration tests
  rake # Both
== License

Giftsmas is released under the MIT License.  See the LICENSE file for details.

== Author

Jeremy Evans <>


Gift Tracking Website using Roda and Sequel






No releases published


No packages published