summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmain.py47
-rw-r--r--static/index.html40
-rw-r--r--static/style.css111
3 files changed, 198 insertions, 0 deletions
diff --git a/main.py b/main.py
new file mode 100755
index 0000000..1459cf5
--- /dev/null
+++ b/main.py
@@ -0,0 +1,47 @@
+
+
+"""
+ web-template - A Template Project for dynamic Web Applications.
+
+ Copyright (C) 2020 xengineering
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+"""
+
+
+from waitress import serve
+from flask import Flask, render_template, current_app
+
+
+app = Flask(__name__)
+
+
+@app.route('/')
+def index():
+ return current_app.send_static_file('index.html')
+
+
+@app.route('/style.css')
+def style():
+ return current_app.send_static_file('style.css')
+
+
+@app.route('/favicon.ico')
+def favicon():
+ return current_app.send_static_file('favicon.ico')
+
+
+if __name__ == '__main__':
+ serve(app, listen='*:8080') # production server
+ #app.run() # test server
diff --git a/static/index.html b/static/index.html
new file mode 100644
index 0000000..90e5f1f
--- /dev/null
+++ b/static/index.html
@@ -0,0 +1,40 @@
+<!--
+ web-template - A Template Project for dynamic Web Applications.
+
+ Copyright (C) 2020 xengineering
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+-->
+<html>
+ <head>
+ <title>Web Template</title>
+ <meta charset="utf-8"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link rel="stylesheet" href="style.css" type="text/css">
+ </head>
+ <body>
+ <div class="menu">
+ <a href="http://localhost:8080/">HOME</a>
+ <a href="https://xengineering.eu">xengineering</a>
+ </div>
+ <div class="content-frame">
+ <div class="content">
+ <header><h1>Web Template</h1></header>
+ <p>
+ Lorem ipsum.
+ </p>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/static/style.css b/static/style.css
new file mode 100644
index 0000000..fd92176
--- /dev/null
+++ b/static/style.css
@@ -0,0 +1,111 @@
+
+
+/*
+ web-template - A Template Project for dynamic Web Applications.
+
+ Copyright (C) 2020 xengineering
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+
+/*
+ General Stuff
+*/
+
+* {
+ box-sizing: border-box; /* Include padding and border in the element's total width and height */
+}
+
+body {
+ margin: 0; /* avoid ugly white margin */
+ font-family: Arial, Helvetica, sans-serif; /* select a nice font */
+}
+
+.menu {
+ background-color: black;
+}
+
+.content {
+ background-color: white;
+}
+
+.menu a {
+ color: lightgray;
+ text-decoration: none; /* disable ugly underlined links */
+}
+
+/* How should the link behave if the mouse is over this item? */
+.menu a:hover {
+ background-color: lightgray;
+ color: black;
+}
+
+
+
+/*
+ Default Geometry / Geometry for Phones ('Mobile First Development')
+*/
+
+.content {
+ padding-left: 20px;
+ padding-right: 20px;
+ text-align: justify;
+}
+
+.menu a {
+ display: block;
+ padding: 16px;
+ text-align: center;
+}
+
+
+
+/*
+ Geometry for Tablets
+*/
+
+@media only screen and (min-width: 600px) {
+ /* empty --> same rules as for phones */
+}
+
+
+
+/*
+ Geometry for Desktops
+*/
+
+@media only screen and (min-width: 768px) {
+
+ .menu {
+ height: 100%;
+ width: 200px;
+ position: fixed; /* position fixed in top left corner (with offset) */
+ top: 0px; /* disable the offset from top left corner */
+ }
+
+ .menu a {
+ text-align: left;
+ }
+
+ .content {
+ margin-left: 200px; /* transparent margin on the left for .menu */
+ }
+
+ .content *{ /* everything inside the content container */
+ max-width: 960px; /* maximum width on desktops should be 960 px */
+ margin-left: auto; /* center it with margin */
+ margin-right: auto; /* center it with margin */
+ }
+}