====================== ====================== DumpTheRinos.org SPEC ====================== ====================== Note: "RINO" stands for "Republican in Name Only". All RINO's are members of Congress who are in the Republican Party, but not all Republicans holding office are RINO's. The purpose of this project is to faciliate self-organizing against the re-election of RINO's. I need a website to provide about 147 lists of identical structure. Each list is dedicated to a single member of the US Congress, and will specifically consist of a list of citizens who are looking to remove them from office, during their next primary. 117 of these lists will be associated with a member of the House of Representatives (called HR), and the remaining 30 will be associated with a member of the Senate. The 117 particular RINO HR members in question can be found at this URL: https://www.thegatewaypundit.com/2024/04/breaking-rinos-win-americans-lose-motion-table-motion/:. The 30 particular RINO Senate members in question can be found at this URL: https://www.thegatewaypundit.com/2024/04/just-senate-passes-bill-renew-fisa-warrantless-spy/ The purpose of these lists is simply to allow members to identify other members who are nearest to them, and to provide the means (via their email) to initiate contact. From there, they will have to self-organize (or maybe, on occasion, just socialize; whatever they do is up to them; but the ultimate aim is to remove the politician that the list they sign up for is dedicated to) The members of each list are called "posse members". So, e.g., the list pertaining to Senator Mitch McConnel is the "Mitch McConnel Posee List". (BTW, I'm aware of the fact that McConnel has announced his retirement. Whatever. His constituents can organize a sarcastic "good riddance" party.) ========================= RINO data structure ========================= last_name varchar(30) first_name varchar(30) hr_or_senate int // use 1 for HR, 2 for Senate district varchar(8) // null for Senators // 8 is the length of "At Large"; state varchar(14) // the full name of the state state_abbreviation varchar(3) // states have both 2 and 3 character abbreviation; use the 3 character one ========================= RINO data information ========================= Note: I'm only providing the names of the HR RINO's and Senate NON-RINO's. House of Representatives: https://www.house.gov/representatives // all RINO's have "Party" = "R" Senate: https://www.senate.gov/senators/ // all RINO's have "Party" = "Republican" ========================= SIGN UP FORM REQUIREMENTS ========================= The sign-up form must display captcha. Furthermore, the system must send out a confirming email, which must be replied to, in order for the person to be officially made a member of the system. Let's called such users "verified users". (There should also be a way for verified users to reset their password, if they lose or forget it. And also to change any bit of their data showing in their signup form, EXCEPT private_email and username) The signup form has 6 mandatory fields: -username (which must be unique to the system) / (varchar(30)) -state (which must be one of the 50 US states; use the 3 letter abbreviation in the interface and database) -zipcode (which must be a legal US zip code; and furthermore, must be associated with what they enter for their state; require 5 digit zip codes, but allow for expanded 5 + 4 digit zip codes, which allow for more accurate distance calculations.) -is_constituent (bit) (since it is possible for one zip code to belong to two different Congressional districts; default is true; however, if user is already in one House of Representives list, the default be set based on the value of is_constituent in his/her other HR lists) -private_email varchar(30)(which is only used the the system administrator; must be valid email format) -public_email varchar(30)(interface will suggest that they create a new email account just for this system, as this email can be accessed by spammers; must be valid email format; if they insist, they can have public_email = private_email) optional fields are: -first_name (varchar(30)) -last_name (varchar(30)) -twitter_handle (varchar (30); must be valid format) -gettr_handle (varchar (30); must be valid format) -truthsocial_handle (varchar(30); must be valid format) -skype_handle (varchar(30); must be valid format) -is_organizer_wannabe (bool) (bit; default is false; interface will note that setting this to true implies that they will be as responsive as possible to other members of the system that email them to their public email; furthermore, it is suggested that they periodically send a welcome email to all new members' public email, introducing themselves and stating their activist history, and activist intentions) NOTE: the User table will also record: -signup_date (date) NOTE: for this Day 1 project, consider only RINO's and citizens from the 50 US states. In particular, ignore: American Samoa District of Columbia Guam Northern Mariana Islands Puerto Rico Virgin Islands ========================= EDIT FORM REQUIREMENTS ========================= Same structure as the SIGNUP FORM, but username and private_email cannot be changed. If a user changes his state, then the same integrity check must validate that his new zipcode is within the new state; Similarly, if the zipcode is changed, the system must check that it is consistent with the value of the state. GOTCHA: Some US zipcodes will cross state lines; i.e., citizens in 2 different states can share the same zipcode; ================== INTEGRITY CHECKS ================== If a user is a member of multiple House of Representative posse lists (maximum 5; uniqueness is determined by their private_email, which should be 1-1 with their username, as both are unique in the system), then they can have is_constituent == TRUE in ONLY ONE such HR posse membership list. A user can also only belong to a single Senate posse list. They can still set is_constituent = FALSE, for the edge case that they are a disgruntled non-citizen, e.g., or live in a neigboring state, near the border. The user should be able to become a member of a posse list as a non-constituent before or after becoming a member as a constituent ===================== HOME PAGE ===================== Introductory Verbiage: The site is to facilitate citizens' self-organization against RINO's in the House of Representatives, based on https://www.thegatewaypundit.com/2024/04/breaking-rinos-win-americans-lose-motion-table-motion/ for members of the House of Representatives. (It was this article which pushed me over the edge to attempt create this website. ) This list did not attempt to determine who President Trump does or does not like. E.g., Trump has spoken badly of Chip Roy, who is more conservative than Trump, and I'll guess less of RINO than Trump! It's also to similarly facilitate the removal of US Senate RINO's, as per https://www.thegatewaypundit.com/2024/04/just-senate-passes-bill-renew-fisa-warrantless-spy/ /END/ Introductory Verbiage Then: {title} House of Representatives {list of HR RINOs, alphabetically sorted by last name, displayed in format {last_name}, {first_name} {district} {state} } Then: {title} Senate {list of Senate RINOs, alphabetically sorted by last name, displayed in format {last_name}, {first_name} {state}} Note: Each RINO will be hyperlinked to a combined search + search results page ============================================= SEARCH + SEARCH RESULTS PAGE, aka POSSE LIST ============================================= Title: Posse List for {RINO first_name} {RINO last_name} Header Section: RINO INFO: {title} {first_name} {last_name} {district (if non-null)} {state} QR Code for this page // Very Important! Export (button; creates a .txt file consisting of a comma separated list of ALL results of the search results, which is then downloaded; to deter spammers, a captcha should be enforced each time before this button executes) Body Section: Search Criteria Section: {StartDatePicker} {EndDatePicker} NOTE: These are to filter the search results by the joining date of the users. Defaults values are Jan 1, 2024 for StartDate, and TODAY for EndDate. {Checkbox : "Constituents Only"} NOTE: default is false; this is to filter for just constituents in the search results Search Results Section: Everybody visiting this page will be shown a count of all the verified posse members who are constituents of the RINOs in question. IF the user is a verified member of the posse, then the search results will ALSO show a list of all the other members of the posse, in increasing order of distance between each of the other members, and themselves. This distance is determined by calculating the geographical distance between their respective zipcodes. So, each line of the list will contain just: {username} {calculated distance} {public_email} {is_constituent} The results should be paged, 50 lines per page IF the user is NOT a verified member of the posse, then they will see, instead of a list, just an invitation to join the posse: "You can view a list of posse members' contact public emails if you are a member of this posse. Join now" // "Join now" will be hyperlinked to a sign up page for the same RINO