All Projects → DemocracyClub → WhoCanIVoteFor

DemocracyClub / WhoCanIVoteFor

Licence: other
🗳 The source for https://whocanivotefor.co.uk/

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to WhoCanIVoteFor

Nosdeputes.fr
Repository of NosDéputés.fr : the french parliamentary monitoring website
Stars: ✭ 69 (+97.14%)
Mutual labels:  democracy, civic-tech
Decidim
The participatory democracy framework. A generator and multiple gems made with Ruby on Rails
Stars: ✭ 894 (+2454.29%)
Mutual labels:  democracy, civic-tech
Openciviwiki
Building a Better Democracy for the Internet Age
Stars: ✭ 275 (+685.71%)
Mutual labels:  democracy, civic-tech
Theyworkforyou
Keeping tabs on the UK's parliaments and assemblies
Stars: ✭ 173 (+394.29%)
Mutual labels:  democracy, civic-tech
covid-19-date-la-zi
Vizualization App to track the COVID-19 epidemic
Stars: ✭ 40 (+14.29%)
Mutual labels:  civic-tech
yournextrepresentative
A website for crowd-sourcing structured election candidate data
Stars: ✭ 56 (+60%)
Mutual labels:  civic-tech
ACCESS-NYC-PATTERNS
ACCESS NYC Pattern library and design system documentation for https://access.nyc.gov. Maintained by @NYCOpportunity
Stars: ✭ 14 (-60%)
Mutual labels:  civic-tech
iced-coffee
❄️☕ Leadership Team To-Dos!
Stars: ✭ 17 (-51.43%)
Mutual labels:  civic-tech
meirim
Meirim is an open-source smart city application that facilitates transparency in urban planning.
Stars: ✭ 39 (+11.43%)
Mutual labels:  democracy
Interview
Code completion and code review for identifying C# candidates
Stars: ✭ 22 (-37.14%)
Mutual labels:  candidate
CVparser
CVparser is software for parsing or extracting data out of CV/resumes.
Stars: ✭ 28 (-20%)
Mutual labels:  candidate
openaustralia-parser
Parser component for OpenAustralia.org
Stars: ✭ 28 (-20%)
Mutual labels:  democracy
prototype-fund-projects
💰 A List of All Projects Funded by the Prototype Fund w/ Links to Code Repos
Stars: ✭ 13 (-62.86%)
Mutual labels:  civic-tech
proca
Widget to transform your website into a cutting-edge campaign in 10 min. multi-lingual, privacy first.
Stars: ✭ 29 (-17.14%)
Mutual labels:  civic-tech
democracy
Tools for peer-to-peer privacy with Ethereum and AZTEC
Stars: ✭ 36 (+2.86%)
Mutual labels:  democracy
digital
Public documentation and wiki for DoIT’s Digital team. Monorepo for new services.
Stars: ✭ 17 (-51.43%)
Mutual labels:  civic-tech
cia
Citizen Intelligence Agency, open-source intelligence (OSINT) project
Stars: ✭ 79 (+125.71%)
Mutual labels:  civic-tech
tenants
JustFix.nyc is a tool to document, organize, and take action in getting repairs made on your apartment.
Stars: ✭ 15 (-57.14%)
Mutual labels:  civic-tech
quadratic-voting
Real-time Quadratic Voting dashboard to encourage mathematically optimal voting in democratic communities.
Stars: ✭ 74 (+111.43%)
Mutual labels:  democracy
who-owns-what
Who owns what in nyc?
Stars: ✭ 146 (+317.14%)
Mutual labels:  civic-tech

CircleCI Coverage Status Code style: black

WhoCanIVoteFor

This project is brand new!

It is designed for people who don't know loads about the ins and outs of elections to use to find out everything about upcoming elections, including candidates, polling stations, electon dates, etc.

It will have the following features:

  • "Given a postcode, when is my next election?"
  • "Who are the candidates per election?"
  • "Where is my polling staion?"
  • Enter email address and postcode to get alerted about future elections in yous area
  • Option to show interest in standing for future elections
  • Option to record results of elections (power users only, maybe in a different interface to the normal one)
  • …and other things like that.

It might be good to look at this issue for a little more info.

The reason for building this site:

  1. We have some other tools that are designed for gathering data, for example Democracy Club Candidates and UK Polling Statons. There is value in keeping these sites on their own, as the candidates one in particular has a very different audiance to this site.
  2. We want to allow 3rd parties to write sites that we can include in this one via data dumps. 3rd parties shouldn't have to use our codebase in order to make interesting things. We saw this a low during the UK General Election.
  3. This site is very read heavy, so we can think about optimizing for that, rather than both read and write heavy operations. In 2015 this site was a Jekyll install.
  4. We want to be able to spin up new ideas quickly in this codebase, and not pollute the YourNextRepresentative code too much (it has an international focus)

photo 04-03-2016 17 18 46

Results Recorder App

This app will be used by people both at counts and after the count to record results from each election.

There are two types of 'result' that we want to capture:

  1. 'Control' of councils. This is the dominant party or 'No Overall Control' if no party has more than 50% of the council seats. This is a fairly simple data model (AuthorityControlSet), looking something like controlling_party(NULL=True), authority. Stretch goal would be to pre-load the control model with the previous year's control (data to be provided), to allow 'swing' to be calculated ("HOLD", "LAB GAIN", etc).
  2. Votes Cast per person. This is slightly more complex than the above, with roughly the following model:

Results App

In addition to this, we will ask them to record the number of spoilt votes, and the turn out if it's reported.

For both of the above, a non-authenticated user can navigate to an election and area. There they can enter 'control' and 'votes cast' on two different forms.

Both workflow should consoder the following:

  • We want to record more than one result of it's class ('control' and 'votes cast') per election. There are a number of reasons for this:

    1. The result may have been recorded incorrectly, either because of a mistake or out of malice.
    2. The result announced at the count might not be the actual final result – apparently this happens alarmingly often.
    3. More than one person might report the results.
    4. Someone might want to double check the results as published on the council's web site at a later date (see #2).

    There should be a nice way to see ResultsSet and AuthorityControlSet objects that have differing results recorded, and we should provide some shortcuts, for example to ResultsSet objects where the sum of the CandidateResult votes_cast field isn't the same.

  • Sourcing and timing is important for us, so each model should extend from an abstract base class that has created (datetime), modified (datetime) and source (TextField). Forms should ask for a source (we need to decide if this is required) when recording either type of result.

  • There are different voting systems – for example Single Transferable Vote, as used in Northern Ireland. This could be out of scope for this initial phase of work – more research time is needed to see how complex this will be to model.

Dummy ballots and profiles

There is a dummy ballot with dummy candidate profiles, that was produced for The Children's Commissioner for Wales. These are defined in the elections URL file (at time of writing this is "TE1 1ST").

From the resulting dummy ballot page, you can click the candidates to see their dummy profiles. All links on the page are intended to be "dead" links.

Getting started

See INSTALL.md for setup instructions.

Translations

This application can be translated in to differnet languages.

This is done using Django's standard translation system.

TranslatedTemplateView

There are some templates in the system that are mainly text and that rarely change. For example, the election explainers.

Rather than wrapping this complex document in trans tags, we can translate the entire template as a single file.

To do this, we can use TranslatedTemplateView. This extends Django's TemplateView but attempts to load a template relating to the current language, falling back to the one specified in template_name.

For example if the curent language is cy (Welsh):

TranslatedTemplateView.as_view(template_name="foo.html")

Will try to render foo_cy.html first and if that doesn't exist it will render foo.html

Deployments

Deployments are triggered by Circle CI. Take a look at .circleci/config.yml to see details of the deployment workflow.

To increase the number of EC2 instances for an environment (e.g. during busy times around elections) increase the min-size, max-size and desired-capacity variables found in the code_deploy jobs in the config.yml file. For further details, see notes about scaling scaling.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].