JavaScript Ruby HTML CSS Shell
Pull request Compare This branch is 799 commits ahead, 43 commits behind measuredvoice:master.
Failed to load latest commit information.
app throw errors differently from datatables Jun 16, 2017
bin fix the outlet specs Feb 23, 2015
db make it so the OMB name and the actual name are seperated for login Jun 7, 2017
doc Added basic application structure. Nov 8, 2011
lib/tasks related policies Aug 25, 2016
log Added basic application structure. Nov 8, 2011
public adjusted height of iframe to fit browse interface Mar 14, 2013
script adding in some really basic use cases for admin versus limited users Feb 7, 2015
spec update specs for renamed controllers Jun 7, 2017
vendor Added basic application structure. Nov 8, 2011
.codeinventory.yml adding code inventory Dec 12, 2016
.dockerignore .dockerignore, log tagging, and better directory creation behaviors Jun 30, 2016
.env updating for path of swagger docs Apr 28, 2017
.gitignore fixing REGISTRY_HOSTNAME Jul 9, 2016
.hound.yml adding files for hount ci/digitalgovtheme Feb 18, 2015
.rubocop.yml cleans up digitalgov theme and does some changes to how counts work t… Feb 18, 2015
.rubocop_todo.yml push current changes for rubocop Feb 19, 2015
.ruby-gemset adding in awesome tokeninput styles Feb 2, 2015
.ruby-version adding the actual files, and a social media breakdown page Jan 20, 2015
.travis.yml improved seeds file to build more cleanly and use faker Feb 9, 2015
Dockerfile dbmigrate remove from dockerfile Jun 16, 2017
Gemfile elasticsearch wroking for social media tab Aug 31, 2016
Gemfile.lock updates for elasticsearch Aug 25, 2016
LICENSE update links in the readme Oct 20, 2016 update to swagger docs method Feb 20, 2015
Rakefile Added basic application structure. Nov 8, 2011 Added basic application structure. Nov 8, 2011 add some notes on re-updating things Jun 7, 2017 adding build time swagger dependency Jun 30, 2016
docker-compose.yml fix admin impersonation Jul 14, 2016 updating containerization Jun 23, 2016 ability to reassign agency data Dec 14, 2015 development Docker Compose file complete (+4 squashed commits) Jun 15, 2016

U.S. Digital Registry (program information)

Build Status Coverage Status

Ringsail (the underlying software)

Ringsail is a registry built in Ruby on Rails to gather, organize, and make available information about social media accounts and mobile applications run by large organizations.


The U.S. General Services Administration created Ringsail as a registry of all social media accounts managed by U.S. federal government agencies and programs. We hope that any large organization that manages disparate social media accounts will be able to use it.

As built, it allows anyone with a .gov or .mil email address to register a social media account as an official government account. The information gathered about these social media accounts is then made available via an API.


Ringsail is currently being developed. This document should be considered a living document, and will grow over time. Organization is always appreciated.


Ringsail is built on Ruby 2.1.5 and Rails 4.1.1, backed by a MySQL 5 database (or greater).



rake db:create db:migrate db:seed
rake services:load
rails s

Information on specific features

Single Sign On

For the purposes of Single Sign-On (SSO), Ringsail integrates with OMB.MAX. For this integration to work, the domain name of the service must be configured with OMB MAX as an external dependency. It also requires configuration of groups in the secrets.yml file (the user and administrator groups to check against). Leaving these blanks will cause every user account to have either user level or administrator level access.

In development mode, users from the db:seeds file will be created with each level of access available in the system. There should be no need to integrate with a CAS provider for development purposes.

If you are looking to run your own version of the application, either modify the authentication mechanism or integrate with a CAS provider.

Social Media Accounts

Social media accounts are stored as Outlets internally. This is for the purposes of naming as having "accounts" as a name is particularly useful, and more closely matches with terminiology of the web communication divisions of various government agencies.

The major goals of social media accounts is to be able to search, sort, and verify their authenticity.

Social Media Services

Social media services change rapidly, so Ringsail allows new services to be added to the database through admin interface using a flexible mechanism.

Under Admin -> Services List, social media services may be created, edited, and un/archived. Regular expressions and string templating can be used in the definition and updating of social media services. A brief primer in the customizable fields follows.

Service host match regexp: A regular expression used to determine the social media service being provided by the user when the user pastes a canonical url. Checks against the host portion of the URI.

Display name template: A string representation of how the Outlet's binding to a social media account should appear, e.g. "John Smith on Facebook". The placeholder <account> is replaced with the account's primary identifier.

Service url canonical template: A string representation of how the Outlet's binding to a social media account should appear, e.g. "". The placeholder <account> is replaced with the account id.

Account id regex matchers: These are evaluated in the following order. The first to match determines the account id, or else has the stated effect. All require the <id> capture token to be included in the regular expression.

1. Reject All regexp: Ceases trying to determine the social media service if the URI path matches this regular expression.

2. Host match regexp: Tries to match on the URI host. Most useful for subdomain-based accounts, e.g.

3. Path match regexp: Tries to match on the URI path. Useful for most social media services, e.g.

4. Fragment match regexp: Tries to match on the URI fragment if it exists; if it does not, tries to match on the URI path. The Twitter service uses this regular expression.

5. Conditional regexps: When the "If" expression matches the URI path, try to match against the "Then" expression. Otherwise, try to match against the "Else" expression.

6. Stop words array: Specified as a commma-delimited list, this can be used to ensure that a dashboard or aggregate landing page is not registered as a social media Outlet, e.g. /newsfeed. If the account id matched by some method above is included in the stop list, it is blocked.

Mobile Applications

Mobile applications are stored as MobileApps internally. This name much more closely reflects their purpose than social media accounts.

The major goals of mobile applications is to be able to search, sort, and verify their authenticity.

Mobile Application Plugins

Mobile application apis change less rapidly than services, but we've deigned to treat them in a fashion similar to social media plugins, to allow easy expansion and development. We will be abl adding clases for the handling of mobile application apis to /lib/mobile/


Current workflow consists of regular users submitting social media and mobile applications into a "Pending" status. Administrators can review these and place them in an 'Published' state. After 6 months without being modified, records will be placed in an "under review" status and contacts for their related agency and record will be notified. These "under review" items will be completely viewable by the public, but administrative users may archive them if they are not attended to.