Skip to content

iOS election monitoring app - a mobile app through which commissioned observers can easily report back to their respective NGOs throughout the election day

License

Notifications You must be signed in to change notification settings

code4romania/monitorizare-vot-ios

Monitorizare Vot - iOS app Build status

GitHub contributors GitHub last commit License: MPL 2.0

See the project live

Monitorizare Vot is a mobile app for monitoring elections by authorized observers. They can use the app in order to offer a real-time snapshot on what is going on at polling stations and they can report on any noticeable irregularities.

The NGO-s with authorized observers for monitoring elections have real time access to the data the observers are transmitting therefore they can report on how voting is evolving and they can quickly signal to the authorities where issues need to be solved.

Moreover, where it is allowed, observers can also photograph and film specific situations and send the images to the NGO they belong to.

The app also has a web version, available for every citizen who wants to report on election irregularities. Monitorizare Vot was launched in 2016 and it has been used for the Romanian parliamentary elections so far, but it is available for further use, regardless of the type of elections or voting process.

Contributing | Built with | Repos and projects | Feedback | License | About Code4Ro

Contributing

This project is built by amazing volunteers and you can be one of them! Here's a list of ways in which you can contribute to this project.

IMPORTANT: Please follow the Code4Romania WORKFLOW

Important, before you start

Firebase

This project uses Firebase for event and usage tracking and Crashlytics for crash reports. So before you start work on it, you'll need to go to your Firebase console and create an app for this project, then download its GoogleService-Info.plist file and copy it to the Config folder.

Built With

  • Swift 5
  • Core Data
  • Firebase (Remote Config, Analytics, Crashlytics)
  • Alamofire
  • Reachability

Swagger docs for the API are available here.

Architecture

  • The app is localized, meaning it's easier for any interested party to fork the project and use it in other countries, simply localizing the messages
  • The UI relies on the MvvM pattern
  • The data is stored in the local Core Data instance and is uploaded to the server using the API described above
  • In case of a faulty internet connection, the data is marked as unsynced (using the synced flag on interesting entities and we're automatically retrying when connection is re-established and when the user opening the app; there's also a manual sync function in the forms screen)
  • We rely on Firebase's RemoteConfig for remote settings
  • Most important events are logged using Firebase's Fabric events
  • We monitor crashes using Firebase's Crashlytics
  • The API client uses Codable models which are then transformed into Core Data models to be persisted locally

Localization & Internationalization

The Localization files can be found in the MonitorizareVot/Localizations folder. If you want to add a new language, simply add it in Xcode, then copy the Localizable.strings and InfoPlist.strings files from the Base/en lproj folders and copy them in the new language's folder.

You should only update the strings on the right side of the = (equals sign). Make sure they're enclosed in double quotes (") and that every line ends with a semicolon ;.

In order to make the new language available (and maybe restrict other ones), make sure you edit the ALLOWED_LANGUAGES value in Build Settings (it's a comma separate list of language codes.

Repos and projects

alt text

Other related projects:

Feedback

  • Request a new feature on GitHub.
  • Vote for popular feature requests.
  • File a bug in GitHub Issues.
  • Email us with other feedback [email protected]

License

This project is licensed under the MPL 2.0 License - see the LICENSE file for details

About Code4Ro

Started in 2016, Code for Romania is a civic tech NGO, official member of the Code for All network. We have a community of over 500 volunteers (developers, ux/ui, communications, data scientists, graphic designers, devops, it security and more) who work pro-bono for developing digital solutions to solve social problems. #techforsocialgood. If you want to learn more details about our projects visit our site or if you want to talk to one of our staff members, please e-mail us at [email protected].

Last, but not least, we rely on donations to ensure the infrastructure, logistics and management of our community that is widely spread across 11 timezones, coding for social change to make Romania and the world a better place. If you want to support us, you can do it here.