Skip to content

Decentralized voting application using Stellar smart contracts for transparent and anonymous voting. ⛓️

License

Notifications You must be signed in to change notification settings

danieljancar/votevault

Repository files navigation

VoteVault Logo

VoteVault

A open-source, blockchain-based voting platform built with Stellar Smart Contracts.

Stellar Nx Workspace Angular TypeScript

Release Linter Formatting

MIT License


This project is part of the Stellar Smart Contract Challenge on Dev.to.

We built a blockchain-based voting platform using Stellar Smart Contracts. VoteVault is a secure and transparent voting platform that allows users to create and participate in voting processes. Find out more about our journey building VoteVault in the Dev.to post or visit the VoteVault website.

Note: Our Smart Contracts are still deployed on the Stellar Testnet and can't be used for a large audience yet. Also we can't ensure full auth security and integrity. The application currently serves as a proof-of-concept and fully functioning prototype. 🌱

Table of Contents

Features

With VoteVault, you can create and participate in secure and transparent voting processes. Here are some of the features of VoteVault:

  • Stellar Smart Contracts: Ensure secure and verifiable voting through Stellar smart contracts.
  • Angular Frontend: Enjoy a sleek, responsive user interface designed using Angular, optimized for both desktop and mobile devices, developed with Tailwind CSS.
  • Secure and Transparent: VoteVault tries to implement secure and transparent voting processes, ensuring the integrity of the voting system.
  • Verifiable Results: All votes are stored on the Stellar blockchain, allowing for verification of the voting results.

Product Evaluation

User Stories

We wrote down some user stories to guide the development of VoteVault. Here are some of the most important ones:

Authentication

  • As a user, I want to be able to register a new Stellar account, so I can participate in the voting process.
  • As a user, I want to be able to login to my account, so I can access the voting platform.

Voting

  • As a user, I want to be able to create a new vote, so I can start a voting process.
  • As a user, I want to be able to cast my opinion on a vote, so I can participate in the voting process.
  • As a user, I want to be able to see the results of a vote, so I can verify the voting process.
  • As a user, I want to be able to copy the vote link, so I can share it with others.

User Experience

  • As a user, I want to get feedback on my actions, so I know what is happening.
  • As a user relying on accessibility features, I want to be able to use the platform, so I can participate in the voting process.

Use Cases

VoteVault integrating Stellar Smart Contracts could be used in various scenarios, such as:

  • Company Elections: Companies could use VoteVault to conduct internal elections, such as electing a new board member.
  • Community Decisions: Communities could use VoteVault to make decisions on community projects or initiatives.
  • Controversial Opinions: People could use VoteVault to express their opinions on controversial topics.

Based on this evaluation, the product sets a base source code for enhancing the platform with more features. Such as using VoteVault "core" as a base for a more complex voting system, like government elections with each citizen being registered once (which would kill the anonymity of the votes - sigh) or other useful extensions of our application. This provides a real-world use case for the Stellar Smart Contracts and the VoteVault platform.

Known Issues

As this project was developed in a short amount of time, there are some known issues that we would like to call out and address in the future:

  • Accessibility: The platform is not fully accessible yet. We tried to implement some accessibility features, but there is still some work to do.
  • Error Handling: The error handling is not perfect yet, but already pretty good.
  • Protect from Sybil Attacks and improved Authentication: We need to implement a way to protect the platform better from Sybil and other attacks.
  • Improve UI/UX: We implemented a lot of logic and tried to keep the UI clean and straightforward, still we will continue working on it and improving as much as possible.

Future Features

We also got some additional features we thought about and couldn't implement yet.

  • Voting Timeframes: Users creating a new vote can decide whether there's a start and end date for the votes.
  • Multiple Options: Users can also create votes where multiple options can be selected.
  • Full Test Coverage: We want to have full test coverage for the platform.
  • Automated Testing: We already have implemented some automated testing and linting, also in the release.yml action, where the app is automatically deployed. If we add full test coverage, we can also add automated testing to the deployment process (spec and e2e tests).
  • Dynamic OG Tags: We want to implement dynamic OG tags for the vote pages, so users can share the vote on social media platforms even better.
  • Fees and Tokenization: In a production environment, fees will need to be covered either by the vote creator or the participants. This could involve tokenization mechanisms where a small fee is charged for vote creation or participation, ensuring the platform remains sustainable.

Contributing

Contributions are appreciated! If you want to contribute, please read and comply with the Contributing Guidelines, Code of Conduct, and Developer Certificate of Origin first.

Developer Guidelines and Repository Setup

We have several documents for developers to help them get started with the project. You can find them in the docs or .github directory. Here are some of the most important ones:

We very much suggest you read these documents before contributing to the project, especially the Contributing Guidelines and Workflow.

License

This project is licensed under the MIT License. By contributing to VoteVault, you agree that your contributions will be released under the same license. Also, you agree to the Contributor Covenant Code of Conduct and Developer Certificate of Origin.

Credits

Special Thanks

Thanks to the following projects and their contributors for making VoteVault possible:

This project was done as part of the Stellar Smart Contract Challenge on Dev.to.

Contributors

Thanks to the following people for their contributions:

Contributors

Released under MIT License by @danieljancar and @cyrilkurmann