Made things a bit cleaner code wise. Lots of changes on the back end to make it easier to add other ballot types to the app. There is still some code cleaning that needs to happen. It is amazing what you can learn in 3 years and how ugly things look 3 years later.
Did some clean up with the JavaScript. There was quite a bit that was added and I was kind of fudging using NPM to get icons and poly fills for web components. I had a Outside directory which had all of my NPM packages that I was loading and then put my code in a js directory. Wasn't the cleanest way to go about it, but it work. Thanks to some work I did with my other project I was able to move everything in the NPM package and have WebPack output my javascript files into the public/js directory. Was even able to compress them to boot.
Added a human.txt file. What is a humans.txt file well, wasn't quite sure myself. But did a bit of research and it basically it is to show credit to the people and technologies that were put into the project. The people part I understand and I put some information about me into it. The technology part not so much, just seems to me to put out too much information that could be used to compromise the application. So I left out the technology part, even though based on my blogs you can probably guess what I have in the back end.
New icons. As you can see on this blog the lines are bit straighter than they were when I first put this up. I re-built the logo to make it so it is reproducible as the old one was hand drawn and really tough to replicate. The old one had a lot of jagged lines in bigger resolutions so a new one in a higher resolution needed to be made. Same basic look and feel of the old one just smoother.
I have learned that Content Security Policies(CSP) have been nothing but trouble. One browser interprets it one way and other interprets another way. So my app would work fine in Firebox or Chrome, but not run any JavaScript on Safari. So for now I have removed it. I have some other mitigations in place, but for now CSP isn't one of them. It is on my list to research more and maybe I will create and article on what I find.
After all this I even put in a feature. I created what I call a Non-Vote button. What is it and why? Well one of my friends that was using the application to place votes on where we were going to eat wanted a way to vote without voting. Basically to say: "Ya I am going, but I really don't care where we go." So for the multi-choice ballots the creator of the ballot has the option to add the button or not. And when someone uses it they still need to enter a name, but no vote would be required or recorded. The user would then show in the list of users that voted just with no votes shown or counted for that user. I can see where this might be counter-productive, but that is why I have left it to the creators to decide if they want to use it or not.
When I get back to this project which might be this summer. I hope to clean up some more code and I am not sure of a feature to add yet, but I will find something to add. Being summer I hope to walk away from the computer and work on some other summery projects. Leave the programming to rainy day projects.
Thanks for reading.