This is an implementation of voting on the solana blockchain.
You create a topic to vote on and set deadlines for sumbitting options and for voting. Anyone can submit a new option(party) to vote on. After the application period ends new options are not accepted and voting period starts. Anyone can vote only once.