From ac1a943341d762663e726e3fe2806c27501dc2c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1?= <git@imaniti.org>
Date: Wed, 4 Jan 2023 14:14:45 +0100
Subject: [PATCH] add tool index

---
 .gitignore                                    |   4 +-
 README.md                                     |  12 +
 .../member_group_size_calc/calculator.webp    | Bin 0 -> 25904 bytes
 .../member_group_size_calc/index.html         |   7 +-
 member_group_size_calc/urls.py                |   2 +-
 rybicka/urls.py                               |   1 +
 shared/static/shared/style.css                | 769 ------------------
 shared/templates/shared/base.html             |  51 +-
 shared/templates/shared/index.html            |  39 +
 shared/urls.py                                |   4 +-
 shared/views.py                               |   6 +
 static_src/base.css                           |  10 +
 12 files changed, 128 insertions(+), 777 deletions(-)
 create mode 100644 member_group_size_calc/static/member_group_size_calc/calculator.webp
 delete mode 100644 shared/static/shared/style.css
 create mode 100644 shared/templates/shared/index.html

diff --git a/.gitignore b/.gitignore
index 9e27f6e..a919eaa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,4 +4,6 @@ staticfiles/*
 package-lock.json
 webpack-stats.json
 .env
-shared/static/shared/main-*.js
+shared/static/shared/*.js
+shared/static/shared/*.css
+shared/static/shared/*.txt
diff --git a/README.md b/README.md
index 545d468..8044e58 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,15 @@
 # Rybička
 
 Aplikace pro všemožné jednoduché nástroje, které pomohou automatizovat složité úkony.
+
+## Setup
+
+Požadavky:
+- Python 3.9+
+- Linuxové prostředí, na Windows netestováno
+
+```bash
+make install
+make build
+make run
+```
diff --git a/member_group_size_calc/static/member_group_size_calc/calculator.webp b/member_group_size_calc/static/member_group_size_calc/calculator.webp
new file mode 100644
index 0000000000000000000000000000000000000000..f2001113af3acfdcbaa5dbc82b7c38ee2e53a883
GIT binary patch
literal 25904
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
ABLDyZ

literal 0
HcmV?d00001

diff --git a/member_group_size_calc/templates/member_group_size_calc/index.html b/member_group_size_calc/templates/member_group_size_calc/index.html
index bbf26e1..39fbb23 100644
--- a/member_group_size_calc/templates/member_group_size_calc/index.html
+++ b/member_group_size_calc/templates/member_group_size_calc/index.html
@@ -2,15 +2,16 @@
 
 {% load render_bundle from webpack_loader %}
 
-{% block name %}Kalkulačka velikosti skupiny členů{% endblock %}
-{% block description %}TODO - Description.{% endblock %}
+{% block title %}Kalkulačka velikosti skupiny členů{% endblock %}
+{% block header_name %}Skupiny členů{% endblock %}
+{% block description %}Výpočet velikosti skupiny členů podle jednoacího řádu.{% endblock %}
 
 {% block head %}
     {% render_bundle "member_group_size_calc" %}
 {% endblock %}
 
 {% block content %}
-    <main class="p-10">
+    <main>
         <h1 class="text-6xl font-bebas mb-5">Kalkulačka výpočtu skupiny členů</h1>
 
         <div class="bg-amber-100 p-4 flex flex-row items-center gap-4 mb-4 lg:w-[768px] md:w-full">
diff --git a/member_group_size_calc/urls.py b/member_group_size_calc/urls.py
index 44f2f3c..f4631fc 100644
--- a/member_group_size_calc/urls.py
+++ b/member_group_size_calc/urls.py
@@ -3,5 +3,5 @@ from django.urls import path
 from . import views
 
 urlpatterns = [
-    path("", views.index, name="member_group_size_calc_index")
+    path("", views.index, name="member_group_size_calc_index"),
 ]
diff --git a/rybicka/urls.py b/rybicka/urls.py
index 75edfc4..fbfedf1 100644
--- a/rybicka/urls.py
+++ b/rybicka/urls.py
@@ -17,4 +17,5 @@ from django.urls import include, path
 
 urlpatterns = [
     path("vypocet-skupiny-clenu", include("member_group_size_calc.urls")),
+    path("", include("shared.urls")),
 ]
diff --git a/shared/static/shared/style.css b/shared/static/shared/style.css
deleted file mode 100644
index b54a184..0000000
--- a/shared/static/shared/style.css
+++ /dev/null
@@ -1,769 +0,0 @@
-/*
-! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com
-*/
-
-/*
-1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
-2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
-*/
-
-*,
-::before,
-::after {
-  box-sizing: border-box;
-  /* 1 */
-  border-width: 0;
-  /* 2 */
-  border-style: solid;
-  /* 2 */
-  border-color: #e5e7eb;
-  /* 2 */
-}
-
-::before,
-::after {
-  --tw-content: '';
-}
-
-/*
-1. Use a consistent sensible line-height in all browsers.
-2. Prevent adjustments of font size after orientation changes in iOS.
-3. Use a more readable tab size.
-4. Use the user's configured `sans` font-family by default.
-5. Use the user's configured `sans` font-feature-settings by default.
-*/
-
-html {
-  line-height: 1.5;
-  /* 1 */
-  -webkit-text-size-adjust: 100%;
-  /* 2 */
-  -moz-tab-size: 4;
-  /* 3 */
-  -o-tab-size: 4;
-     tab-size: 4;
-  /* 3 */
-  font-family: Roboto Condensed, ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
-  /* 4 */
-  font-feature-settings: normal;
-  /* 5 */
-}
-
-/*
-1. Remove the margin in all browsers.
-2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
-*/
-
-body {
-  margin: 0;
-  /* 1 */
-  line-height: inherit;
-  /* 2 */
-}
-
-/*
-1. Add the correct height in Firefox.
-2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
-3. Ensure horizontal rules are visible by default.
-*/
-
-hr {
-  height: 0;
-  /* 1 */
-  color: inherit;
-  /* 2 */
-  border-top-width: 1px;
-  /* 3 */
-}
-
-/*
-Add the correct text decoration in Chrome, Edge, and Safari.
-*/
-
-abbr:where([title]) {
-  -webkit-text-decoration: underline dotted;
-          text-decoration: underline dotted;
-}
-
-/*
-Remove the default font size and weight for headings.
-*/
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  font-size: inherit;
-  font-weight: inherit;
-}
-
-/*
-Reset links to optimize for opt-in styling instead of opt-out.
-*/
-
-a {
-  color: inherit;
-  text-decoration: inherit;
-}
-
-/*
-Add the correct font weight in Edge and Safari.
-*/
-
-b,
-strong {
-  font-weight: bolder;
-}
-
-/*
-1. Use the user's configured `mono` font family by default.
-2. Correct the odd `em` font sizing in all browsers.
-*/
-
-code,
-kbd,
-samp,
-pre {
-  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
-  /* 1 */
-  font-size: 1em;
-  /* 2 */
-}
-
-/*
-Add the correct font size in all browsers.
-*/
-
-small {
-  font-size: 80%;
-}
-
-/*
-Prevent `sub` and `sup` elements from affecting the line height in all browsers.
-*/
-
-sub,
-sup {
-  font-size: 75%;
-  line-height: 0;
-  position: relative;
-  vertical-align: baseline;
-}
-
-sub {
-  bottom: -0.25em;
-}
-
-sup {
-  top: -0.5em;
-}
-
-/*
-1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
-2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
-3. Remove gaps between table borders by default.
-*/
-
-table {
-  text-indent: 0;
-  /* 1 */
-  border-color: inherit;
-  /* 2 */
-  border-collapse: collapse;
-  /* 3 */
-}
-
-/*
-1. Change the font styles in all browsers.
-2. Remove the margin in Firefox and Safari.
-3. Remove default padding in all browsers.
-*/
-
-button,
-input,
-optgroup,
-select,
-textarea {
-  font-family: inherit;
-  /* 1 */
-  font-size: 100%;
-  /* 1 */
-  font-weight: inherit;
-  /* 1 */
-  line-height: inherit;
-  /* 1 */
-  color: inherit;
-  /* 1 */
-  margin: 0;
-  /* 2 */
-  padding: 0;
-  /* 3 */
-}
-
-/*
-Remove the inheritance of text transform in Edge and Firefox.
-*/
-
-button,
-select {
-  text-transform: none;
-}
-
-/*
-1. Correct the inability to style clickable types in iOS and Safari.
-2. Remove default button styles.
-*/
-
-button,
-[type='button'],
-[type='reset'],
-[type='submit'] {
-  -webkit-appearance: button;
-  /* 1 */
-  background-color: transparent;
-  /* 2 */
-  background-image: none;
-  /* 2 */
-}
-
-/*
-Use the modern Firefox focus style for all focusable elements.
-*/
-
-:-moz-focusring {
-  outline: auto;
-}
-
-/*
-Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
-*/
-
-:-moz-ui-invalid {
-  box-shadow: none;
-}
-
-/*
-Add the correct vertical alignment in Chrome and Firefox.
-*/
-
-progress {
-  vertical-align: baseline;
-}
-
-/*
-Correct the cursor style of increment and decrement buttons in Safari.
-*/
-
-::-webkit-inner-spin-button,
-::-webkit-outer-spin-button {
-  height: auto;
-}
-
-/*
-1. Correct the odd appearance in Chrome and Safari.
-2. Correct the outline style in Safari.
-*/
-
-[type='search'] {
-  -webkit-appearance: textfield;
-  /* 1 */
-  outline-offset: -2px;
-  /* 2 */
-}
-
-/*
-Remove the inner padding in Chrome and Safari on macOS.
-*/
-
-::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-
-/*
-1. Correct the inability to style clickable types in iOS and Safari.
-2. Change font properties to `inherit` in Safari.
-*/
-
-::-webkit-file-upload-button {
-  -webkit-appearance: button;
-  /* 1 */
-  font: inherit;
-  /* 2 */
-}
-
-/*
-Add the correct display in Chrome and Safari.
-*/
-
-summary {
-  display: list-item;
-}
-
-/*
-Removes the default spacing and border for appropriate elements.
-*/
-
-blockquote,
-dl,
-dd,
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-hr,
-figure,
-p,
-pre {
-  margin: 0;
-}
-
-fieldset {
-  margin: 0;
-  padding: 0;
-}
-
-legend {
-  padding: 0;
-}
-
-ol,
-ul,
-menu {
-  list-style: none;
-  margin: 0;
-  padding: 0;
-}
-
-/*
-Prevent resizing textareas horizontally by default.
-*/
-
-textarea {
-  resize: vertical;
-}
-
-/*
-1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
-2. Set the default placeholder color to the user's configured gray 400 color.
-*/
-
-input::-moz-placeholder, textarea::-moz-placeholder {
-  opacity: 1;
-  /* 1 */
-  color: #9ca3af;
-  /* 2 */
-}
-
-input::placeholder,
-textarea::placeholder {
-  opacity: 1;
-  /* 1 */
-  color: #9ca3af;
-  /* 2 */
-}
-
-/*
-Set the default cursor for buttons.
-*/
-
-button,
-[role="button"] {
-  cursor: pointer;
-}
-
-/*
-Make sure disabled buttons don't get the pointer cursor.
-*/
-
-:disabled {
-  cursor: default;
-}
-
-/*
-1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
-2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
-   This can trigger a poorly considered lint error in some tools but is included by design.
-*/
-
-img,
-svg,
-video,
-canvas,
-audio,
-iframe,
-embed,
-object {
-  display: block;
-  /* 1 */
-  vertical-align: middle;
-  /* 2 */
-}
-
-/*
-Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
-*/
-
-img,
-video {
-  max-width: 100%;
-  height: auto;
-}
-
-/* Make elements with the HTML hidden attribute stay hidden by default */
-
-[hidden] {
-  display: none;
-}
-
-html {
-  font-family: "Roboto Condensed", system-ui, sans-serif;
-}
-
-*, ::before, ::after {
-  --tw-border-spacing-x: 0;
-  --tw-border-spacing-y: 0;
-  --tw-translate-x: 0;
-  --tw-translate-y: 0;
-  --tw-rotate: 0;
-  --tw-skew-x: 0;
-  --tw-skew-y: 0;
-  --tw-scale-x: 1;
-  --tw-scale-y: 1;
-  --tw-pan-x:  ;
-  --tw-pan-y:  ;
-  --tw-pinch-zoom:  ;
-  --tw-scroll-snap-strictness: proximity;
-  --tw-ordinal:  ;
-  --tw-slashed-zero:  ;
-  --tw-numeric-figure:  ;
-  --tw-numeric-spacing:  ;
-  --tw-numeric-fraction:  ;
-  --tw-ring-inset:  ;
-  --tw-ring-offset-width: 0px;
-  --tw-ring-offset-color: #fff;
-  --tw-ring-color: rgb(59 130 246 / 0.5);
-  --tw-ring-offset-shadow: 0 0 #0000;
-  --tw-ring-shadow: 0 0 #0000;
-  --tw-shadow: 0 0 #0000;
-  --tw-shadow-colored: 0 0 #0000;
-  --tw-blur:  ;
-  --tw-brightness:  ;
-  --tw-contrast:  ;
-  --tw-grayscale:  ;
-  --tw-hue-rotate:  ;
-  --tw-invert:  ;
-  --tw-saturate:  ;
-  --tw-sepia:  ;
-  --tw-drop-shadow:  ;
-  --tw-backdrop-blur:  ;
-  --tw-backdrop-brightness:  ;
-  --tw-backdrop-contrast:  ;
-  --tw-backdrop-grayscale:  ;
-  --tw-backdrop-hue-rotate:  ;
-  --tw-backdrop-invert:  ;
-  --tw-backdrop-opacity:  ;
-  --tw-backdrop-saturate:  ;
-  --tw-backdrop-sepia:  ;
-}
-
-::backdrop {
-  --tw-border-spacing-x: 0;
-  --tw-border-spacing-y: 0;
-  --tw-translate-x: 0;
-  --tw-translate-y: 0;
-  --tw-rotate: 0;
-  --tw-skew-x: 0;
-  --tw-skew-y: 0;
-  --tw-scale-x: 1;
-  --tw-scale-y: 1;
-  --tw-pan-x:  ;
-  --tw-pan-y:  ;
-  --tw-pinch-zoom:  ;
-  --tw-scroll-snap-strictness: proximity;
-  --tw-ordinal:  ;
-  --tw-slashed-zero:  ;
-  --tw-numeric-figure:  ;
-  --tw-numeric-spacing:  ;
-  --tw-numeric-fraction:  ;
-  --tw-ring-inset:  ;
-  --tw-ring-offset-width: 0px;
-  --tw-ring-offset-color: #fff;
-  --tw-ring-color: rgb(59 130 246 / 0.5);
-  --tw-ring-offset-shadow: 0 0 #0000;
-  --tw-ring-shadow: 0 0 #0000;
-  --tw-shadow: 0 0 #0000;
-  --tw-shadow-colored: 0 0 #0000;
-  --tw-blur:  ;
-  --tw-brightness:  ;
-  --tw-contrast:  ;
-  --tw-grayscale:  ;
-  --tw-hue-rotate:  ;
-  --tw-invert:  ;
-  --tw-saturate:  ;
-  --tw-sepia:  ;
-  --tw-drop-shadow:  ;
-  --tw-backdrop-blur:  ;
-  --tw-backdrop-brightness:  ;
-  --tw-backdrop-contrast:  ;
-  --tw-backdrop-grayscale:  ;
-  --tw-backdrop-hue-rotate:  ;
-  --tw-backdrop-invert:  ;
-  --tw-backdrop-opacity:  ;
-  --tw-backdrop-saturate:  ;
-  --tw-backdrop-sepia:  ;
-}
-
-.static {
-  position: static;
-}
-
-.mb-5 {
-  margin-bottom: 1.25rem;
-}
-
-.mb-4 {
-  margin-bottom: 1rem;
-}
-
-.mb-3 {
-  margin-bottom: 0.75rem;
-}
-
-.block {
-  display: block;
-}
-
-.inline-block {
-  display: inline-block;
-}
-
-.flex {
-  display: flex;
-}
-
-.table {
-  display: table;
-}
-
-.w-\[7ch\] {
-  width: 7ch;
-}
-
-.table-auto {
-  table-layout: auto;
-}
-
-.flex-row {
-  flex-direction: row;
-}
-
-.flex-col {
-  flex-direction: column;
-}
-
-.flex-col-reverse {
-  flex-direction: column-reverse;
-}
-
-.items-start {
-  align-items: flex-start;
-}
-
-.items-center {
-  align-items: center;
-}
-
-.gap-4 {
-  gap: 1rem;
-}
-
-.gap-3 {
-  gap: 0.75rem;
-}
-
-.border {
-  border-width: 1px;
-}
-
-.border-x {
-  border-left-width: 1px;
-  border-right-width: 1px;
-}
-
-.border-b {
-  border-bottom-width: 1px;
-}
-
-.border-r {
-  border-right-width: 1px;
-}
-
-.border-black {
-  --tw-border-opacity: 1;
-  border-color: rgb(0 0 0 / var(--tw-border-opacity));
-}
-
-.border-gray-100 {
-  --tw-border-opacity: 1;
-  border-color: rgb(243 244 246 / var(--tw-border-opacity));
-}
-
-.border-r-gray-100 {
-  --tw-border-opacity: 1;
-  border-right-color: rgb(243 244 246 / var(--tw-border-opacity));
-}
-
-.bg-amber-100 {
-  --tw-bg-opacity: 1;
-  background-color: rgb(254 243 199 / var(--tw-bg-opacity));
-}
-
-.bg-gray-100 {
-  --tw-bg-opacity: 1;
-  background-color: rgb(243 244 246 / var(--tw-bg-opacity));
-}
-
-.bg-black {
-  --tw-bg-opacity: 1;
-  background-color: rgb(0 0 0 / var(--tw-bg-opacity));
-}
-
-.p-10 {
-  padding: 2.5rem;
-}
-
-.p-4 {
-  padding: 1rem;
-}
-
-.px-4 {
-  padding-left: 1rem;
-  padding-right: 1rem;
-}
-
-.py-2 {
-  padding-top: 0.5rem;
-  padding-bottom: 0.5rem;
-}
-
-.px-5 {
-  padding-left: 1.25rem;
-  padding-right: 1.25rem;
-}
-
-.text-left {
-  text-align: left;
-}
-
-.text-center {
-  text-align: center;
-}
-
-.font-bebas {
-  font-family: Bebas Neue, ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
-}
-
-.text-6xl {
-  font-size: 3.75rem;
-  line-height: 1;
-}
-
-.text-3xl {
-  font-size: 1.875rem;
-  line-height: 2.25rem;
-}
-
-.text-lg {
-  font-size: 1.125rem;
-  line-height: 1.75rem;
-}
-
-.text-xl {
-  font-size: 1.25rem;
-  line-height: 1.75rem;
-}
-
-.font-bold {
-  font-weight: 700;
-}
-
-.font-normal {
-  font-weight: 400;
-}
-
-.font-light {
-  font-weight: 300;
-}
-
-.text-amber-800 {
-  --tw-text-opacity: 1;
-  color: rgb(146 64 14 / var(--tw-text-opacity));
-}
-
-.text-amber-900 {
-  --tw-text-opacity: 1;
-  color: rgb(120 53 15 / var(--tw-text-opacity));
-}
-
-.text-gray-800 {
-  --tw-text-opacity: 1;
-  color: rgb(31 41 55 / var(--tw-text-opacity));
-}
-
-.text-gray-900 {
-  --tw-text-opacity: 1;
-  color: rgb(17 24 39 / var(--tw-text-opacity));
-}
-
-.text-white {
-  --tw-text-opacity: 1;
-  color: rgb(255 255 255 / var(--tw-text-opacity));
-}
-
-.underline {
-  text-decoration-line: underline;
-}
-
-.duration-100 {
-  transition-duration: 100ms;
-}
-
-@layer typography {
-  .font-bebas {
-    font-family: "Bebas Neue";
-  }
-}
-
-.hover\:bg-white:hover {
-  --tw-bg-opacity: 1;
-  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
-}
-
-.hover\:text-black:hover {
-  --tw-text-opacity: 1;
-  color: rgb(0 0 0 / var(--tw-text-opacity));
-}
-
-@media (min-width: 768px) {
-  .md\:w-full {
-    width: 100%;
-  }
-
-  .md\:flex-row {
-    flex-direction: row;
-  }
-
-  .md\:items-start {
-    align-items: flex-start;
-  }
-}
-
-@media (min-width: 1024px) {
-  .lg\:w-\[768px\] {
-    width: 768px;
-  }
-}
diff --git a/shared/templates/shared/base.html b/shared/templates/shared/base.html
index dcadafc..de68527 100644
--- a/shared/templates/shared/base.html
+++ b/shared/templates/shared/base.html
@@ -7,7 +7,7 @@
         <meta charset="utf-8">
         <meta name="viewport" content="width=device-width, initial-scale=1">
 
-        <title>{% block name %}{% endblock %}</title>
+        <title>{% block title %}{% endblock %}</title>
         <meta name="description" content="{% block description %}{% endblock %}">
 
         <link
@@ -15,10 +15,23 @@
             type="text/css"
             href="{% static "shared/style.css" %}"
         >
+
+        <!-- BEGIN External styles -->
+        <link
+            href="https://styleguide.pirati.cz/2.3.x/css/styles.css"
+            rel="stylesheet"
+            media="all"
+        >
+        <link
+            href="https://styleguide.pirati.cz/2.3.x/css/pattern-scaffolding.css"
+            rel="stylesheet"
+            media="all"
+        >
         <link
             rel="stylesheet"
             href="https://gfonts.pirati.cz/css2?family=Bebas+Neue&family=Roboto+Condensed:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap"
         >
+        <!-- END External styles -->
 
         <link rel="shortcut icon" type="image/png" href="https://www.pirati.cz/static/shared/favicon/favicon-196.png" sizes="196x196">
         <link rel="shortcut icon" type="image/png" href="https://www.pirati.cz/static/shared/favicon/favicon-128.png" sizes="128x128">
@@ -31,6 +44,40 @@
         {% block head %}{% endblock %}
     </head>
     <body>
-        {% block content %}{% endblock %}
+        <nav class="navbar navbar--simple __js-root">
+            <ui-app inline-template>
+                <ui-navbar inline-template>
+                    <div>
+                        <div class="container container--default navbar__content" :class="{'navbar__content--initialized': true}">
+                            <div class="navbar__brand my-4 flex items-center lg:pr-8 lg:my-0">
+                                <a href="/#TODO">
+                                    <img src="https://styleguide.pirati.cz/2.3.x/images/logo-round-white.svg" class="w-8">
+                                </a>
+                                <div class="pl-4 font-bold text-xl lg:border-r lg:border-grey-300 lg:pr-8">
+                                    <a href="/#TODO">Rybička</a>
+                                </div>
+                            </div>
+                            {% block header_name %}{% endblock %}
+                        </div>
+                    </div>
+                </ui-navbar>
+            </ui-app>
+        </nav>
+        <div class="container container--default py-8 lg:py-24 {% if page.root_page.narrow_layout %}max-w-screen-lg{% endif%}">
+            {% block content %}{% endblock %}
+        </div>
+        <footer class="footer bg-grey-700 text-white __js-root">
+            <ui-app inline-template>
+                <div>
+                    <div class="footer__main py-4 lg:py-16 container container--default">
+                        <section class="footer__brand">
+                            <p class="para hidden md:block md:mb-4 lg:mb-0 text-grey-200">
+                                <span class="copyleft inline-block">&copy;</span> {% now "Y" %} Piráti. Všechna práva vyhlazena. Sdílejte a nechte ostatní sdílet za stejných podmínek.
+                            </p>
+                        </section>
+                    </div>
+                </div>
+            </ui-app>
+        </footer>
     </body>
 </html>
diff --git a/shared/templates/shared/index.html b/shared/templates/shared/index.html
new file mode 100644
index 0000000..4d19644
--- /dev/null
+++ b/shared/templates/shared/index.html
@@ -0,0 +1,39 @@
+{% extends "shared/base.html" %}
+
+{% load render_bundle from webpack_loader %}
+{% load static %}
+
+{% block title %}Rybička{% endblock %}
+{% block header_name %}Seznam nástrojů{% endblock %}
+{% block description %}{% endblock %}
+
+{% block head %}
+    {% render_bundle "base" %}
+{% endblock %}
+
+{% block content %}
+    <main>
+        <h1 class="text-6xl font-bebas mb-5">Rychlé nástroje</h1>
+        <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
+           <article class="card">
+                <a href="{% url "member_group_size_calc_index" %}">
+                    <img
+                        src="{% static "member_group_size_calc/calculator.webp" %}"
+                        alt="Kalkulačka výpočtu skupiny členů"
+                        class="w-full h-48 object-cover"
+                    >
+                </a>
+                <div class="p-4">
+                    <h2 class="mb-2 text-xl font-bold">
+                        <a href="{% url "member_group_size_calc_index" %}">
+                            Kalkulačka výpočtu skupiny členů
+                        </a>
+                    </h2>
+                    <div class="font-light text-sm break-words">
+                        Výpočet velikosti skupiny členů podle jednoacího řádu.
+                    </div>
+                </div>
+            </article>
+        </div>
+    </main>
+{% endblock %}
diff --git a/shared/urls.py b/shared/urls.py
index f5e3311..b8464da 100644
--- a/shared/urls.py
+++ b/shared/urls.py
@@ -2,4 +2,6 @@ from django.urls import path
 
 from . import views
 
-urlpatterns = []
+urlpatterns = [
+	path("", views.index, name="shared_index"),
+]
diff --git a/shared/views.py b/shared/views.py
index 91ea44a..e2cf407 100644
--- a/shared/views.py
+++ b/shared/views.py
@@ -1,3 +1,9 @@
 from django.shortcuts import render
 
 # Create your views here.
+
+def index(request):
+    return render(
+        request,
+        "shared/index.html"
+    )
diff --git a/static_src/base.css b/static_src/base.css
index 0462d9f..7791e10 100644
--- a/static_src/base.css
+++ b/static_src/base.css
@@ -17,3 +17,13 @@
 }
 
 @import url("https://gfonts.pirati.cz/css2?family=Bebas+Neue&family=Roboto+Condensed:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap");
+
+.card {
+    box-shadow: 0 3px 1px -2px rgba(221,221,221,.43), 0 2px 2px 0 rgba(221,221,221,.37), 0 1px 5px 0 rgba(221,221,221,.35);
+}
+
+.card:hover {
+    transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;
+    transition-duration: .2s;
+    box-shadow: 0 10px 13px -6px rgba(221,221,221,.43), 0 21px 33px 3px rgba(221,221,221,.37), 0 8px 40px 7px rgba(221,221,221,.35);
+}
-- 
GitLab