diff --git a/dashboard/settings.py b/dashboard/settings.py index 0a997f1..0ba0ff0 100644 --- a/dashboard/settings.py +++ b/dashboard/settings.py @@ -41,8 +41,7 @@ INSTALLED_APPS = [ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", - "oauth", - "oauth.integrations", + "accounts", ] MIDDLEWARE = [ @@ -122,6 +121,10 @@ USE_TZ = True STATIC_URL = "static/" +STATICFILES_DIRS = [ + BASE_DIR / "static", +] + # Default primary key field type # https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field @@ -130,4 +133,7 @@ DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" ### Dashbaord specific configuration options -RESTRICT_NEW_INTEGRATION_INSTALLATION = True +HOSTEA = { + "RESTRICT_NEW_INTEGRATION_INSTALLATION": True, + "INSTANCE_MAINTAINER_CONTACT": "contact@hostea.example.org", +} diff --git a/static/css/main.css b/static/css/main.css new file mode 100644 index 0000000..123d4c4 --- /dev/null +++ b/static/css/main.css @@ -0,0 +1,446 @@ +* { + margin: 0; + padding: 0; +} + +html { + /* + font-family: Georgia, "Times New Roman", Times, serif; + */ + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + color: #333; +} + +p, +h1, +h2, +h3, +h4, +h5, +h6 { + color: #333; +} + +/* +h1 { + font-size: 2rem; +} + +h2 { + font-size: 1.5rem; +} + +*/ +body { + width: 100%; + min-height: 100vh; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +a:hover { + color: rgb(0, 86, 179); + text-decoration: underline; +} + +a { + text-decoration: none; +} + +a, +a:visited { + color: rgb(0, 86, 179); +} + +main { + flex: 4; + width: 100%; + margin: auto; + + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-evenly; +} + +header { + z-index: 5; + position: sticky; + top: 0; + background-color: #fff; +} + +/* nav starts */ + +.nav__container { + display: flex; + flex-direction: row; + + box-sizing: border-box; + width: 100%; + padding-top: 5px; + border-bottom: 1px solid rgb(211, 211, 211); +} + +.nav__home-btn { + font-weight: bold; + margin: auto; + margin-left: -10px; +} + +.nav__hamburger-menu { + display: none; +} + +.nav__spacer { + flex: 3; + margin: auto; +} + +.nav__logo-container { + display: inline-flex; + text-decoration: none; +} + +.nav__logo-container:hover { + color: rgb(0, 86, 179); + text-decoration: underline; +} + +.nav__toggle { + display: none; +} + +.nav__logo { + display: inline-flex; + margin: auto; + padding: 5px; + width: 40px; +} + +.nav__link-group { + list-style: none; + display: flex; + flex-direction: row; + align-items: center; + align-self: center; + margin: auto; + text-align: center; +} + +.nav__link-container { + display: flex; + padding: 10px; + height: 100%; + margin: auto; +} + +.nav__link { + text-decoration: none; + color: black !important; + font-weight: 600; + font-size: 14px; +} + +.nav__link:hover { + color: rgb(0, 86, 179); + text-decoration: underline; +} + +/* nav ends */ + +.auth__main { + flex-direction: row; +} + +.main { + min-height: 80vh; + align-items: center; + display: flex; + flex-direction: column; + justify-content: center; + flex: 2; + align-items: center; +} + +.welcome { + max-width: 800px; +} + +.index-banner__features-list { + margin: 20px; +} + +.index-banner__features { + margin: 10px 0; +} + +.login { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; +} + +.form { + display: flex; + flex-direction: column; + width: 80%; + margin: auto; + padding: 0 10px; +} + +.form__label { + margin: 5px 0; +} + +.form__input { + display: block; + width: 100%; + margin: 10px 0; + padding: 5px 0; + height: 25px; +} + +.form__submit { + width: 100%; + display: block; + margin: 10px 0; + color: #fff; + border: none; + font-weight: 400; + padding: 15px; + cursor: pointer; + background-color: rgb(0, 128, 0); +} + +.form__submit:hover { + background-color: #329932; +} + +footer { + display: block; + font-size: 0.7rem; + margin-bottom: 5px; +} + +.footer__container { + width: 90%; + justify-content: space-between; + margin: auto; + display: flex; + flex-direction: row; +} + +.footer__column { + list-style: none; + display: flex; + margin: auto 50px; +} + +.footer__link-container { + margin: 5px; +} +.license__conatiner { + display: flex; +} + +.footer__link { + text-decoration: none; + padding: 0 10px; +} + +.footer__column-divider, +.footer__column-divider--mobile-visible { + font-weight: 500; + opacity: 0.7; + margin: 0 5px; +} + +.footer__icon { + margin: auto 5px; + height: 20px; +} + +.error_container { + text-align: center; + color: #c00; + width: 100%; + margin: 10px 0; +} + +.gist__new { + width: 80%; +} + +.gist__file-content { + display: block; + width: 100%; + margin: 10px 0; + padding: 5px 0; + height: 320px; +} + +.gist__button-group { + display: flex; + width: 100%; + align-items: center; + justify-content: space-between; +} + +.gist__button-container { + flex: 1; + max-width: 200px; +} + +.form__submit--secondary { + width: 100%; + display: block; + margin: 10px 0; + border: none; + padding: 5px 0; + cursor: pointer; + background-color: #e9e9ed; +} + +.auth__demo-user__banner { + margin: auto; + margin-top: 5px; + font-size: 0.8rem; + text-align: center; +} + +.auth__demo-user__cred { + font-family: monospace, monospace; +} + +.gist__container { + display: flex; + width: 100%; + flex-direction: column; + height: auto; +} + +pre { + font-size: 13px; + font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace; + box-sizing: border-box; +} + +.line { + display: block; + padding: 0px; + cursor: pointer; +} + +.line-number { + color: #24292f; + margin: 0; + margin-right: 20px; + min-width: 35px; + padding: 0; + width: 1%; + padding-right: 10px; + padding-left: 10px; + display: inline-block; + text-align: right; +} + +details, +summary { + display: "inline"; + margin: 0; + padding: 0; +} + +summary::marker { + content: ""; + margin: 0; + padding: 0 5px; +} + +.line-link { + display: block; +} + +pre { + box-sizing: border-box; +} + +/* footer starts */ + +footer { + display: block; + color: #333; + font-size: 0.7rem; + padding: 0; + margin: 0; +} + +.footer__container { + width: 100%; + padding: 0; + justify-content: space-between; + margin: auto; + display: flex; + flex-direction: row; + overflow: hidden; +} + +.footer__column--center { + list-style: none; + display: flex; + margin: auto 50px; + align-items: center; + flex: 2.5; + + margin: auto; + flex-direction: column; + align-items: center; + flex: 2; +} + +.footer__column:last-child { + justify-content: flex-end; +} + +.footer__column:last-child > a { + margin: 10px; +} + +.footer__link-container { + margin: 5px; +} + +.footer__link { + text-decoration: none; +} + +.license__link { + display: inline; +} + +.license__link:hover { + color: rgb(0, 86, 179); + text-decoration: underline; +} + +.footer__column-divider, +.footer__column-divider--mobile-visible, +.footer__column-divider--mobile-only { + font-weight: 500; + opacity: 0.7; + margin: auto; +} + +.footer__column-divider--mobile-only { + display: none; +} + +.footer__icon { + margin: auto 5px; + height: 20px; +} + +/* footer ends */ diff --git a/static/img/android-icon-144x144.png b/static/img/android-icon-144x144.png new file mode 100644 index 0000000..5e6c541 Binary files /dev/null and b/static/img/android-icon-144x144.png differ diff --git a/static/img/android-icon-192x192.png b/static/img/android-icon-192x192.png new file mode 100644 index 0000000..c189bed Binary files /dev/null and b/static/img/android-icon-192x192.png differ diff --git a/static/img/android-icon-36x36.png b/static/img/android-icon-36x36.png new file mode 100644 index 0000000..a3aee54 Binary files /dev/null and b/static/img/android-icon-36x36.png differ diff --git a/static/img/android-icon-48x48.png b/static/img/android-icon-48x48.png new file mode 100644 index 0000000..f33e014 Binary files /dev/null and b/static/img/android-icon-48x48.png differ diff --git a/static/img/android-icon-72x72.png b/static/img/android-icon-72x72.png new file mode 100644 index 0000000..5269833 Binary files /dev/null and b/static/img/android-icon-72x72.png differ diff --git a/static/img/android-icon-96x96.png b/static/img/android-icon-96x96.png new file mode 100644 index 0000000..1e715bf Binary files /dev/null and b/static/img/android-icon-96x96.png differ diff --git a/static/img/apple-icon-114x114.png b/static/img/apple-icon-114x114.png new file mode 100644 index 0000000..37b04e2 Binary files /dev/null and b/static/img/apple-icon-114x114.png differ diff --git a/static/img/apple-icon-120x120.png b/static/img/apple-icon-120x120.png new file mode 100644 index 0000000..772a640 Binary files /dev/null and b/static/img/apple-icon-120x120.png differ diff --git a/static/img/apple-icon-144x144.png b/static/img/apple-icon-144x144.png new file mode 100644 index 0000000..5e6c541 Binary files /dev/null and b/static/img/apple-icon-144x144.png differ diff --git a/static/img/apple-icon-152x152.png b/static/img/apple-icon-152x152.png new file mode 100644 index 0000000..9849237 Binary files /dev/null and b/static/img/apple-icon-152x152.png differ diff --git a/static/img/apple-icon-180x180.png b/static/img/apple-icon-180x180.png new file mode 100644 index 0000000..48e34d7 Binary files /dev/null and b/static/img/apple-icon-180x180.png differ diff --git a/static/img/apple-icon-57x57.png b/static/img/apple-icon-57x57.png new file mode 100644 index 0000000..c8fb43b Binary files /dev/null and b/static/img/apple-icon-57x57.png differ diff --git a/static/img/apple-icon-60x60.png b/static/img/apple-icon-60x60.png new file mode 100644 index 0000000..c8e965e Binary files /dev/null and b/static/img/apple-icon-60x60.png differ diff --git a/static/img/apple-icon-72x72.png b/static/img/apple-icon-72x72.png new file mode 100644 index 0000000..5269833 Binary files /dev/null and b/static/img/apple-icon-72x72.png differ diff --git a/static/img/apple-icon-76x76.png b/static/img/apple-icon-76x76.png new file mode 100644 index 0000000..8aaa1b7 Binary files /dev/null and b/static/img/apple-icon-76x76.png differ diff --git a/static/img/apple-icon-precomposed.png b/static/img/apple-icon-precomposed.png new file mode 100644 index 0000000..7d884ca Binary files /dev/null and b/static/img/apple-icon-precomposed.png differ diff --git a/static/img/apple-icon.png b/static/img/apple-icon.png new file mode 100644 index 0000000..7d884ca Binary files /dev/null and b/static/img/apple-icon.png differ diff --git a/static/img/browserconfig.xml b/static/img/browserconfig.xml new file mode 100644 index 0000000..c554148 --- /dev/null +++ b/static/img/browserconfig.xml @@ -0,0 +1,2 @@ + +#ffffff \ No newline at end of file diff --git a/static/img/favicon-16x16.png b/static/img/favicon-16x16.png new file mode 100644 index 0000000..fd0ee94 Binary files /dev/null and b/static/img/favicon-16x16.png differ diff --git a/static/img/favicon-32x32.png b/static/img/favicon-32x32.png new file mode 100644 index 0000000..2a6e691 Binary files /dev/null and b/static/img/favicon-32x32.png differ diff --git a/static/img/favicon-96x96.png b/static/img/favicon-96x96.png new file mode 100644 index 0000000..4e2f908 Binary files /dev/null and b/static/img/favicon-96x96.png differ diff --git a/static/img/favicon.ico b/static/img/favicon.ico new file mode 100644 index 0000000..fd6a6b1 Binary files /dev/null and b/static/img/favicon.ico differ diff --git a/static/img/manifest.json b/static/img/manifest.json new file mode 100644 index 0000000..013d4a6 --- /dev/null +++ b/static/img/manifest.json @@ -0,0 +1,41 @@ +{ + "name": "App", + "icons": [ + { + "src": "\/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} \ No newline at end of file diff --git a/static/img/ms-icon-144x144.png b/static/img/ms-icon-144x144.png new file mode 100644 index 0000000..3a6af1b Binary files /dev/null and b/static/img/ms-icon-144x144.png differ diff --git a/static/img/ms-icon-150x150.png b/static/img/ms-icon-150x150.png new file mode 100644 index 0000000..7f615bd Binary files /dev/null and b/static/img/ms-icon-150x150.png differ diff --git a/static/img/ms-icon-310x310.png b/static/img/ms-icon-310x310.png new file mode 100644 index 0000000..70b683c Binary files /dev/null and b/static/img/ms-icon-310x310.png differ diff --git a/static/img/ms-icon-70x70.png b/static/img/ms-icon-70x70.png new file mode 100644 index 0000000..0054467 Binary files /dev/null and b/static/img/ms-icon-70x70.png differ diff --git a/static/img/tmp-logo.png b/static/img/tmp-logo.png new file mode 100644 index 0000000..def7771 Binary files /dev/null and b/static/img/tmp-logo.png differ