Skip to content

Instantly share code, notes, and snippets.

@joshuazap
Last active January 25, 2016 20:53
Show Gist options
  • Save joshuazap/db82126a08c4c189acb7 to your computer and use it in GitHub Desktop.
Save joshuazap/db82126a08c4c189acb7 to your computer and use it in GitHub Desktop.
Technical issues to implement capstone project
**civdoc**
An app that facilitates working with public records and provides social collaboration tools for lawyers, law students, policy experts, interns, volunteers, and people interested in giving a voice to those who cannot speak for themselves.
Milestones
1. As a user, I want to be able to sign up for a free account by providing a user name, organization, password, and email
+ Add and configure Devise gem for user management
+ Add and configure SendGrid gem for emails
+ Migrate User model to add organization, subscribed status and desired display name columns
2. As a user, I want to be able to create, read, update and destroy collections
+ Generate Collection model
+ Run migration
+ Set up associations with User model
+ Generate Collection controller actions for create, read, update, destroy
+ Generate Collection index view
2. As a user, I want to be able to create, read, update and destroy public records
+ Generate Record model
+ Run migration
+ Set up associations with User model
+ Generate Record controller actions for create, read, update, destroy
+ Generate Record index view
3. As a user, I want to be able to create, read, update and destroy tags on public records
+ Generate Tag and Taggings model
+ Run migration
+ Set up polymorphic associations with Record (and User?) model
4. As a user, I want to be able to add and remove public records from collections
+ Set up polymorphic association with Record and Collection (and User?) models
4. As a user, I want to be able to see a list of matching tags when I create or edit tags on a public record
+ Create controller action
+ Create text field with auto complete for collection model, attribute: tag_name
5. Search for public records.
6. Highlight sections of public records.
7. Automatically see hyperlinks to and from citations in public records after the app has parsed the record. Clicking on a citation appearing in the text of a record takes me to the relevant source and background information.
9. Upgrade and downgrade my account.
10. Easily contribute to the open-source @unitedstates project using a built-in form to add citators. (How to Write a Citator: https://github.com/unitedstates/citation/blob/master/HOWTO.md)
As a user with a premium or organization account, I want to be able to:
1. Create, read, update and delete private records.
2. Add and remove collaborators for private records.
3. Identify the authors of public records.
4. Send emails to authors using contact forms.
5. Be notified of changes and updates to public records.
As a developer, I want to:
1. Offer three user plans: standard, premium, and organization.
2. Seed the database with users and example records.
--
Organization Model
User Model (Devise) (Configure sanitize parameters for additional user columns) (Organization id on user)
Collection Model
Record Model
Tag Model
Cite Model
Collaborators model to join User and Collection
Collectable model to join Record and Collection
Taggable model to join Record and Tag
Citable model to join Record and Cite
--
- Add Rspec and Shoulda gems
Before scaffolding data models it'd be useful to have RSpec and Shoulda gems setup and ready for TDD purposes.
- Add Devise gem for user management
- Conceptually define my data models and scaffold them
- Make an inventory of UI elements for CRUD on each model (Record) and resource
- Map those UI elements to bootstrap theme (flat)
There's a hidden UI <div> in the Record index that contains nothing. When you click on an item in the Record index, it sends a message to the hidden <div>'s controller. This message is AJAX. AJAX responds with the information to fill the hidden <div> and it slides out.
- Think about which views contain the various UI elements for each model and controller
- Figure out how to use a hidden AJAX div for the Record view, use record/show.js.erb? Partial, since it shows up for every Record?
- Write a class that connects to the @unitedstates project API
- Seeding the database... with APIs?
... Or rely on users to provide documents?
So, Chris, that's my general outline. Here is the new GitHub repository:
Of course, I want to thank you for helping me conceptualize it during our regular meetings! Any additional feedback you might have about my project is fully welcome in private or on my GitHub! Thanks again!
Working with public records gets a lot easier with an app that provides:
1. Automatic collection, organization, highlighting, tagging, and hyper-linking of relevant:
US Code, US Slip Laws, US Statutes, US Code of Federal Regulations, DC Code, DC Register, and DC Slip Law. Some California Code and California Statutes are available.* Some support for US Court Opinions is available.*
Members of the US Congress, 1789-present, as well as committees, presidents, and vice presidents. (Public domain photos of Members of the United States Congress are used.)
Government acronyms.
US state metadata.
US Congressional Record and legislation nicknames.
2. Integrated search for public domain US government reports, legislation, amendments, and votes.
3. Automatic sending of electronic messages to Members of Congress through contact forms.
4. Automatic tracking of changes to official U.S. House and Senate roll call votes. Some level of real-time monitoring is available.*
5. Automatic collecting and organization of reports from Inspector's General across the US federal government.
6. Automatic parsing of individual court opinions into a usable collection, organization, highlighting, tagging, and hyper-linking across the platform.**
*7. Automatic contributions to the public domain through the [@unitedstates project](https://theunitedstates.io), a shared commons of data and tools for the United States, featuring work from people with the Sunlight Foundation, GovTrack.us, the New York Times, the Electronic Frontier Foundation. Volunteers, interns, and users inside and outside the open source community can directly contribute using built-in tools.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment