diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..fd8f9ce
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+## IDE ##
+.idea/
+
+## Composer ##
+vendor/
+composer.lock
+
+## App ##
+db/
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..788fbdf
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,18 @@
+{
+ "name": "madeorsk/poll-verlaine",
+ "type": "project",
+ "require": {
+ "mikecao/flight": "^1.3"
+ },
+ "license": "AGPL-3.0",
+ "authors": [
+ {
+ "name": "Madeorsk",
+ "email": "madeorsk@protonmail.com"
+ },
+ {
+ "name": "Tagada",
+ "email": "madeorsk@protonmail.com"
+ }
+ ]
+}
diff --git a/index.php b/index.php
new file mode 100644
index 0000000..0ad5a10
--- /dev/null
+++ b/index.php
@@ -0,0 +1,50 @@
+ $poll->id,
+ "title" => $poll->title,
+ "creation_date" => $poll->creation_date,
+ "options" => $poll->options,
+ ];
+}
+
+Flight::route("POST /polls", function () {
+ $request = Flight::request();
+ if ($request->type === "application/json")
+ {
+ $request_json = $request->data;
+ $poll = Poll::create_poll($request_json);
+ if ($poll)
+ Flight::json(format_poll($poll));
+ else
+ Flight::halt(403, "
403 Forbidden
Invalid data.
");
+ }
+ else
+ Flight::halt(403, "403 Forbidden
Invalid Content-Type.
");
+});
+Flight::route("GET /polls/@id:[a-fA-F0-9]+", function ($id) {
+ $poll = Poll::load_poll($id);
+ if ($poll)
+ {
+ if (Flight::request()->type === "application/json")
+ Flight::json(format_poll($poll));
+ else
+ {
+ Flight::render("poll", ["poll" => $poll], "body_content");
+ Flight::render("layout");
+ }
+ }
+ else
+ Flight::notFound();
+});
+
+Flight::route("/", function () {
+ Flight::render("home", [], "body_content");
+ Flight::render("layout");
+});
+
+Flight::start();
\ No newline at end of file
diff --git a/models/Poll.php b/models/Poll.php
new file mode 100644
index 0000000..f2ae80b
--- /dev/null
+++ b/models/Poll.php
@@ -0,0 +1,94 @@
+title = $request_data->title;
+ $poll->creation_date = (new DateTime())->getTimestamp();
+ $id = 0;
+ foreach ($request_data->options as $option)
+ {
+ $poll->options[] = [
+ "id" => $id,
+ "label" => $option,
+ "votes" => 0,
+ ];
+ $id++;
+ }
+ $poll->gen_new_id();
+ $poll->save();
+ return $poll;
+ }
+ catch (Exception $e)
+ { return false; }
+ }
+
+ /**
+ * Try to load an existing poll.
+ * @param string id - Poll ID.
+ * @return boolean|Poll - Requested poll if found, false otherwise.
+ */
+ public static function load_poll($id)
+ {
+ $db = dba_open(SAVE_PATH . "/polls.db", "rd");
+
+ if (dba_exists($id, $db))
+ {
+ $poll = new Poll();
+ $saved_poll_data = json_decode(dba_fetch($id, $db));
+ $poll->id = $id;
+ $poll->title = $saved_poll_data->title;
+ $poll->creation_date = $saved_poll_data->creation_date;
+ $poll->options = $saved_poll_data->options;
+
+ dba_close($db);
+ return $poll;
+ }
+ else
+ {
+ dba_close($db);
+ return false;
+ }
+ }
+
+ public $id = null;
+ public $title;
+ public $creation_date;
+ public $options = [];
+
+ public function gen_new_id()
+ {
+ $db = dba_open(SAVE_PATH . "/polls.db", "rd");
+
+ function gen_id()
+ { return bin2hex(openssl_random_pseudo_bytes(16)); }
+
+ do
+ { $new_id = gen_id(); }
+ while(dba_exists($new_id, $db));
+
+ dba_close($db);
+ $this->id = $new_id;
+ }
+
+ public function save()
+ {
+ $db = dba_open(SAVE_PATH . "/polls.db", "wd");
+ $func = (dba_exists($this->id, $db) ? "dba_replace" : "dba_insert");
+ $func($this->id, json_encode([
+ "title" => $this->title,
+ "creation_date" => $this->creation_date,
+ "options" => $this->options,
+ ]), $db);
+ dba_close($db);
+ }
+}
\ No newline at end of file
diff --git a/static/css/main.css b/static/css/main.css
new file mode 100644
index 0000000..5f6e88b
--- /dev/null
+++ b/static/css/main.css
@@ -0,0 +1,98 @@
+@import url("/static/fonts/Nunito/Nunito.css");
+@import url("/static/fonts/PTSerif/PTSerif.css");
+
+html, body
+{
+ margin: 0;
+ padding: 0;
+}
+
+body
+{
+ background: #242424;
+ color: #ECECEC;
+
+ font-family: "Nunito", sans-serif;
+}
+
+::-moz-focus-inner
+{ border: none; }
+
+body h1
+{
+ display: block;
+ margin: 1em auto;
+ font-size: 4em;
+ font-weight: 300;
+ text-align: center;
+}
+
+main
+{
+ margin: 0 5%;
+}
+
+main form input,
+main form button
+{
+ transition: background 0.1s ease-in;
+ display: block;
+ margin: auto;
+ padding: 1em;
+ width: 25rem;
+ box-sizing: border-box;
+
+ background: #141414;
+ border: none;
+ outline: none;
+
+ font-size: 1.3em;
+ text-align: center;
+}
+main form input[type="submit"],
+main form button
+{ cursor: pointer; }
+
+main form input[type="submit"]
+{ margin-top: 1em; }
+
+main form input:focus,
+main form input[type="submit"]:hover,
+main form button:hover
+{ background: #1D1D1D; }
+
+main form input[name="title"],
+main form input[name="title"]:focus
+{
+ background: transparent;
+ font-family: "PT Serif", serif;
+ font-size: 1.5em;
+}
+
+main #choices .choice
+{
+ display: flex;
+ flex-direction: row;
+ margin: auto;
+ width: 25rem;
+}
+main #choices .choice > *
+{ margin: 0; }
+main #choices .choice input
+{ font-family: "PT Serif", serif; }
+main #choices .choice .delete
+{
+ background: #FF2E31;
+ width: 4em;
+}
+
+footer
+{
+ display: block;
+ margin: 5em;
+ color: #8E8E8E;
+
+ font-size: 0.9em;
+ font-weight: 700;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/static/fonts/Nunito/Nunito-Black.eot b/static/fonts/Nunito/Nunito-Black.eot
new file mode 100644
index 0000000..e7cd2d4
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Black.eot differ
diff --git a/static/fonts/Nunito/Nunito-Black.svg b/static/fonts/Nunito/Nunito-Black.svg
new file mode 100644
index 0000000..ac332d5
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-Black.svg
@@ -0,0 +1,5544 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-Black.ttf b/static/fonts/Nunito/Nunito-Black.ttf
new file mode 100644
index 0000000..25d0803
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Black.ttf differ
diff --git a/static/fonts/Nunito/Nunito-Black.woff b/static/fonts/Nunito/Nunito-Black.woff
new file mode 100644
index 0000000..387e49e
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Black.woff differ
diff --git a/static/fonts/Nunito/Nunito-Black.woff2 b/static/fonts/Nunito/Nunito-Black.woff2
new file mode 100644
index 0000000..598ba91
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Black.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-BlackItalic.eot b/static/fonts/Nunito/Nunito-BlackItalic.eot
new file mode 100644
index 0000000..db3d2ef
Binary files /dev/null and b/static/fonts/Nunito/Nunito-BlackItalic.eot differ
diff --git a/static/fonts/Nunito/Nunito-BlackItalic.svg b/static/fonts/Nunito/Nunito-BlackItalic.svg
new file mode 100644
index 0000000..90e9ed8
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-BlackItalic.svg
@@ -0,0 +1,5593 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-BlackItalic.ttf b/static/fonts/Nunito/Nunito-BlackItalic.ttf
new file mode 100644
index 0000000..4235a49
Binary files /dev/null and b/static/fonts/Nunito/Nunito-BlackItalic.ttf differ
diff --git a/static/fonts/Nunito/Nunito-BlackItalic.woff b/static/fonts/Nunito/Nunito-BlackItalic.woff
new file mode 100644
index 0000000..deec302
Binary files /dev/null and b/static/fonts/Nunito/Nunito-BlackItalic.woff differ
diff --git a/static/fonts/Nunito/Nunito-BlackItalic.woff2 b/static/fonts/Nunito/Nunito-BlackItalic.woff2
new file mode 100644
index 0000000..9ac94c7
Binary files /dev/null and b/static/fonts/Nunito/Nunito-BlackItalic.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-Bold.eot b/static/fonts/Nunito/Nunito-Bold.eot
new file mode 100644
index 0000000..8bb9f08
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Bold.eot differ
diff --git a/static/fonts/Nunito/Nunito-Bold.svg b/static/fonts/Nunito/Nunito-Bold.svg
new file mode 100644
index 0000000..47ef72b
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-Bold.svg
@@ -0,0 +1,5536 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-Bold.ttf b/static/fonts/Nunito/Nunito-Bold.ttf
new file mode 100644
index 0000000..c0a6423
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Bold.ttf differ
diff --git a/static/fonts/Nunito/Nunito-Bold.woff b/static/fonts/Nunito/Nunito-Bold.woff
new file mode 100644
index 0000000..7a688e3
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Bold.woff differ
diff --git a/static/fonts/Nunito/Nunito-Bold.woff2 b/static/fonts/Nunito/Nunito-Bold.woff2
new file mode 100644
index 0000000..891bdd1
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Bold.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-BoldItalic.eot b/static/fonts/Nunito/Nunito-BoldItalic.eot
new file mode 100644
index 0000000..cf217e5
Binary files /dev/null and b/static/fonts/Nunito/Nunito-BoldItalic.eot differ
diff --git a/static/fonts/Nunito/Nunito-BoldItalic.svg b/static/fonts/Nunito/Nunito-BoldItalic.svg
new file mode 100644
index 0000000..e9e76e0
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-BoldItalic.svg
@@ -0,0 +1,5573 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-BoldItalic.ttf b/static/fonts/Nunito/Nunito-BoldItalic.ttf
new file mode 100644
index 0000000..e75b1c3
Binary files /dev/null and b/static/fonts/Nunito/Nunito-BoldItalic.ttf differ
diff --git a/static/fonts/Nunito/Nunito-BoldItalic.woff b/static/fonts/Nunito/Nunito-BoldItalic.woff
new file mode 100644
index 0000000..ebdddad
Binary files /dev/null and b/static/fonts/Nunito/Nunito-BoldItalic.woff differ
diff --git a/static/fonts/Nunito/Nunito-BoldItalic.woff2 b/static/fonts/Nunito/Nunito-BoldItalic.woff2
new file mode 100644
index 0000000..302bb48
Binary files /dev/null and b/static/fonts/Nunito/Nunito-BoldItalic.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-ExtraBold.eot b/static/fonts/Nunito/Nunito-ExtraBold.eot
new file mode 100644
index 0000000..1d74be9
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraBold.eot differ
diff --git a/static/fonts/Nunito/Nunito-ExtraBold.svg b/static/fonts/Nunito/Nunito-ExtraBold.svg
new file mode 100644
index 0000000..da59497
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-ExtraBold.svg
@@ -0,0 +1,5316 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-ExtraBold.ttf b/static/fonts/Nunito/Nunito-ExtraBold.ttf
new file mode 100644
index 0000000..04414be
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraBold.ttf differ
diff --git a/static/fonts/Nunito/Nunito-ExtraBold.woff b/static/fonts/Nunito/Nunito-ExtraBold.woff
new file mode 100644
index 0000000..35c303a
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraBold.woff differ
diff --git a/static/fonts/Nunito/Nunito-ExtraBold.woff2 b/static/fonts/Nunito/Nunito-ExtraBold.woff2
new file mode 100644
index 0000000..b01a30b
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraBold.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-ExtraBoldItalic.eot b/static/fonts/Nunito/Nunito-ExtraBoldItalic.eot
new file mode 100644
index 0000000..2ebe46b
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraBoldItalic.eot differ
diff --git a/static/fonts/Nunito/Nunito-ExtraBoldItalic.svg b/static/fonts/Nunito/Nunito-ExtraBoldItalic.svg
new file mode 100644
index 0000000..0c0bacd
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-ExtraBoldItalic.svg
@@ -0,0 +1,5349 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-ExtraBoldItalic.ttf b/static/fonts/Nunito/Nunito-ExtraBoldItalic.ttf
new file mode 100644
index 0000000..e52a6cd
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraBoldItalic.ttf differ
diff --git a/static/fonts/Nunito/Nunito-ExtraBoldItalic.woff b/static/fonts/Nunito/Nunito-ExtraBoldItalic.woff
new file mode 100644
index 0000000..010f571
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraBoldItalic.woff differ
diff --git a/static/fonts/Nunito/Nunito-ExtraBoldItalic.woff2 b/static/fonts/Nunito/Nunito-ExtraBoldItalic.woff2
new file mode 100644
index 0000000..e4d2822
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraBoldItalic.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-ExtraLight.eot b/static/fonts/Nunito/Nunito-ExtraLight.eot
new file mode 100644
index 0000000..5b28b6e
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraLight.eot differ
diff --git a/static/fonts/Nunito/Nunito-ExtraLight.svg b/static/fonts/Nunito/Nunito-ExtraLight.svg
new file mode 100644
index 0000000..27423f3
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-ExtraLight.svg
@@ -0,0 +1,5497 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-ExtraLight.ttf b/static/fonts/Nunito/Nunito-ExtraLight.ttf
new file mode 100644
index 0000000..2d92c1e
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraLight.ttf differ
diff --git a/static/fonts/Nunito/Nunito-ExtraLight.woff b/static/fonts/Nunito/Nunito-ExtraLight.woff
new file mode 100644
index 0000000..7117bc9
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraLight.woff differ
diff --git a/static/fonts/Nunito/Nunito-ExtraLight.woff2 b/static/fonts/Nunito/Nunito-ExtraLight.woff2
new file mode 100644
index 0000000..7276d16
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraLight.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-ExtraLightItalic.eot b/static/fonts/Nunito/Nunito-ExtraLightItalic.eot
new file mode 100644
index 0000000..79f0e38
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraLightItalic.eot differ
diff --git a/static/fonts/Nunito/Nunito-ExtraLightItalic.svg b/static/fonts/Nunito/Nunito-ExtraLightItalic.svg
new file mode 100644
index 0000000..824edc8
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-ExtraLightItalic.svg
@@ -0,0 +1,5518 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-ExtraLightItalic.ttf b/static/fonts/Nunito/Nunito-ExtraLightItalic.ttf
new file mode 100644
index 0000000..23adc06
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraLightItalic.ttf differ
diff --git a/static/fonts/Nunito/Nunito-ExtraLightItalic.woff b/static/fonts/Nunito/Nunito-ExtraLightItalic.woff
new file mode 100644
index 0000000..8869817
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraLightItalic.woff differ
diff --git a/static/fonts/Nunito/Nunito-ExtraLightItalic.woff2 b/static/fonts/Nunito/Nunito-ExtraLightItalic.woff2
new file mode 100644
index 0000000..e1e6e53
Binary files /dev/null and b/static/fonts/Nunito/Nunito-ExtraLightItalic.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-Italic.eot b/static/fonts/Nunito/Nunito-Italic.eot
new file mode 100644
index 0000000..4b7b14b
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Italic.eot differ
diff --git a/static/fonts/Nunito/Nunito-Italic.svg b/static/fonts/Nunito/Nunito-Italic.svg
new file mode 100644
index 0000000..1152692
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-Italic.svg
@@ -0,0 +1,5555 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-Italic.ttf b/static/fonts/Nunito/Nunito-Italic.ttf
new file mode 100644
index 0000000..cb2fcff
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Italic.ttf differ
diff --git a/static/fonts/Nunito/Nunito-Italic.woff b/static/fonts/Nunito/Nunito-Italic.woff
new file mode 100644
index 0000000..216fd21
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Italic.woff differ
diff --git a/static/fonts/Nunito/Nunito-Italic.woff2 b/static/fonts/Nunito/Nunito-Italic.woff2
new file mode 100644
index 0000000..87544e0
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Italic.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-Light.eot b/static/fonts/Nunito/Nunito-Light.eot
new file mode 100644
index 0000000..41fb3c7
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Light.eot differ
diff --git a/static/fonts/Nunito/Nunito-Light.svg b/static/fonts/Nunito/Nunito-Light.svg
new file mode 100644
index 0000000..9c19793
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-Light.svg
@@ -0,0 +1,5435 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-Light.ttf b/static/fonts/Nunito/Nunito-Light.ttf
new file mode 100644
index 0000000..4e57806
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Light.ttf differ
diff --git a/static/fonts/Nunito/Nunito-Light.woff b/static/fonts/Nunito/Nunito-Light.woff
new file mode 100644
index 0000000..b7fb4e2
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Light.woff differ
diff --git a/static/fonts/Nunito/Nunito-Light.woff2 b/static/fonts/Nunito/Nunito-Light.woff2
new file mode 100644
index 0000000..9aa61af
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Light.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-LightItalic.eot b/static/fonts/Nunito/Nunito-LightItalic.eot
new file mode 100644
index 0000000..27799c7
Binary files /dev/null and b/static/fonts/Nunito/Nunito-LightItalic.eot differ
diff --git a/static/fonts/Nunito/Nunito-LightItalic.svg b/static/fonts/Nunito/Nunito-LightItalic.svg
new file mode 100644
index 0000000..e677c58
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-LightItalic.svg
@@ -0,0 +1,5462 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-LightItalic.ttf b/static/fonts/Nunito/Nunito-LightItalic.ttf
new file mode 100644
index 0000000..6efe509
Binary files /dev/null and b/static/fonts/Nunito/Nunito-LightItalic.ttf differ
diff --git a/static/fonts/Nunito/Nunito-LightItalic.woff b/static/fonts/Nunito/Nunito-LightItalic.woff
new file mode 100644
index 0000000..8945054
Binary files /dev/null and b/static/fonts/Nunito/Nunito-LightItalic.woff differ
diff --git a/static/fonts/Nunito/Nunito-LightItalic.woff2 b/static/fonts/Nunito/Nunito-LightItalic.woff2
new file mode 100644
index 0000000..daab714
Binary files /dev/null and b/static/fonts/Nunito/Nunito-LightItalic.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-Regular.eot b/static/fonts/Nunito/Nunito-Regular.eot
new file mode 100644
index 0000000..2b5d7cc
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Regular.eot differ
diff --git a/static/fonts/Nunito/Nunito-Regular.svg b/static/fonts/Nunito/Nunito-Regular.svg
new file mode 100644
index 0000000..e7356a9
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-Regular.svg
@@ -0,0 +1,5526 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-Regular.ttf b/static/fonts/Nunito/Nunito-Regular.ttf
new file mode 100644
index 0000000..06a437e
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Regular.ttf differ
diff --git a/static/fonts/Nunito/Nunito-Regular.woff b/static/fonts/Nunito/Nunito-Regular.woff
new file mode 100644
index 0000000..9efd93b
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Regular.woff differ
diff --git a/static/fonts/Nunito/Nunito-Regular.woff2 b/static/fonts/Nunito/Nunito-Regular.woff2
new file mode 100644
index 0000000..f2ba31f
Binary files /dev/null and b/static/fonts/Nunito/Nunito-Regular.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-SemiBold.eot b/static/fonts/Nunito/Nunito-SemiBold.eot
new file mode 100644
index 0000000..e969543
Binary files /dev/null and b/static/fonts/Nunito/Nunito-SemiBold.eot differ
diff --git a/static/fonts/Nunito/Nunito-SemiBold.svg b/static/fonts/Nunito/Nunito-SemiBold.svg
new file mode 100644
index 0000000..3543a4d
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-SemiBold.svg
@@ -0,0 +1,5528 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-SemiBold.ttf b/static/fonts/Nunito/Nunito-SemiBold.ttf
new file mode 100644
index 0000000..eb6ddbb
Binary files /dev/null and b/static/fonts/Nunito/Nunito-SemiBold.ttf differ
diff --git a/static/fonts/Nunito/Nunito-SemiBold.woff b/static/fonts/Nunito/Nunito-SemiBold.woff
new file mode 100644
index 0000000..3f5d8d1
Binary files /dev/null and b/static/fonts/Nunito/Nunito-SemiBold.woff differ
diff --git a/static/fonts/Nunito/Nunito-SemiBold.woff2 b/static/fonts/Nunito/Nunito-SemiBold.woff2
new file mode 100644
index 0000000..fb401ff
Binary files /dev/null and b/static/fonts/Nunito/Nunito-SemiBold.woff2 differ
diff --git a/static/fonts/Nunito/Nunito-SemiBoldItalic.eot b/static/fonts/Nunito/Nunito-SemiBoldItalic.eot
new file mode 100644
index 0000000..8854a3d
Binary files /dev/null and b/static/fonts/Nunito/Nunito-SemiBoldItalic.eot differ
diff --git a/static/fonts/Nunito/Nunito-SemiBoldItalic.svg b/static/fonts/Nunito/Nunito-SemiBoldItalic.svg
new file mode 100644
index 0000000..1914df7
--- /dev/null
+++ b/static/fonts/Nunito/Nunito-SemiBoldItalic.svg
@@ -0,0 +1,5558 @@
+
+
+
diff --git a/static/fonts/Nunito/Nunito-SemiBoldItalic.ttf b/static/fonts/Nunito/Nunito-SemiBoldItalic.ttf
new file mode 100644
index 0000000..9e003df
Binary files /dev/null and b/static/fonts/Nunito/Nunito-SemiBoldItalic.ttf differ
diff --git a/static/fonts/Nunito/Nunito-SemiBoldItalic.woff b/static/fonts/Nunito/Nunito-SemiBoldItalic.woff
new file mode 100644
index 0000000..5c5c560
Binary files /dev/null and b/static/fonts/Nunito/Nunito-SemiBoldItalic.woff differ
diff --git a/static/fonts/Nunito/Nunito-SemiBoldItalic.woff2 b/static/fonts/Nunito/Nunito-SemiBoldItalic.woff2
new file mode 100644
index 0000000..21f46a3
Binary files /dev/null and b/static/fonts/Nunito/Nunito-SemiBoldItalic.woff2 differ
diff --git a/static/fonts/Nunito/Nunito.css b/static/fonts/Nunito/Nunito.css
new file mode 100644
index 0000000..41ab74f
--- /dev/null
+++ b/static/fonts/Nunito/Nunito.css
@@ -0,0 +1,168 @@
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-ExtraBoldItalic.eot');
+ src: url('Nunito-ExtraBoldItalic.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-ExtraBoldItalic.woff2') format('woff2'),
+ url('Nunito-ExtraBoldItalic.woff') format('woff'),
+ url('Nunito-ExtraBoldItalic.ttf') format('truetype'),
+ url('Nunito-ExtraBoldItalic.svg#Nunito-ExtraBoldItalic') format('svg');
+ font-weight: 800;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-ExtraLightItalic.eot');
+ src: url('Nunito-ExtraLightItalic.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-ExtraLightItalic.woff2') format('woff2'),
+ url('Nunito-ExtraLightItalic.woff') format('woff'),
+ url('Nunito-ExtraLightItalic.ttf') format('truetype'),
+ url('Nunito-ExtraLightItalic.svg#Nunito-ExtraLightItalic') format('svg');
+ font-weight: 200;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-ExtraBold.eot');
+ src: url('Nunito-ExtraBold.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-ExtraBold.woff2') format('woff2'),
+ url('Nunito-ExtraBold.woff') format('woff'),
+ url('Nunito-ExtraBold.ttf') format('truetype'),
+ url('Nunito-ExtraBold.svg#Nunito-ExtraBold') format('svg');
+ font-weight: 800;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-Regular.eot');
+ src: url('Nunito-Regular.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-Regular.woff2') format('woff2'),
+ url('Nunito-Regular.woff') format('woff'),
+ url('Nunito-Regular.ttf') format('truetype'),
+ url('Nunito-Regular.svg#Nunito-Regular') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-BlackItalic.eot');
+ src: url('Nunito-BlackItalic.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-BlackItalic.woff2') format('woff2'),
+ url('Nunito-BlackItalic.woff') format('woff'),
+ url('Nunito-BlackItalic.ttf') format('truetype'),
+ url('Nunito-BlackItalic.svg#Nunito-BlackItalic') format('svg');
+ font-weight: 900;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-Italic.eot');
+ src: url('Nunito-Italic.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-Italic.woff2') format('woff2'),
+ url('Nunito-Italic.woff') format('woff'),
+ url('Nunito-Italic.ttf') format('truetype'),
+ url('Nunito-Italic.svg#Nunito-Italic') format('svg');
+ font-weight: normal;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-BoldItalic.eot');
+ src: url('Nunito-BoldItalic.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-BoldItalic.woff2') format('woff2'),
+ url('Nunito-BoldItalic.woff') format('woff'),
+ url('Nunito-BoldItalic.ttf') format('truetype'),
+ url('Nunito-BoldItalic.svg#Nunito-BoldItalic') format('svg');
+ font-weight: bold;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-LightItalic.eot');
+ src: url('Nunito-LightItalic.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-LightItalic.woff2') format('woff2'),
+ url('Nunito-LightItalic.woff') format('woff'),
+ url('Nunito-LightItalic.ttf') format('truetype'),
+ url('Nunito-LightItalic.svg#Nunito-LightItalic') format('svg');
+ font-weight: 300;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-SemiBoldItalic.eot');
+ src: url('Nunito-SemiBoldItalic.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-SemiBoldItalic.woff2') format('woff2'),
+ url('Nunito-SemiBoldItalic.woff') format('woff'),
+ url('Nunito-SemiBoldItalic.ttf') format('truetype'),
+ url('Nunito-SemiBoldItalic.svg#Nunito-SemiBoldItalic') format('svg');
+ font-weight: 600;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-Bold.eot');
+ src: url('Nunito-Bold.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-Bold.woff2') format('woff2'),
+ url('Nunito-Bold.woff') format('woff'),
+ url('Nunito-Bold.ttf') format('truetype'),
+ url('Nunito-Bold.svg#Nunito-Bold') format('svg');
+ font-weight: bold;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-ExtraLight.eot');
+ src: url('Nunito-ExtraLight.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-ExtraLight.woff2') format('woff2'),
+ url('Nunito-ExtraLight.woff') format('woff'),
+ url('Nunito-ExtraLight.ttf') format('truetype'),
+ url('Nunito-ExtraLight.svg#Nunito-ExtraLight') format('svg');
+ font-weight: 200;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-SemiBold.eot');
+ src: url('Nunito-SemiBold.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-SemiBold.woff2') format('woff2'),
+ url('Nunito-SemiBold.woff') format('woff'),
+ url('Nunito-SemiBold.ttf') format('truetype'),
+ url('Nunito-SemiBold.svg#Nunito-SemiBold') format('svg');
+ font-weight: 600;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-Black.eot');
+ src: url('Nunito-Black.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-Black.woff2') format('woff2'),
+ url('Nunito-Black.woff') format('woff'),
+ url('Nunito-Black.ttf') format('truetype'),
+ url('Nunito-Black.svg#Nunito-Black') format('svg');
+ font-weight: 900;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Nunito';
+ src: url('Nunito-Light.eot');
+ src: url('Nunito-Light.eot?#iefix') format('embedded-opentype'),
+ url('Nunito-Light.woff2') format('woff2'),
+ url('Nunito-Light.woff') format('woff'),
+ url('Nunito-Light.ttf') format('truetype'),
+ url('Nunito-Light.svg#Nunito-Light') format('svg');
+ font-weight: 300;
+ font-style: normal;
+}
+
diff --git a/static/fonts/PTSerif/PTSerif-Bold.eot b/static/fonts/PTSerif/PTSerif-Bold.eot
new file mode 100644
index 0000000..1f810c3
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-Bold.eot differ
diff --git a/static/fonts/PTSerif/PTSerif-Bold.svg b/static/fonts/PTSerif/PTSerif-Bold.svg
new file mode 100644
index 0000000..a7a70f6
--- /dev/null
+++ b/static/fonts/PTSerif/PTSerif-Bold.svg
@@ -0,0 +1,5104 @@
+
+
+
diff --git a/static/fonts/PTSerif/PTSerif-Bold.ttf b/static/fonts/PTSerif/PTSerif-Bold.ttf
new file mode 100644
index 0000000..a549a80
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-Bold.ttf differ
diff --git a/static/fonts/PTSerif/PTSerif-Bold.woff b/static/fonts/PTSerif/PTSerif-Bold.woff
new file mode 100644
index 0000000..f053b47
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-Bold.woff differ
diff --git a/static/fonts/PTSerif/PTSerif-Bold.woff2 b/static/fonts/PTSerif/PTSerif-Bold.woff2
new file mode 100644
index 0000000..81f7679
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-Bold.woff2 differ
diff --git a/static/fonts/PTSerif/PTSerif-BoldItalic.eot b/static/fonts/PTSerif/PTSerif-BoldItalic.eot
new file mode 100644
index 0000000..ff21a72
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-BoldItalic.eot differ
diff --git a/static/fonts/PTSerif/PTSerif-BoldItalic.svg b/static/fonts/PTSerif/PTSerif-BoldItalic.svg
new file mode 100644
index 0000000..b07c261
--- /dev/null
+++ b/static/fonts/PTSerif/PTSerif-BoldItalic.svg
@@ -0,0 +1,5464 @@
+
+
+
diff --git a/static/fonts/PTSerif/PTSerif-BoldItalic.ttf b/static/fonts/PTSerif/PTSerif-BoldItalic.ttf
new file mode 100644
index 0000000..2fe83a6
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-BoldItalic.ttf differ
diff --git a/static/fonts/PTSerif/PTSerif-BoldItalic.woff b/static/fonts/PTSerif/PTSerif-BoldItalic.woff
new file mode 100644
index 0000000..33d7a9f
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-BoldItalic.woff differ
diff --git a/static/fonts/PTSerif/PTSerif-BoldItalic.woff2 b/static/fonts/PTSerif/PTSerif-BoldItalic.woff2
new file mode 100644
index 0000000..932cf86
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-BoldItalic.woff2 differ
diff --git a/static/fonts/PTSerif/PTSerif-Italic.eot b/static/fonts/PTSerif/PTSerif-Italic.eot
new file mode 100644
index 0000000..153e282
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-Italic.eot differ
diff --git a/static/fonts/PTSerif/PTSerif-Italic.svg b/static/fonts/PTSerif/PTSerif-Italic.svg
new file mode 100644
index 0000000..6240fc3
--- /dev/null
+++ b/static/fonts/PTSerif/PTSerif-Italic.svg
@@ -0,0 +1,5359 @@
+
+
+
diff --git a/static/fonts/PTSerif/PTSerif-Italic.ttf b/static/fonts/PTSerif/PTSerif-Italic.ttf
new file mode 100644
index 0000000..3c6ed9e
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-Italic.ttf differ
diff --git a/static/fonts/PTSerif/PTSerif-Italic.woff b/static/fonts/PTSerif/PTSerif-Italic.woff
new file mode 100644
index 0000000..d119b54
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-Italic.woff differ
diff --git a/static/fonts/PTSerif/PTSerif-Italic.woff2 b/static/fonts/PTSerif/PTSerif-Italic.woff2
new file mode 100644
index 0000000..8d3548c
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-Italic.woff2 differ
diff --git a/static/fonts/PTSerif/PTSerif-Regular.eot b/static/fonts/PTSerif/PTSerif-Regular.eot
new file mode 100644
index 0000000..9926e02
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-Regular.eot differ
diff --git a/static/fonts/PTSerif/PTSerif-Regular.svg b/static/fonts/PTSerif/PTSerif-Regular.svg
new file mode 100644
index 0000000..2e7a307
--- /dev/null
+++ b/static/fonts/PTSerif/PTSerif-Regular.svg
@@ -0,0 +1,5019 @@
+
+
+
diff --git a/static/fonts/PTSerif/PTSerif-Regular.ttf b/static/fonts/PTSerif/PTSerif-Regular.ttf
new file mode 100644
index 0000000..c91c79d
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-Regular.ttf differ
diff --git a/static/fonts/PTSerif/PTSerif-Regular.woff b/static/fonts/PTSerif/PTSerif-Regular.woff
new file mode 100644
index 0000000..09fc2e3
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-Regular.woff differ
diff --git a/static/fonts/PTSerif/PTSerif-Regular.woff2 b/static/fonts/PTSerif/PTSerif-Regular.woff2
new file mode 100644
index 0000000..3d6a931
Binary files /dev/null and b/static/fonts/PTSerif/PTSerif-Regular.woff2 differ
diff --git a/static/fonts/PTSerif/PTSerif.css b/static/fonts/PTSerif/PTSerif.css
new file mode 100644
index 0000000..775eda9
--- /dev/null
+++ b/static/fonts/PTSerif/PTSerif.css
@@ -0,0 +1,48 @@
+@font-face {
+ font-family: 'PT Serif';
+ src: url('PTSerif-BoldItalic.eot');
+ src: url('PTSerif-BoldItalic.eot?#iefix') format('embedded-opentype'),
+ url('PTSerif-BoldItalic.woff2') format('woff2'),
+ url('PTSerif-BoldItalic.woff') format('woff'),
+ url('PTSerif-BoldItalic.ttf') format('truetype'),
+ url('PTSerif-BoldItalic.svg#PTSerif-BoldItalic') format('svg');
+ font-weight: bold;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'PT Serif';
+ src: url('PTSerif-Bold.eot');
+ src: url('PTSerif-Bold.eot?#iefix') format('embedded-opentype'),
+ url('PTSerif-Bold.woff2') format('woff2'),
+ url('PTSerif-Bold.woff') format('woff'),
+ url('PTSerif-Bold.ttf') format('truetype'),
+ url('PTSerif-Bold.svg#PTSerif-Bold') format('svg');
+ font-weight: bold;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'PT Serif';
+ src: url('PTSerif-Italic.eot');
+ src: url('PTSerif-Italic.eot?#iefix') format('embedded-opentype'),
+ url('PTSerif-Italic.woff2') format('woff2'),
+ url('PTSerif-Italic.woff') format('woff'),
+ url('PTSerif-Italic.ttf') format('truetype'),
+ url('PTSerif-Italic.svg#PTSerif-Italic') format('svg');
+ font-weight: normal;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'PT Serif';
+ src: url('PTSerif-Regular.eot');
+ src: url('PTSerif-Regular.eot?#iefix') format('embedded-opentype'),
+ url('PTSerif-Regular.woff2') format('woff2'),
+ url('PTSerif-Regular.woff') format('woff'),
+ url('PTSerif-Regular.ttf') format('truetype'),
+ url('PTSerif-Regular.svg#PTSerif-Regular') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
diff --git a/static/js/fetch.min.js b/static/js/fetch.min.js
new file mode 100644
index 0000000..f16e6af
--- /dev/null
+++ b/static/js/fetch.min.js
@@ -0,0 +1 @@
+!function(t){"use strict";if(!t.fetch){var s={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};if(s.arrayBuffer)var e=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],r=function(t){return t&&DataView.prototype.isPrototypeOf(t)},o=ArrayBuffer.isView||function(t){return t&&-1 {
+ let choices = document.getElementById("choices");
+ let choice_template = document.getElementById("choice");
+
+ function create_choice()
+ {
+ let choice = document.createElement("div");
+ choice.classList.add("choice");
+ choice.innerHTML = choice_template.innerHTML.replace(/:id/g, next_id);
+ choice.querySelector("button.delete").addEventListener("click", () => {
+ choices.removeChild(choice);
+ });
+ choices.append(choice);
+ next_id++;
+ }
+
+ document.getElementById("add-choice").addEventListener("click", create_choice);
+ while(next_id < 4) create_choice();
+
+ let form = document.getElementById("newpoll");
+ form.addEventListener("submit", (event) => {
+ event.preventDefault();
+
+ function get_choices(form)
+ {
+ let choices = [];
+ form.querySelectorAll("#choices .choice input").forEach((el) => {
+ choices.push(el.value);
+ });
+ return choices;
+ }
+
+ fetch("/polls", {
+ method: "POST",
+ body: JSON.stringify({
+ title: form.querySelector(`input[name="title"]`).value,
+ options: get_choices(form),
+ }),
+ headers: {
+ "Content-Type": "application/json",
+ },
+ }).then((res) => {
+ return res.json();
+ }).then((json) => {
+ console.log(json);
+ });
+ });
+});
\ No newline at end of file
diff --git a/views/home.php b/views/home.php
new file mode 100644
index 0000000..1df7e8a
--- /dev/null
+++ b/views/home.php
@@ -0,0 +1,21 @@
+
+
+
+
+Poll Verlaine
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/views/layout.php b/views/layout.php
new file mode 100644
index 0000000..37fc42d
--- /dev/null
+++ b/views/layout.php
@@ -0,0 +1,14 @@
+
+
+
+
+ Poll Verlaine
+
+
+
+= $body_content ?>
+
+
+
\ No newline at end of file
diff --git a/views/poll.php b/views/poll.php
new file mode 100644
index 0000000..9f49f84
--- /dev/null
+++ b/views/poll.php
@@ -0,0 +1,6 @@
+mdr todo
+
+
+ = var_dump($poll) ?>
+
+
\ No newline at end of file