diff --git a/.gitignore b/.gitignore index 005984e..280fb6b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ /data/* /data/logs/* /data/tls/* -/data/static/* +/data/django_static/* /data/profilepictures/* /data/archive/* !/data/logs/ diff --git a/README.md b/README.md index f2a4bf6..74a7248 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Drinks Manager (Season 3) +# Drinks Manager Note: This software is tailored to my own needs. I probably won't accept feature requests, and don't recommend you diff --git a/app/templates/footer.html b/app/templates/footer.html index 89d58c6..289f81e 100644 --- a/app/templates/footer.html +++ b/app/templates/footer.html @@ -2,6 +2,6 @@ \ No newline at end of file diff --git a/data/Caddyfile b/data/Caddyfile index c5bbc58..84f30f3 100644 --- a/data/Caddyfile +++ b/data/Caddyfile @@ -17,7 +17,11 @@ } # static files file_server /static/* { - root {$DATADIR}/static/.. + root {$ROOTDIR} + } + # django static files + file_server /django_static/* { + root {$DATADIR}/django_static/.. } # favicon redir /favicon.ico /static/favicon.ico diff --git a/project/settings.py b/project/settings.py index a5362ca..56ff5fb 100644 --- a/project/settings.py +++ b/project/settings.py @@ -149,8 +149,8 @@ LOCALE_PATHS = [ # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.1/howto/static-files/ -STATIC_URL = "static/" -STATIC_ROOT = BASE_DIR / "data" / "static" +STATIC_URL = "django_static/" +STATIC_ROOT = BASE_DIR / "data" / "django_static" # Default primary key field type # https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field diff --git a/requirements.txt b/requirements.txt index 2be275b..ceb35b8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -Django~=4.1 -psycopg2~=2.9.5 -uvicorn~=0.20.0 +Django~=4.2 +psycopg2~=2.9 +uvicorn[standard]~=0.27 PyYAML~=6.0 diff --git a/scripts/_bootstrap.py b/scripts/_bootstrap.py index 142781e..7cdee55 100755 --- a/scripts/_bootstrap.py +++ b/scripts/_bootstrap.py @@ -131,6 +131,7 @@ if __name__ == "__main__": ["./venv/bin/python3", "./manage.py", "migrate", "--noinput"], env=os.environ).wait() # Caddy configuration via env environment_caddy = os.environ + environment_caddy["ROOTDIR"] = str(base_directory.absolute()) environment_caddy["DATADIR"] = str(data_directory.absolute()) environment_caddy["CADDY_HOSTS"] = ", ".join(config["caddy"]["hosts"]) environment_caddy["HTTP_PORT"] = str(config["caddy"]["http_port"]) diff --git a/start.sh b/start.sh index 6420294..99a6ccd 100755 --- a/start.sh +++ b/start.sh @@ -11,6 +11,6 @@ chmod -c -R g-w,o-rwx .gitignore export PYTHONPATH="$basedir" export DJANGO_SETTINGS_MODULE="project.settings" -export APP_VERSION="20" +export APP_VERSION="21" exec ./scripts/_bootstrap.py "$@" diff --git a/app/static/css/main.css b/static/css/main.css similarity index 89% rename from app/static/css/main.css rename to static/css/main.css index 4ba0fc7..a6bcf52 100644 --- a/app/static/css/main.css +++ b/static/css/main.css @@ -19,14 +19,15 @@ --font-family: "Inter"; --color: #fafafa; --color-error: #ff682c; - --bg-page-color: #222222; - --bg-color: #4e4e4e; - --bg-hover-color: #636363; - --bg-color2: #383838; - --bg-hover-color2: #4a4a4a; - --border-color: #808080; + --bg-page: linear-gradient(#18151a, #060a0e); + --bg-color: #ffffff2c; + --bg-hover-color: #ffffff50; + --bg-color2: #ffffff44; + --bg-dropdown-color: #3a3a3f; + --bg-dropdown-hover-color: #59595c; + --border-color: #ffffff67; --bg-globalmessage: #161616; - --border-radius: .5rem; + --border-radius: .25rem; } /* General */ @@ -37,7 +38,8 @@ body { width: 100vw; min-height: 100vh; font-family: var(--font-family); - background: var(--bg-page-color); + font-size: 17px; + background: var(--bg-page); color: var(--color); overflow-x: hidden; } @@ -47,7 +49,7 @@ a { } h1 { - font-size: 1.8rem; + font-size: 28px; } h1, h2, h3, h4 { @@ -66,9 +68,9 @@ input[type="number"]::-webkit-inner-spin-button { } input[type="text"], input[type="password"], input[type="number"], select { - padding: .6rem .8rem; + padding: .5rem .8rem; text-align: center; - font-size: 1rem; + font-size: 16px; color: var(--color); border: none; outline: none; @@ -82,7 +84,7 @@ select { appearance: none; -webkit-appearance: none; -moz-appearance: none; - height: 2.5rem; + height: 2.2rem; background-image: url("/static/material-icons/arrow-drop-down.svg"); background-repeat: no-repeat; background-position: right; @@ -165,11 +167,7 @@ th { flex-direction: row; margin-top: 1rem; width: 94%; - gap: 1rem; -} - -.userinfo { - font-size: 1.05rem; + gap: 2rem; } .userinfo > span { @@ -224,7 +222,7 @@ main { } .footer > div { - font-size: .95rem; + font-size: 16px; margin-top: .15rem; margin-bottom: .15rem; } @@ -302,8 +300,8 @@ main { text-align: center !important; background: var(--bg-color); color: var(--color); - font-size: 1rem; - padding: .6rem .8rem; + font-size: 16px; + padding: .5rem .8rem; outline: none; border: none; border-bottom: 1px solid var(--border-color); @@ -338,8 +336,8 @@ main { .appform > .forminput { width: 100%; flex-direction: row; - justify-content: space-evenly; - align-items: center; + justify-content: space-between; + align-items: flex-end; flex-wrap: wrap; gap: 1rem; } @@ -366,30 +364,28 @@ main { } .dropdownlist { + margin-top: 3rem; position: absolute; display: flex; flex-direction: column; pointer-events: none; - border-radius: var(--border-radius) !important; - z-index: 200; - margin-top: 3.2rem; + gap: .5rem; opacity: 0%; - transition: opacity 100ms; - box-shadow: 0 .25rem 1rem #00000090; } .dropdownchoice { - border-radius: 0 !important; + z-index: 200; + border-radius: var(--border-radius) !important; margin: 0; text-align: center; justify-content: center; - background: var(--bg-color2) !important; - backdrop-filter: none !important; + background: var(--bg-dropdown-color) !important; width: initial; + box-shadow: 0 0 1.5rem #00000090; } .dropdownchoice:hover { - background: var(--bg-hover-color2) !important; + background: var(--bg-dropdown-hover-color) !important; } .dropdownlist :first-child { @@ -409,7 +405,7 @@ main { } .customnumberinput { - height: 2.5rem; + height: 2.2rem; } .customnumberinput button { @@ -477,7 +473,7 @@ main { .userlist > li > div { flex-grow: 1; text-align: center; - padding: .8rem 1.1rem; + padding: .7rem 1.1rem; } .loginform { @@ -505,7 +501,7 @@ main { .drinks-list > li > .button { width: 100%; justify-content: space-between; - padding: .8rem 1.1rem; + padding: .7rem 1.1rem; } /* Statistics */ @@ -525,6 +521,18 @@ main { width: 16rem; } +/* Blur */ + +@supports (backdrop-filter: blur()) { + :root { + --bg-dropdown-color: var(--bg-color); + --bg-dropdown-hover-color: var(--bg-hover-color); + } + .dropdownchoice { + backdrop-filter: blur(32px); + } +} + /* Responsive */ @media only screen and (max-width: 1200px) { diff --git a/app/static/css/simple-keyboard.css b/static/css/simple-keyboard.css similarity index 100% rename from app/static/css/simple-keyboard.css rename to static/css/simple-keyboard.css diff --git a/app/static/css/simple-keyboard_dark.css b/static/css/simple-keyboard_dark.css similarity index 96% rename from app/static/css/simple-keyboard_dark.css rename to static/css/simple-keyboard_dark.css index e380b77..ffee807 100644 --- a/app/static/css/simple-keyboard_dark.css +++ b/static/css/simple-keyboard_dark.css @@ -6,6 +6,7 @@ max-width: 100%; background: transparent; font-family: "Inter"; + font-size: 16px; } .simple-keyboard.darkTheme .hg-button { height: 50px; diff --git a/app/static/favicon.ico b/static/favicon.ico similarity index 100% rename from app/static/favicon.ico rename to static/favicon.ico diff --git a/app/static/favicon.png b/static/favicon.png similarity index 100% rename from app/static/favicon.png rename to static/favicon.png diff --git a/app/static/fonts/Inter-Bold.ttf b/static/fonts/Inter-Bold.ttf similarity index 100% rename from app/static/fonts/Inter-Bold.ttf rename to static/fonts/Inter-Bold.ttf diff --git a/app/static/fonts/Inter-Regular.ttf b/static/fonts/Inter-Regular.ttf similarity index 100% rename from app/static/fonts/Inter-Regular.ttf rename to static/fonts/Inter-Regular.ttf diff --git a/app/static/js/autoreload.js b/static/js/autoreload.js similarity index 100% rename from app/static/js/autoreload.js rename to static/js/autoreload.js diff --git a/app/static/js/custom_form.js b/static/js/custom_form.js similarity index 100% rename from app/static/js/custom_form.js rename to static/js/custom_form.js diff --git a/app/static/js/custom_number_input.js b/static/js/custom_number_input.js similarity index 100% rename from app/static/js/custom_number_input.js rename to static/js/custom_number_input.js diff --git a/app/static/js/logged_out.js b/static/js/logged_out.js similarity index 100% rename from app/static/js/logged_out.js rename to static/js/logged_out.js diff --git a/app/static/js/login.js b/static/js/login.js similarity index 100% rename from app/static/js/login.js rename to static/js/login.js diff --git a/app/static/js/main.js b/static/js/main.js similarity index 100% rename from app/static/js/main.js rename to static/js/main.js diff --git a/app/static/js/order.js b/static/js/order.js similarity index 100% rename from app/static/js/order.js rename to static/js/order.js diff --git a/app/static/js/simple-keyboard.js b/static/js/simple-keyboard.js similarity index 100% rename from app/static/js/simple-keyboard.js rename to static/js/simple-keyboard.js diff --git a/app/static/js/simple-keyboard_configure.js b/static/js/simple-keyboard_configure.js similarity index 100% rename from app/static/js/simple-keyboard_configure.js rename to static/js/simple-keyboard_configure.js diff --git a/app/static/material-icons/arrow-drop-down.svg b/static/material-icons/arrow-drop-down.svg similarity index 100% rename from app/static/material-icons/arrow-drop-down.svg rename to static/material-icons/arrow-drop-down.svg diff --git a/app/static/material-icons/menu.svg b/static/material-icons/menu.svg similarity index 100% rename from app/static/material-icons/menu.svg rename to static/material-icons/menu.svg