Commit graph

31 commits

Author SHA1 Message Date
Wolvan
59a2733df6 Use git commit hash instead of version for dev
This way people can go straight to the commit that has caused the dev
page to be built and it is clear what version the site is based on.
2022-01-30 19:24:54 +01:00
Wolvan
59f1c7db6e Appease crawlers and embbeders
`<meta>` tags have been added to relay information for websites trying
to pull information from the page (like discord) as well as web crawlers
to index the page.
2022-01-30 17:46:59 +01:00
Wolvan
afc7bbad01 Implement header based safety features
Using the `helmet` package, a certain set of security critical headers
are set to prevent XSS attacks and the like.
2022-01-30 16:59:11 +01:00
Wolvan
26a42333fe Add QR Code to poll pages
This way, people can easily just use their QR readers to reach the
voting page. The QR is constructed via Google Charts API and the URL is
based on the HOST header of the request.
2022-01-30 16:49:05 +01:00
Wolvan
74a0910d11 Fix NaN on result refresh
With 0 total votes, the results page would show NaN after the first
refresh. Don't divide by 0, children.
2022-01-12 21:14:44 +01:00
Wolvan
cfa150cc42 Move API and document it
The API has been moved to a /api path to distinguish it from the form
submission path and make it clear it is a callable API.
The API also has been rudimentarily documented.
2022-01-12 21:11:09 +01:00
Wolvan
ce2601642b Add version of software to footer
The version also includes a link to the github repo tag of that
version's release build.
2022-01-12 19:53:30 +01:00
Wolvan
ab151cb732 Use CSRF token to discourage botting
A suggestion to avoid stupid bots to vote on polls was a token that gets
checked to a session cookie on vote submission.
2022-01-12 19:46:45 +01:00
Wolvan
9e706fb484 Make header backlink to home 2022-01-11 22:05:37 +01:00
Wolvan
cb0ec9dfa1 Add non-JS way of adding options
A new button has been added (which gets automatically removed by JS)
that lets a user add a new option.
Also, an XSS exploit has been fixed.
2022-01-11 21:00:44 +01:00
Wolvan
23445f7509 Fix options not appearing
The options only appeared when at least 2 letters were typed into the
input field as the event triggered before a value was set into the input
field. Using `keyup` instead of `keydown` delays the event after a
letter has been typed into it.
2022-01-10 21:47:35 +01:00
Wolvan
74729b1e9c Add a couple more projects to the footer
As well as optimize the footer for small screens.
2022-01-08 16:23:27 +01:00
Wolvan
aee9ed796e Fix results page design
Fix the length of the bar when it is at 100% as well as an issue where
division by NaN happens when no votes have been given yet.
2022-01-08 16:15:46 +01:00
Wolvan
7887fa360b Fix votes from breaking server side rendering 2022-01-08 16:12:51 +01:00
Wolvan
927d2666e9 Satisfy tests to npm i doesn't fail 2022-01-06 21:28:32 +01:00
Wolvan
e9aaedb494 Implement auto update
Every 5 seconds the system attempts to fetch the most recent vote state
of the poll and display it to the user.
2022-01-06 20:44:29 +01:00
Wolvan
dca2cc3eeb Create results page
The page displays the amount of votes, percentage and bars for quick
visual comparison, as well as a pie chart created with google charts.
2022-01-06 19:52:53 +01:00
Wolvan
2f8f36a7ca Move closing tag into the right position 2022-01-06 19:43:29 +01:00
Wolvan
069128b2d5 Remove unecessary replacement anchor 2022-01-06 15:33:23 +01:00
Wolvan
edff19fb5b Create voting page
This page displays all options that have been set on creation. Thanks to
`textFit` the texts in the title and options automatically get sized
correctly. The create poll button has also been renamed to submit-button
to make it more universal on other pages.
2022-01-04 22:25:05 +01:00
Wolvan
5b5dc9d922 Serverside render footer
This way it's easy to add new links or a changed copyright to the footer
on all pages.
2022-01-04 22:11:27 +01:00
Wolvan
3e06f08e42 Add Github Repo to Footer 2022-01-01 14:45:16 +01:00
Wolvan
c00ea29b4f Implement Form Expansion
If more than 3 options are written down, additional inputs will load in
to allow more options. The maximum cap of options currently is set to
255 but can be configured in Config.ts.
Likewise, the input length can also be controlled from there.
2022-01-01 14:36:25 +01:00
Wolvan
678342a9c6 Implement error message display
The error and visibility is set by the frontend server-side renderer.
2022-01-01 13:54:58 +01:00
Wolvan
041e5e0acc Optimize for small screens
A sensible min width is sit to avoid cutting off anything and text is
shortened to be suitable for small screen sizes without getting line-
wrapped.
2022-01-01 13:54:30 +01:00
Wolvan
9fa3eabad1 Make frontend js-less
The frontend should work without having JS enabled. JS will enhance the
experience but should under no circumstance be necessary.
To achieve this, the entire entry system has been turned into a form
that posts its values to a new backend path specifically made to take
form responses. Instead of returning an API response, it also redirects
the browser to either the voting page on successful creation or the
frontpage with a bunch of get parameters that are used to prefill the
form in a server-side rendering process.
An error parameter is also given but there is no way to display said
error for now.
2022-01-01 04:13:24 +01:00
Wolvan
862fe9d2f2 Allow browser JS to be written for the frontend
ESLint in this project is by default configured to lint NodeJS
source code. The `./frontend` folder contains browser source code
though, so a new `.eslintrc` sets that for the frontend folder.
2022-01-01 04:06:20 +01:00
Wolvan
5f9f2efee7 Continue refining frontend for poll creation 2021-12-29 19:46:47 +01:00
Wolvan
2db013c204 Begin designing the UI 2021-12-29 19:22:38 +01:00
Wolvan
e83766309a First steps towards functional frontend
Polls and their results can now be accessed as long as they are found on
the backend.
2021-12-29 18:21:22 +01:00
Wolvan
8c3001042b Build frontend loader system
A custom server-side renderer is used to deliver pages to the client
with values defined on load. This makes templating easier.
2021-12-28 23:49:18 +01:00