Liberty Hawk app view

Liberty Hawk

Project Date: December 2017

Upcoming Overview and Refactoring

  • A complete project writeup will be posted by the end of the second week of March, For now, you can read about the app's responsive design features in the blog post, Responsive Design, and its dynamic content in JavaScript for Dynamic Content.
  • The code is currently being refactored for resourceful routing and other Rails best practices and efficiencies. If you see anything in the GitHub repo that you would like to discuss (e.g. "How are you planning on improving the following items?"), just contact me, and I'm happy to talk.


A congressional bill search application that uses the ProPublica API ‘Search Bills’ endpoint. Users can search bills while logged in or search just as site visitors. Logged in users can save bills (favorites), see a history of their past 10 searches, sort bills by multiple categories, and their most recent search results are persisted (you can see them when you log back in to a new session).
Foldering that allows users to create named folders and organize their saved bills into them.
Creating a Ruby on Rails app with a RESTful API was interesting. Constructing resources for two use cases (user not signed in and signed in) involved multiple overlapping considerations: first, when did data need to be persisted and when did it not; second, which views does each use case need or need to be limited from, based on the purpose(s) of that view, etc. Furthermore, view design for persisted versus non-persisted data of the same object class required different controller methods or actions, partials for differing object access abilities, etc. These are some of the points that will be covered in the upcoming writeup sections.


Live App  please read testing below before trying app
GitHub Repo


  • Two-factor authentication is enabled. You will need to confirm an email account before signing in to the application. Confirmation emails can take a few minutes to be delivered. If you do not see one within five minutes, please check your spam folder.
  • For guidance on running queries (searches), click the orange info button () next to the search box. It will open a panel that explains results and how to use mutliples word searches.
  • Authenticated user accounts
  • Sign in and do the following
    • Search bills
    • Sort bills by three different criteria (Title, Date Introduced, and Active Status
    • Save bills
    • Unsave bills
    • Re-run any of your 10 most recent searches via the links in the search history panel
  • Search bills when not signed in

Responsive design

Responsive design was employed on this app. The landing page, sign in, and search views employ it to reorder content for logic and prominence. The bill and saved bill show pages use it for aligning content, but also to resize, or scale, objets that are larger than the screen width at given breakpoints. These topics are discussed in Responsive Design.

Dynamic Content

JavaScript was used to show and hide content on small screens. This is discussed in JavaScript for Dynamic Content.

JQuery Animate

JQuery animated scroll was used to help users easily and smoothly get back to the top of the page on small screens. This is discussed in JQuery - Animated Scroll.