Our main aim is a trustless voting system where anyone can speak their voice and where everything is auditable.
We are engineering building blocks for a permissionless, private and censorship resistant democracy.
Explore the developer portal »
Vocdoni Website | Web Application | Blockchain Explorer | MIT Law Publication | Contact Us
Vocdoni Node | Vocdoni SDK | UI Components | Application UI | Census3
Vocdoni's UI Scaffold is a React application that uses the Vocdoni SDK and UI Components library to provide a user interface for the Vocdoni voting protocol. It is built with Vite and is deployed at https://app.vocdoni.io/.
You can create a .env.local
file to set your custom environment variables
there, here's a list of variables you can use:
VOCDONI_ENVIRONMENT
: the vocdoni environment to be used, eitherdev
,stg
orprod
(defaults tostg
).BASE_URL
is used to specify the public base page during build.BUILD_PATH
Specifies the destination of built files.CUSTOM_ORGANIZATION_DOMAINS
A JSON.stringified object of custom domains mapped to organization ids, to replace the homepage with their profile page.
You can also start the app by prefixing these vars instead of defining your
custom .env
file:
VOCDONI_ENVIRONMENT=dev yarn start
# or an example using many of them...
BUILD_PATH=build/dev BASE_URL=/ui-scaffold/dev VOCDONI_ENVIRONMENT=dev yarn build
The custom domain names environment variable allows to map custom domains to organization ids, so that the homepage rendered will be the mapped organization profile.
CUSTOM_ORGANIZATION_DOMAINS='{"deadcorp.com":"0x000000000000000000000000000000000000dead"}' yarn build
With the example above, accessing the app via the deadcorp.com
domain would render the profile of the organization
with id 0x000000000000000000000000000000000000dead
as the homepage of the app.
In the project directory, you can run:
Runs the app in the development mode.
Open
http://localhost:5173 to view it in the browser (note
the port may change if already used).
Builds the app for production to the dist
folder.
It correctly bundles
React in production mode and optimizes the build for the best performance.
Extracts all i18n strings from the code and puts them in the i18n/locales
json
files. The best way to work with translations is:
Three branches are linked to deploys:
develop
, deployed to app-dev.vocdoni.io and dev.onvote.app, and linked to api-dev.stage
, deployed to app-stg.vocdoni.io and stg.onvote.app, and linked to api-stg.main
, deployed to app.vocdoni.io and onvote.app, and linked to LTS api (formerly prod).
Also, all pushes to develop are deployed three times to netlify (one for vocdoni app dev, another for stage and also one for onvote stg). You can easily access these deploys on each commit to develop, or directly in pull requests.
The common flow to follow when deploying to main
is passing through all the
other stages:
branch from develop => merge to develop => merge to stage => merge to main
The only exception should be when fixing specific versions to a deployment, in such case, a hotfix should be created from the desired branch to be updated:
branch from stage (i.e. h/sdk-0.4.1) => PR to stage
branch from main (i.e. h/sdk-0.5.0) => PR to main
The site is deployed using legacy branch at https://app.vocdoni.io/ and https://onvote.app/.
While we welcome contributions from the community, we do not track all of our issues on Github and we may not have the resources to onboard developers and review complex pull requests. That being said, there are multiple ways you can get involved with the project.
Please review our development guidelines.
This repository is licensed under the GNU Affero General Public License v3.0.
Vocdoni UI Scaffold
Copyright (C) 2024 Vocdoni Association
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.