Browse Source

Initial commit

mistress
Daniel Muckerman 4 years ago
commit
ed88296cc2
6 changed files with 247 additions and 0 deletions
  1. +19
    -0
      .gitignore
  2. +31
    -0
      app.py
  3. +3
    -0
      requirements.txt
  4. +131
    -0
      static/style.css
  5. +9
    -0
      templates/card.j2
  6. +54
    -0
      templates/index.j2

+ 19
- 0
.gitignore View File

@ -0,0 +1,19 @@
### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
dashboard-env/
.envrc
.DS_Store
.vscode/

+ 31
- 0
app.py View File

@ -0,0 +1,31 @@
from flask import Flask, g, request, session, redirect, url_for, render_template
from flask_bootstrap import Bootstrap
import os
app = Flask(__name__)
Bootstrap(app)
app.secret_key = 'asdf'
app.debug = True
@app.route('/')
def index():
search = {'active': True, 'search_url': 'https://searx.info/?q='}
account_url = 'https://account.technicalincompetence.club'
apps = [
{'name': 'Gitea', 'description': 'It\'s git', 'link': 'https://git.tia.moe'},
{'name': 'Gitea', 'description': 'It\'s git', 'link': 'https://git.tia.moe'},
{'name': 'Gitea', 'description': 'It\'s git', 'link': 'https://git.tia.moe'},
{'name': 'Gitea', 'description': 'It\'s git', 'link': 'https://git.tia.moe'},
{'name': 'Gitea', 'description': 'It\'s git', 'link': 'https://git.tia.moe'},
{'name': 'Gitea', 'description': 'It\'s git', 'link': 'https://git.tia.moe'},
{'name': 'Gitea', 'description': 'It\'s git', 'link': 'https://git.tia.moe'},
{'name': 'Gitea', 'description': 'It\'s git', 'link': 'https://git.tia.moe'},
{'name': 'Gitea', 'description': 'It\'s git', 'link': 'https://git.tia.moe'},
]
return render_template('index.j2', apps = apps, search = search, account_url = account_url)
if __name__ == '__main__':
app.run()

+ 3
- 0
requirements.txt View File

@ -0,0 +1,3 @@
Flask==1.1.2
Flask-Bootstrap4==4.0.2
PyYAML==5.3.1

+ 131
- 0
static/style.css View File

@ -0,0 +1,131 @@
@media (max-width: 991.98px) {
#userNameRow,
#firstNameRow {
margin-bottom: 20px;
}
#passwordButton {
margin-bottom: 50px;
}
}
.card-hover {
background-color: #f8f9fa!important;
}
@media (prefers-color-scheme: dark) {
body {
background-color: #111 !important;
color: #eee;
}
.jumbotron {
background-color: #333 !important;
}
.modal-content {
background-color: #111 !important;
color: #eee;
}
.modal-header {
border-bottom: 1px solid #555 !important;
}
.modal-header .close {
color: #eee !important;
text-shadow: 0 1px 0 #555 !important;
}
.modal-footer {
border-top: 1px solid #555 !important;
}
.bg-light {
background-color: #333 !important;
}
.bg-white {
background-color: #000 !important;
}
.bg-black {
background-color: #eee !important;
}
.form-control {
display: block;
width: 100%;
height: calc(1.5em + 0.75rem + 2px);
padding: 0.375rem 0.75rem;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #dee2e6;
background-color: #000;
background-clip: padding-box;
border: 1px solid #6c757d;
border-radius: 0.25rem;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.card {
background-color: #000;
border: 1px solid #6c757d;
}
.card-hover {
background-color: #343a40!important;
color: white !important;
}
@media (prefers-reduced-motion: reduce) {
.form-control {
transition: none;
}
}
.form-control::-ms-expand {
background-color: transparent;
border: 0;
}
.form-control:-moz-focusring {
color: transparent;
text-shadow: 0 0 0 #dee2e6;
}
.form-control:focus {
color: #dee2e6;
background-color: #191d21;
border-color: #b3d7ff;
outline: 0;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.form-control::-webkit-input-placeholder {
color: #6c757d;
opacity: 1;
}
.form-control::-moz-placeholder {
color: #6c757d;
opacity: 1;
}
.form-control::-ms-input-placeholder {
color: #6c757d;
opacity: 1;
}
.form-control::placeholder {
color: #6c757d;
opacity: 1;
}
.form-control:disabled,
.form-control[readonly] {
background-color: #343a40;
opacity: 1;
}
}

+ 9
- 0
templates/card.j2 View File

@ -0,0 +1,9 @@
<div class="col-xs-12 col-sm-6 col-md-4 mb-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">{{ app['name'] }}</h5>
<p class="card-text">{{ app['description'] }}</p>
<a href="#" class="btn btn-primary">{{ app['link'] }}</a>
</div>
</div>
</div>

+ 54
- 0
templates/index.j2 View File

@ -0,0 +1,54 @@
{% extends "bootstrap/base.html" %}
{% block title %}Technical Incompetence - Home{% endblock %}
{% block styles %}
{{super()}}
<link rel="stylesheet" href="{{url_for('.static', filename='style.css')}}">
{% endblock %}
{% block navbar %}
<nav class="navbar navbar-expand-lg sticky-top navbar-dark bg-dark">
<div class="navbar-brand">Technical Incompetence</div>
<form class="form-inline ml-auto">
{% if account_url is defined and account_url != '' %}
<a class="btn btn-primary" href="{{ account_url }}" role="button">My Account</a>
{% endif %}
</form>
</nav>
{% endblock %}
{% block content %}
<div class="container" style="margin-top: 15px">
{% if search['active'] == True %}
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
<input type="text" class="form-control" id="search-box" placeholder="Search">
</div>
<br><br>
{% endif %}
<div class="row">
{% for app in apps %}
{% include "card.j2" %}
{% endfor %}
</div>
</div>
{% endblock %}
{% block scripts %}
{{ super () }}
<script>
$("#search-box").keyup(function(event) {
if (event.keyCode === 13) {
window.location = '{{ search['search_url'] }}' + $('#search-box').val();
}
});
$( ".card" ).hover(
function() {
$(this).addClass('shadow-lg').css('cursor', 'pointer');
$(this).addClass('card-hover');
}, function() {
$(this).removeClass('shadow-lg');
$(this).removeClass('card-hover');
});
</script>
{% endblock %}

Loading…
Cancel
Save