This repository is a "reference implementation" of ElectionGuard UI written using Typescript and Lerna. This is a Monorepo using Lerna which has multiple packages. These packages can be compiled and released separately. The websites use React components. This library can also be used to construct frontend implementations that need to talk to the ElectionGuard server API.
File/folder | Description |
---|---|
packages |
Monorepo packages for this project |
package/admin-app |
sample UI for an admin website |
packages/api-client |
library for connecting to api backend |
CONTRIBUTING.md |
Guidelines for contributing |
README.md |
This README file |
LICENSE |
The license for ElectionGuard-Python. |
ElectionGuard is an open source software development kit (SDK) that makes voting more secure, transparent and accessible. The ElectionGuard SDK leverages homomorphic encryption to ensure that votes recorded by electronic systems of any type remain encrypted, secure, and secret. Meanwhile, ElectionGuard also allows verifiable and accurate tallying of ballots by any 3rd party organization without compromising secrecy or security.
Learn More in the ElectionGuard Repository
ElectionGuard supports a variety of use cases. The Primary use case is to generate verifiable end-to-end (E2E) encrypted elections. The ElectionGuard process can also be used for other use cases such as privacy enhanced risk-limiting audits (RLAs).
- Node is used to simplify the commands and GitHub Actions. This approach is recommended to simplify the command line experience. This is built in for MacOS and
- Yarn is used as the package manager instead of npm.
- Lerna is used to create a monorepo and multiple projects inside of this single github repo. This allows for each small project to be built and deployed separately.
- GNU Make is used to simplify the commands and GitHub Actions. This approach is recommended to simplify the command line experience. This is built in for MacOS and Linux. For Windows, setup is simpler with Chocolatey and installing the provided make package. The other Windows option is manually installing make.
This repository works fine in Windows, however it requires linux style line endings for ts and tsx files. The .gitattributes
file should handle this, but if you need to replace all line endings manually, then in WSL:
sudo apt install dos2unix
find packages/*/src -type f -iname '*.ts*' -exec dos2unix -k -s -o {} ';'
In the project directory, you can run:
Using make, the entire GitHub Action workflow can be run with one command:
make
Installs dependencies and does lerna bootstrap for the projects.
make install
Lints all of the packages.
make lint
Builds the app for production to the build
folder for each package.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
Your app is ready to be deployed!
See the section about deployment for more information.
make build
Launches the test runner in the interactive watch mode.
make test
Runs the apps in development mode. Open the Admin App at http://localhost:3001 to view in the browser.
The page will reload if you make edits. You will also see any lint errors in the console.
make start
Runs only the admin application.
make admin-app
A local docker image will be created to run the admin website instead of running it directly like the 'make start' command above.
make docker-dev-app
This project encourages community contributions for development, testing, documentation, code review, and performance analysis, etc. For more information on how to contribute, see [the contribution guidelines][contributing]
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
Please report any bugs, feature requests, or enhancements using the GitHub Issue Tracker. Please do not report any security vulnerabilities using the Issue Tracker. Instead, please report them to the Microsoft Security Response Center (MSRC) at https://msrc.microsoft.com/create-report. See the [Security Documentation][security] for more information.
ElectionGuard would love for you to ask questions out in the open using GitHub Issues. If you really want to email the ElectionGuard team, reach out at electionguard@microsoft.com.
This repository is licensed under the MIT License
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.