This is a work of my own, where I use REACTJS, SMART CONTRACT TECHNOLOGY (SOLIDITY), BLOCKCHAIN, WEB3 ETHERS, HARDHAT and METAMASK to simulate TSE ballot boxes, and most importantly, with transparent votes and without it being possible to tamper with them in any way.
This project will be a monorepository, where it will contain the root hierarchy and two hierarchies, which are:
- FRONTEND (Web3)
- BACKEND (Smart Contracts with Solidity)
Each project will contain its own hierarchy and dependency control, so to learn more about each project, go to each project's main folder.
๐ To interact with the project you can access this link [CLICK HERE]
This project has the following controls:
FRONTEND WORKFLOW
JOB NAME | DESCRIPTION |
---|---|
RUN PRETTIER | Test the Style-Guide. |
RUN STYLELINT | Test styling with CSS-In-JS. |
RUN LINT | Test Syntax Analisys of the code. |
RUN JEST | Unit Test with JEST. |
BACKEND WORKFLOW
JOB NAME | DESCRIPTION |
---|---|
RUN PRETTIER | Test the Style-Guide. |
RUN LINT CONTRACTS | Test Syntax Analisys of the .sol codes. |
RUN LINT ALL FILES | Test Syntax Analisys of the all files. |
RUN MOCHA AND CHAI | Unit Test with MOCHA and Chai. |
DECRYPT SECRET KEYS
JOB NAME | DESCRIPTION |
---|---|
RUN SECRET KEY DECRYPTION | Decrypts the secret environments that are in the github repository. Encrypt them using OPENSSL with a login and password to which only I have access to obtain them and create the .ENV file. |
WORKFLOW CONTROLLER
JOB NAME | DESCRIPTION |
---|---|
FRONTEND | RUN THE FRONTEND WORKFLOW. |
BACKEND | RUN THE BACKEND WORKFLOW. It is necessary to wait for the FRONTEND workflow to pass all the tests. |
DEPLOY | RUN THE VERCEL WORKFLOW. It is necessary to wait for the FRONTEND and BACKEND workflow to pass all the tests. |
This is a simple working flow, which was covered in this project.
Where the voter is required to connect his cryptocurrency wallet to the system (metamask), and he is identified through the unique hash that the wallet has.
Soon after, it is necessary for him to have an X amount of the token to be used by the system, in this case we are using ethereum.
The system validates the connection of your wallet and the necessary amount of ethereum, if everything is correct, the voting actions are released for it.
The voter chooses his candidate and the system (web + ethers) validates the form and processes the data, along with the hash of his wallet and the necessary amount of ethereum needed for this on the blockchain (where the contract is located).
In the blockchain, a block is generated in the blockchain, where the miner validates that block.
After the validation of that bit, which would actually be the processing of the contract that is part of a program (where you can find who voted, who voted for and when they voted).
After processing, the data is saved on the blockchain forever and can never be tampered with and the system (web + ethers) receives real-time voting information as if it were websockets.
See the LICENSE for more details.
Made with โฅ and with the intention of learning and passing on knowledge.
So that I can work full-time and open to the community, thus bringing more relevance and technological solutions. It would mean a lot to me and the whole community if you help me reach this goal.