diff --git a/README.md b/README.md
index fe3f4311..aedc5902 100644
--- a/README.md
+++ b/README.md
@@ -209,3 +209,8 @@ Logos and text provided with courtesy of kits.
- https://github.com/gerardo-navarro
- https://github.com/nwittstruck
- Lightbulb stock image by LED Supermarket at Pexels: https://www.pexels.com/de-de/foto/die-gluhbirne-577514/
+
+
+## Additonal licence
+
+The mindwendel [logo](https://thenounproject.com/icon/735650/) in this repo – created by [mikicon](https://thenounproject.com/mikicon) – is licenced under [CC BY 3.0 Unported](https://creativecommons.org/licenses/by/3.0/).
diff --git a/README_KITS.md b/README_KITS.md
new file mode 100644
index 00000000..dd9d8ecf
--- /dev/null
+++ b/README_KITS.md
@@ -0,0 +1,21 @@
+# kits version of mindwendel
+
+This project includes a few CI changes to the mindwendel software.
+
+## Installation
+
+Use docker-compose
+```sh
+docker-compose -f docker-compose-kits.yml up
+```
+
+or to make sure updates will be included:
+
+```sh
+docker-compose -f docker-compose-kits.yml --force-recreate up
+```
+
+Important: Make sure to exchange passwords with proper ones!
+
+
+See main README for project specifics.
diff --git a/assets/js/app.js b/assets/js/app.js
index 568d2633..dadca3e2 100644
--- a/assets/js/app.js
+++ b/assets/js/app.js
@@ -1,7 +1,3 @@
-// This file will be generated by dart_sass - this is the compiled css file:
-// We include this here, so esbuild can handle e.g. copying fonts to the /priv/static/assets directory
-import "../scss/app.css";
-
import { Modal } from "bootstrap"
// webpack automatically bundles all modules in your
@@ -21,6 +17,7 @@ import {LiveSocket} from "phoenix_live_view"
import QRCodeStyling from "qr-code-styling";
import ClipboardJS from "clipboard"
import {buildQrCodeOptions} from "./qrCodeUtils.js"
+import "./column_setup.js"
let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content")
diff --git a/assets/js/column_setup.js b/assets/js/column_setup.js
new file mode 100644
index 00000000..bf7dfe06
--- /dev/null
+++ b/assets/js/column_setup.js
@@ -0,0 +1,16 @@
+// configure link list - on iOS, the navigation bar is dynamic. when it's expanded,
+// the link list would be below the fold or very close to the edge.
+// to handle this, we adjust the size of the column to the inner height of the window
+const leftColumn = document.getElementById("left-column");
+
+function setLeftColumnHeight() {
+ leftColumn?.setAttribute(
+ "style",
+ `height: ${window.innerHeight} px !important`
+ );
+}
+// change the left column size whenever the window is resized
+window.addEventListener("resize", setLeftColumnHeight);
+
+// call initially:
+setLeftColumnHeight();
diff --git a/assets/package-lock.json b/assets/package-lock.json
index 6f0fe94f..6c5a5674 100644
--- a/assets/package-lock.json
+++ b/assets/package-lock.json
@@ -211,4 +211,4 @@
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
}
}
-}
+}
\ No newline at end of file
diff --git a/assets/package.json b/assets/package.json
index 54ff0e1f..de3a91ff 100644
--- a/assets/package.json
+++ b/assets/package.json
@@ -14,4 +14,4 @@
"qr-code-styling": "^1.6.0-rc.1"
},
"name": "assets"
-}
+}
\ No newline at end of file
diff --git a/assets/scss/_bootstrap_custom.scss b/assets/scss/_bootstrap_custom.scss
index 77269855..88583464 100644
--- a/assets/scss/_bootstrap_custom.scss
+++ b/assets/scss/_bootstrap_custom.scss
@@ -1,5 +1,10 @@
-// Required
-@import "../node_modules/bootstrap/scss/bootstrap";
+@import "kits/colors";
+@import "kits/fonts";
+@import "kits/button";
+@import "kits/gradient";
+@import "kits/form";
+@import "kits/list";
+@import "kits/utilities";
.card-body-mindwendel-idea {
@extend .card-body;
@@ -11,3 +16,6 @@
padding: 0.5rem 0.5rem;
background-color: inherit;
}
+
+// Required
+@import "../node_modules/bootstrap/scss/bootstrap";
diff --git a/assets/scss/app.scss b/assets/scss/app.scss
index d8c8ffad..481edbfe 100644
--- a/assets/scss/app.scss
+++ b/assets/scss/app.scss
@@ -2,7 +2,7 @@
@import "../node_modules/nprogress/nprogress";
@import "_bootstrap_custom.scss";
-$bootstrap-icons-font-dir: "../node_modules/bootstrap-icons/font/fonts/";
+$bootstrap-icons-font-dir: "/fonts/bootstrap-icons/";
@import "../node_modules/bootstrap-icons/font/bootstrap-icons";
@import "live/idea_live/_index_component.scss";
@@ -12,7 +12,7 @@ $bootstrap-icons-font-dir: "../node_modules/bootstrap-icons/font/fonts/";
}
.nav-mindwendel-logo {
- height: 25px;
+ height: 35px;
}
// Taken from the examples shown:
@@ -63,4 +63,4 @@ a .bi {
/* Alerts and form errors */
.alert:empty {
display: none;
-}
+}
\ No newline at end of file
diff --git a/assets/scss/kits.scss b/assets/scss/kits.scss
new file mode 100644
index 00000000..feb72d25
--- /dev/null
+++ b/assets/scss/kits.scss
@@ -0,0 +1,29 @@
+/* Import files: */
+@import "./kits/theme.scss";
+
+.alert {
+ padding: 15px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+
+.alert p {
+ margin-bottom: 0;
+}
+
+.alert:empty {
+ display: none;
+}
+
+.bg-light {
+ background-color: var(--bs-gray-200) !important;
+}
+
+#mindmaps a {
+ color: var(--bs-gray-700);
+}
+
+#mindmaps a:hover {
+ color: var(--bs-primary-rgb) !important;
+}
\ No newline at end of file
diff --git a/assets/scss/kits/button.scss b/assets/scss/kits/button.scss
new file mode 100644
index 00000000..c52a93d9
--- /dev/null
+++ b/assets/scss/kits/button.scss
@@ -0,0 +1,8 @@
+.btn-group > :not(.btn-check:first-child) + .btn,
+.btn-group > .btn-group:not(:first-child) {
+ margin-left: 0px !important;
+}
+
+.btn-secondary {
+ color: white !important;
+}
diff --git a/assets/scss/kits/colors.scss b/assets/scss/kits/colors.scss
new file mode 100644
index 00000000..1e0491d3
--- /dev/null
+++ b/assets/scss/kits/colors.scss
@@ -0,0 +1,13 @@
+$primary: #00456f;
+$secondary: #00a3d3;
+$success: #50c878;
+$danger: #bb3535;
+$warning: #ffaa00;
+$info: #55ffff;
+
+// This scss var determines which text-color is used for which background.
+// Usually, acceptable values are `3`, `4.5` and `7`, see node_modules/bootstrap/scss/_variables.scss .
+// However, we need to adjust this variable for this kits theme
+// because we want to have a light text color when a background with secondary color.
+// This is a project-specific customization / requirement.
+$min-contrast-ratio: 2.9;
diff --git a/assets/scss/kits/fonts.scss b/assets/scss/kits/fonts.scss
new file mode 100644
index 00000000..64e167d2
--- /dev/null
+++ b/assets/scss/kits/fonts.scss
@@ -0,0 +1,22 @@
+@font-face {
+ font-family: FiraSans;
+ src: url("../fonts/FiraSans-Regular.otf") format("opentype");
+}
+
+@font-face {
+ font-family: FiraSans;
+ font-weight: light;
+ src: url("../fonts/FiraSans-Light.otf") format("opentype");
+}
+
+@font-face {
+ font-family: FiraSans;
+ font-weight: bold;
+ src: url("../fonts/FiraSans-Bold.otf") format("opentype");
+}
+
+// Set bootstrap font:
+$font-family-base: FiraSans;
+
+// Font Size - H6
+$h6-font-size: 12px;
diff --git a/assets/scss/kits/form.scss b/assets/scss/kits/form.scss
new file mode 100644
index 00000000..7d1b6df3
--- /dev/null
+++ b/assets/scss/kits/form.scss
@@ -0,0 +1 @@
+$input-btn-border-width: 1px;
diff --git a/assets/scss/kits/gradient.scss b/assets/scss/kits/gradient.scss
new file mode 100644
index 00000000..a242c8a1
--- /dev/null
+++ b/assets/scss/kits/gradient.scss
@@ -0,0 +1 @@
+$gradient: linear-gradient(180deg, rgba(0, 69, 111, 1) 0%, rgba(0, 163, 211, 1) 100%);
diff --git a/assets/scss/kits/list.scss b/assets/scss/kits/list.scss
new file mode 100644
index 00000000..084d4787
--- /dev/null
+++ b/assets/scss/kits/list.scss
@@ -0,0 +1,13 @@
+.list-group-item {
+ padding: 0px;
+ border-style: none !important;
+}
+
+.list-group {
+ border-radius: 0px !important;
+}
+
+.list-unstyled {
+ border-left: 3px solid #00a3d3;
+ padding-left: 7px;
+}
\ No newline at end of file
diff --git a/assets/scss/kits/theme.scss b/assets/scss/kits/theme.scss
new file mode 100644
index 00000000..b7518e48
--- /dev/null
+++ b/assets/scss/kits/theme.scss
@@ -0,0 +1,125 @@
+// Import customisations first, afterwards import bootstrap::after
+
+@import "colors";
+@import "fonts";
+@import "button";
+@import "gradient";
+@import "form";
+@import "list";
+@import "utilities";
+
+// Required
+@import "bootstrap/scss/functions";
+@import "bootstrap/scss/variables";
+
+// disable dark mode:
+$enable-dark-mode: false;
+
+@import "bootstrap/scss/maps";
+@import "bootstrap/scss/mixins";
+@import "bootstrap/scss/utilities";
+@import "bootstrap/scss/root";
+@import "bootstrap/scss/reboot";
+
+@import "bootstrap/scss/type";
+@import "bootstrap/scss/images";
+@import "bootstrap/scss/containers";
+@import "bootstrap/scss/grid";
+@import "bootstrap/scss/tables";
+@import "bootstrap/scss/forms";
+@import "bootstrap/scss/buttons";
+@import "bootstrap/scss/transitions";
+@import "bootstrap/scss/dropdown";
+@import "bootstrap/scss/button-group";
+@import "bootstrap/scss/nav";
+@import "bootstrap/scss/navbar"; // Requires nav
+@import "bootstrap/scss/card";
+@import "bootstrap/scss/breadcrumb";
+@import "bootstrap/scss/accordion";
+@import "bootstrap/scss/pagination";
+@import "bootstrap/scss/badge";
+@import "bootstrap/scss/alert";
+@import "bootstrap/scss/progress";
+@import "bootstrap/scss/list-group";
+@import "bootstrap/scss/close";
+@import "bootstrap/scss/toasts";
+@import "bootstrap/scss/modal"; // Requires transitions
+@import "bootstrap/scss/tooltip";
+@import "bootstrap/scss/popover";
+@import "bootstrap/scss/carousel";
+@import "bootstrap/scss/spinners";
+@import "bootstrap/scss/offcanvas"; // Requires transitions
+@import "bootstrap/scss/placeholders";
+@import "bootstrap/scss/helpers";
+@import "bootstrap/scss/utilities/api";
+
+//
+// Custom styles not related to bootstrap:
+//
+@include media-breakpoint-down(lg) {
+ // starting with LG size we only want one column:
+ .float-end {
+ width: 100% !important;
+ height: auto !important;
+ margin-bottom: 100px;
+ }
+}
+
+@include media-breakpoint-up(lg) {
+ #call-to-action-block {
+ margin-top: -90px;
+ }
+
+ #content {
+ margin-top: 0rem !important;
+ }
+}
+
+#content {
+ margin-top: 3rem;
+}
+
+#static-footer .row {
+ margin: 1rem;
+}
+
+@media screen and (max-height: 812px) {
+ #content {
+ margin-top: 1rem;
+ }
+
+ #static-footer .row {
+ margin: 0.5rem;
+ }
+
+ .form-text.text-muted {
+ font-size: 0.75em;
+ }
+}
+
+@media screen and (max-height: 568px) {
+ #content {
+ margin-top: 0rem;
+ }
+
+ #static-footer .row {
+ margin: 0.5rem;
+ }
+
+ .form-text.text-muted {
+ font-size: 0.65em;
+ }
+}
+
+@media screen and (max-width: 374px) {
+ // for very small display widhts we need to reduce the font size for the footer:
+ #static-footer {
+ font-size: 14px;
+ }
+}
+
+// we don't want the footer logo to grow too big, otherwise the footer becomes too high:
+#static-footer-logo {
+ max-width: 80px !important;
+ min-width: 40px;
+}
diff --git a/assets/scss/kits/utilities.scss b/assets/scss/kits/utilities.scss
new file mode 100644
index 00000000..7b6c9a87
--- /dev/null
+++ b/assets/scss/kits/utilities.scss
@@ -0,0 +1,17 @@
+// this adds an additional 90% percent width:
+$utilities: (
+ "width": (
+ property: width,
+ responsive: true,
+ class: w,
+ values: (
+ 25: 25%,
+ 50: 50%,
+ 65: 65%,
+ 75: 75%,
+ 90: 90%,
+ 100: 100%,
+ auto: auto,
+ ),
+ ),
+);
diff --git a/config/config.exs b/config/config.exs
index e5029f67..23c3252f 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -39,8 +39,19 @@ config :phoenix, :json_library, Jason
config :esbuild,
version: "0.19.11",
default: [
- args:
- ~w(js/app.js --bundle --target=es2016 --outdir=../priv/static/assets --external:/images/* --loader:.woff=file --loader:.woff2=file),
+ args: ~w(
+ js/app.js
+ --bundle
+ --target=es2016
+ --outdir=../priv/static/assets
+ --external:/images/*
+ --external:*.png
+ --external:*.ico
+ --external:*.svg
+ --external:*.webmanifest
+ --loader:.woff=file
+ --loader:.woff2=file
+ ),
cd: Path.expand("../assets", __DIR__),
env: %{"NODE_PATH" => Path.expand("../deps", __DIR__)}
]
@@ -48,7 +59,11 @@ config :esbuild,
config :dart_sass,
version: "1.69.7",
default: [
- args: ~w(scss/app.scss scss/app.css),
+ args: ~w(
+ scss/app.scss:../priv/static/assets/app.css
+ scss/kits.scss:../priv/static/assets/kits.css
+ --load-path=node_modules
+ ),
cd: Path.expand("../assets", __DIR__)
]
diff --git a/docker-compose-kits.yml b/docker-compose-kits.yml
new file mode 100644
index 00000000..be845e18
--- /dev/null
+++ b/docker-compose-kits.yml
@@ -0,0 +1,41 @@
+version: "3"
+
+services:
+ mindwendel:
+ container_name: mindwendel
+ image: kits/mindwendel
+ build:
+ context: .
+ target: app
+ environment:
+ DATABASE_USER: postgres
+ DATABASE_USER_PASSWORD: postgres
+ DATABASE_NAME: mindwendel
+ DATABASE_PORT: 5432
+ DATABASE_HOST: db
+ DATABASE_SSL: "true"
+ URL_HOST: localhost
+ # IMPORTANT: Change the secret key base - see readme
+ SECRET_KEY_BASE:
+ MW_DEFAULT_LOCALE: de
+ MW_FEATURE_BRAINSTORMING_TEASER: "false"
+ # Use the URL_PORT to change url generation behavior
+ # URL_PORT:
+ ports:
+ - "4000:4000"
+ depends_on:
+ - db
+ db:
+ image: postgres:latest
+ environment:
+ # IMPORTANT: Do not use these credentials in production. Please use other credentials when deploying this in production
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: postgres
+ PGDATA: /var/lib/postgresql/data/pgdata
+ restart: always
+ ports:
+ - "5432:5432"
+ volumes:
+ - pgdata:/var/lib/postgresql/data
+volumes:
+ pgdata:
\ No newline at end of file
diff --git a/lib/mindwendel_web/controllers/brainstorming_controller.ex b/lib/mindwendel_web/controllers/brainstorming_controller.ex
index a93cb0ab..081c66d0 100644
--- a/lib/mindwendel_web/controllers/brainstorming_controller.ex
+++ b/lib/mindwendel_web/controllers/brainstorming_controller.ex
@@ -19,10 +19,10 @@ defmodule MindwendelWeb.BrainstormingController do
)
|> redirect(to: Routes.brainstorming_show_path(conn, :show, brainstorming))
- {:error, _} ->
+ {:error, changeset} ->
conn
|> put_flash(
- :info,
+ :error,
gettext("Something went wrong when creating a brainstorming. Please try again.")
)
|> redirect(to: Routes.static_page_path(conn, :home))
diff --git a/lib/mindwendel_web/controllers/static_page_controller.ex b/lib/mindwendel_web/controllers/static_page_controller.ex
index 6681dfed..81b77d8a 100644
--- a/lib/mindwendel_web/controllers/static_page_controller.ex
+++ b/lib/mindwendel_web/controllers/static_page_controller.ex
@@ -3,7 +3,7 @@ defmodule MindwendelWeb.StaticPageController do
alias Mindwendel.Brainstormings
alias Mindwendel.Brainstormings.Brainstorming
- plug :put_root_layout, {MindwendelWeb.LayoutView, :static_page}
+ plug :put_root_layout, {MindwendelWeb.LayoutView, :kits_static_page}
def home(conn, _params) do
current_user =
@@ -11,7 +11,10 @@ defmodule MindwendelWeb.StaticPageController do
|> MindwendelService.SessionService.get_current_user_id()
|> Mindwendel.Accounts.get_user()
- render(conn, "home.html",
+ conn
+ |> put_layout(false)
+ |> render(
+ "kits_home.html",
current_user: current_user,
brainstorming: %Brainstorming{},
changeset: Brainstormings.change_brainstorming(%Brainstorming{}, %{})
diff --git a/lib/mindwendel_web/endpoint.ex b/lib/mindwendel_web/endpoint.ex
index 1130200c..ff3ec434 100644
--- a/lib/mindwendel_web/endpoint.ex
+++ b/lib/mindwendel_web/endpoint.ex
@@ -24,7 +24,24 @@ defmodule MindwendelWeb.Endpoint do
at: "/",
from: :mindwendel,
gzip: false,
- only: ~w(assets fonts images favicon.ico robots.txt)
+ only: [
+ "apple-touch-icon.png",
+ "assets",
+ "browserconfig.xml",
+ "css",
+ "favicon.ico",
+ "fonts",
+ "images",
+ "js",
+ "robots.txt",
+ "safari-pinned-tab.svg",
+ "site.webmanifest"
+ ],
+ only_matching: [
+ "android-chrome-",
+ "favicon-",
+ "mstile-"
+ ]
# Code reloading can be explicitly enabled under the
# :code_reloader configuration of your endpoint.
diff --git a/lib/mindwendel_web/live/brainstorming_live/show.html.heex b/lib/mindwendel_web/live/brainstorming_live/show.html.heex
index 089ba83f..0678780b 100644
--- a/lib/mindwendel_web/live/brainstorming_live/show.html.heex
+++ b/lib/mindwendel_web/live/brainstorming_live/show.html.heex
@@ -7,7 +7,7 @@
<%= gettext("Got stuck? Try inspirational teasers!") %>
-
+
<%= @inspiration.title %>
diff --git a/lib/mindwendel_web/plugs/set_response_header_content_security_policy.ex b/lib/mindwendel_web/plugs/set_response_header_content_security_policy.ex
index f341c578..743d77ff 100644
--- a/lib/mindwendel_web/plugs/set_response_header_content_security_policy.ex
+++ b/lib/mindwendel_web/plugs/set_response_header_content_security_policy.ex
@@ -33,6 +33,7 @@ defmodule Mindwendel.Plugs.SetResponseHeaderContentSecurityPolicy do
# We add csp sources http: and https: to allow the browser to load the link preview image extracted from the idea body
"img-src 'self' data: https: http: ;",
+ "manifest-src 'self' ;",
# We need to add csp 'unsafe-eval', otherwise we get an error in development
# because webpack js bundle uses `eval` for hot reloading.
diff --git a/lib/mindwendel_web/templates/error/error_page.html.heex b/lib/mindwendel_web/templates/error/error_page.html.heex
index acf80d38..1381f77e 100644
--- a/lib/mindwendel_web/templates/error/error_page.html.heex
+++ b/lib/mindwendel_web/templates/error/error_page.html.heex
@@ -21,8 +21,8 @@
diff --git a/lib/mindwendel_web/templates/layout/app.html.heex b/lib/mindwendel_web/templates/layout/app.html.heex
index 3465d98d..8a7489d7 100644
--- a/lib/mindwendel_web/templates/layout/app.html.heex
+++ b/lib/mindwendel_web/templates/layout/app.html.heex
@@ -1,5 +1,5 @@
-
+
+
+
diff --git a/priv/static/android-chrome-192x192.png b/priv/static/android-chrome-192x192.png
new file mode 100644
index 00000000..a5bb8de2
Binary files /dev/null and b/priv/static/android-chrome-192x192.png differ
diff --git a/priv/static/android-chrome-512x512.png b/priv/static/android-chrome-512x512.png
new file mode 100644
index 00000000..ce879834
Binary files /dev/null and b/priv/static/android-chrome-512x512.png differ
diff --git a/priv/static/apple-touch-icon.png b/priv/static/apple-touch-icon.png
new file mode 100644
index 00000000..6f5261c2
Binary files /dev/null and b/priv/static/apple-touch-icon.png differ
diff --git a/priv/static/browserconfig.xml b/priv/static/browserconfig.xml
new file mode 100644
index 00000000..d416bc53
--- /dev/null
+++ b/priv/static/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #ffffff
+
+
+
diff --git a/priv/static/favicon-16x16.png b/priv/static/favicon-16x16.png
new file mode 100644
index 00000000..6ff8a607
Binary files /dev/null and b/priv/static/favicon-16x16.png differ
diff --git a/priv/static/favicon-32x32.png b/priv/static/favicon-32x32.png
new file mode 100644
index 00000000..3c93d3ee
Binary files /dev/null and b/priv/static/favicon-32x32.png differ
diff --git a/priv/static/favicon.ico b/priv/static/favicon.ico
index 469370b7..56b43873 100644
Binary files a/priv/static/favicon.ico and b/priv/static/favicon.ico differ
diff --git a/priv/static/fonts/FiraSans-Bold.otf b/priv/static/fonts/FiraSans-Bold.otf
new file mode 100755
index 00000000..01821595
Binary files /dev/null and b/priv/static/fonts/FiraSans-Bold.otf differ
diff --git a/priv/static/fonts/FiraSans-Light.otf b/priv/static/fonts/FiraSans-Light.otf
new file mode 100755
index 00000000..1445a4af
Binary files /dev/null and b/priv/static/fonts/FiraSans-Light.otf differ
diff --git a/priv/static/fonts/FiraSans-Regular.otf b/priv/static/fonts/FiraSans-Regular.otf
new file mode 100755
index 00000000..98ef98c8
Binary files /dev/null and b/priv/static/fonts/FiraSans-Regular.otf differ
diff --git a/priv/static/fonts/SIL Open Font License.txt b/priv/static/fonts/SIL Open Font License.txt
new file mode 100755
index 00000000..8a1303f8
--- /dev/null
+++ b/priv/static/fonts/SIL Open Font License.txt
@@ -0,0 +1,45 @@
+Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ with Reserved Font Name Fira Sans.
+
+Copyright (c) 2014, Telefonica S.A.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
+
+5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
\ No newline at end of file
diff --git a/priv/static/fonts/bootstrap-icons/bootstrap-icons.woff b/priv/static/fonts/bootstrap-icons/bootstrap-icons.woff
new file mode 100755
index 00000000..bfb86654
Binary files /dev/null and b/priv/static/fonts/bootstrap-icons/bootstrap-icons.woff differ
diff --git a/priv/static/fonts/bootstrap-icons/bootstrap-icons.woff2 b/priv/static/fonts/bootstrap-icons/bootstrap-icons.woff2
new file mode 100755
index 00000000..4df0df20
Binary files /dev/null and b/priv/static/fonts/bootstrap-icons/bootstrap-icons.woff2 differ
diff --git a/priv/static/images/kits-logo.svg b/priv/static/images/kits-logo.svg
new file mode 100644
index 00000000..0747e0b0
--- /dev/null
+++ b/priv/static/images/kits-logo.svg
@@ -0,0 +1,4 @@
+
diff --git a/priv/static/images/kits-mindwendel-logo-blue.svg b/priv/static/images/kits-mindwendel-logo-blue.svg
new file mode 100644
index 00000000..62b44573
--- /dev/null
+++ b/priv/static/images/kits-mindwendel-logo-blue.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/priv/static/images/kits-mindwendel-logo-white.svg b/priv/static/images/kits-mindwendel-logo-white.svg
new file mode 100644
index 00000000..5bd641a5
--- /dev/null
+++ b/priv/static/images/kits-mindwendel-logo-white.svg
@@ -0,0 +1,22 @@
+
+
+
diff --git a/priv/static/mstile-144x144.png b/priv/static/mstile-144x144.png
new file mode 100644
index 00000000..359001ba
Binary files /dev/null and b/priv/static/mstile-144x144.png differ
diff --git a/priv/static/mstile-150x150.png b/priv/static/mstile-150x150.png
new file mode 100644
index 00000000..311170ff
Binary files /dev/null and b/priv/static/mstile-150x150.png differ
diff --git a/priv/static/mstile-310x150.png b/priv/static/mstile-310x150.png
new file mode 100644
index 00000000..7c2f102b
Binary files /dev/null and b/priv/static/mstile-310x150.png differ
diff --git a/priv/static/mstile-310x310.png b/priv/static/mstile-310x310.png
new file mode 100644
index 00000000..3fb1e954
Binary files /dev/null and b/priv/static/mstile-310x310.png differ
diff --git a/priv/static/mstile-70x70.png b/priv/static/mstile-70x70.png
new file mode 100644
index 00000000..501c2cae
Binary files /dev/null and b/priv/static/mstile-70x70.png differ
diff --git a/priv/static/safari-pinned-tab.svg b/priv/static/safari-pinned-tab.svg
new file mode 100644
index 00000000..61aba515
--- /dev/null
+++ b/priv/static/safari-pinned-tab.svg
@@ -0,0 +1,46 @@
+
+
+
diff --git a/priv/static/site.webmanifest b/priv/static/site.webmanifest
new file mode 100644
index 00000000..20dac17a
--- /dev/null
+++ b/priv/static/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "Mindwendel",
+ "short_name": "Mindwendel",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/test/mindwendel_web/controllers/static_page_controller_test.exs b/test/mindwendel_web/controllers/static_page_controller_test.exs
index f37a946e..19b85cad 100644
--- a/test/mindwendel_web/controllers/static_page_controller_test.exs
+++ b/test/mindwendel_web/controllers/static_page_controller_test.exs
@@ -7,7 +7,6 @@ defmodule MindwendelWeb.StaticPageControllerTest do
test "contains text", %{conn: conn} do
conn = get(conn, Routes.static_page_path(conn, :home))
assert html_response(conn, 200) =~ "mindwendel"
- assert html_response(conn, 200) =~ "Brainstorm"
end
test "sets current_user_id in session", %{conn: conn} do
@@ -40,7 +39,6 @@ defmodule MindwendelWeb.StaticPageControllerTest do
conn = get(conn, Routes.static_page_path(conn, :home))
- assert html_response(conn, 200) =~ "Your latest brainstormings"
assert html_response(conn, 200) =~ brainstorming.name
end
@@ -55,7 +53,6 @@ defmodule MindwendelWeb.StaticPageControllerTest do
conn = get(conn, Routes.static_page_path(conn, :home))
- refute html_response(conn, 200) =~ "Your latest brainstormings"
refute html_response(conn, 200) =~ brainstorming.name
end
end