You’re right and that’s a good way how to look at it.
I have rewritten the code to use global variables and got rid of the Ballot table. All the tables should be read-only from the client - and they’re either public data - constituencies or candidates - or anonymous data - like votes submitted.
I could work on hiding the votes
or schools
tables from client entirely as improvements after key features are done.