Merge pull request #9 from senju1337/feat/basic-site

basic flask setup
This commit is contained in:
Christoph J. Scherr 2025-02-24 21:03:01 +01:00 committed by GitHub
commit 25227c8767
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 375 additions and 3 deletions

2
run.sh Executable file
View file

@ -0,0 +1,2 @@
#!/bin/bash
flask --app senju/main run --debug

View file

@ -1,5 +1,11 @@
from __future__ import annotations from flask import Flask, render_template
app = Flask(__name__)
def main(): @app.route("/")
print("hello world") def index():
context = {
"number": 1337
}
return render_template("index.jinja", context=context, title="Senju")

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="512"
height="360"
viewBox="0 0 512 360"
version="1.1"
id="svg1"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
sodipodi:docname="senju-nobg.svg"
inkscape:export-filename="senju.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="false"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
showgrid="true"
showborder="true"
labelstyle="default"
inkscape:clip-to-page="true"
inkscape:zoom="1.1048543"
inkscape:cx="235.32514"
inkscape:cy="257.95255"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer2">
<inkscape:grid
id="grid3"
units="px"
originx="0"
originy="0"
spacingx="1"
spacingy="1"
empcolor="#0099e5"
empopacity="0.30196078"
color="#0099e5"
opacity="0.14901961"
empspacing="5"
enabled="true"
visible="true" />
</sodipodi:namedview>
<defs
id="defs1">
<rect
x="94.130058"
y="65.166962"
width="226.27417"
height="71.50264"
id="rect3" />
<rect
x="175.36"
y="155.52"
width="126.72"
height="119.68"
id="rect1" />
<rect
x="175.36"
y="155.52"
width="126.72"
height="119.68"
id="rect4" />
</defs>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
sodipodi:insensitive="true"
style="display:none">
<rect
style="fill:#000000;fill-opacity:1;stroke-width:1.52484"
id="rect2"
width="512"
height="512"
x="0"
y="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Ebene 2">
<text
xml:space="preserve"
id="text1"
style="font-weight:bold;font-size:53.3333px;font-family:'FiraCode Nerd Font Mono';-inkscape-font-specification:'FiraCode Nerd Font Mono, Bold';text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1);display:inline;fill:#ff00ad;fill-opacity:1"
transform="matrix(4.5228708,0,0,3.7572476,-778.34743,-466.73906)"><tspan
x="175.35938"
y="202.86062"
id="tspan2">選集</tspan></text>
<text
xml:space="preserve"
id="text3"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.9159px;font-family:'FiraCode Nerd Font Mono';-inkscape-font-specification:'FiraCode Nerd Font Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4);display:inline;fill:#00fcff;fill-opacity:1"
transform="matrix(4.0317942,0,0,4.8366581,-589.41513,-713.39958)"><tspan
x="175.35938"
y="167.87192"
id="tspan3">せんじゅう</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
senju/static/img/senju.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

110
senju/static/img/senju.svg Normal file
View file

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="512"
height="360"
viewBox="0 0 512 360"
version="1.1"
id="svg1"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
sodipodi:docname="senju.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="false"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
showgrid="true"
showborder="true"
labelstyle="default"
inkscape:clip-to-page="true"
inkscape:zoom="1.1048543"
inkscape:cx="235.32514"
inkscape:cy="257.95255"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer2">
<inkscape:grid
id="grid3"
units="px"
originx="0"
originy="0"
spacingx="1"
spacingy="1"
empcolor="#0099e5"
empopacity="0.30196078"
color="#0099e5"
opacity="0.14901961"
empspacing="5"
enabled="true"
visible="true" />
</sodipodi:namedview>
<defs
id="defs1">
<rect
x="94.130058"
y="65.166962"
width="226.27417"
height="71.50264"
id="rect3" />
<rect
x="175.36"
y="155.52"
width="126.72"
height="119.68"
id="rect1" />
<rect
x="175.36"
y="155.52"
width="126.72"
height="119.68"
id="rect4" />
</defs>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
sodipodi:insensitive="true"
style="display:inline">
<rect
style="fill:#000000;fill-opacity:1;stroke-width:1.52484"
id="rect2"
width="512"
height="512"
x="0"
y="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Ebene 2">
<text
xml:space="preserve"
id="text1"
style="font-weight:bold;font-size:53.3333px;font-family:'FiraCode Nerd Font Mono';-inkscape-font-specification:'FiraCode Nerd Font Mono, Bold';text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1);display:inline;fill:#ff00ad;fill-opacity:1"
transform="matrix(4.5228708,0,0,3.7572476,-778.34743,-466.73906)"><tspan
x="175.35938"
y="202.86062"
id="tspan2">選集</tspan></text>
<text
xml:space="preserve"
id="text3"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.9159px;font-family:'FiraCode Nerd Font Mono';-inkscape-font-specification:'FiraCode Nerd Font Mono, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4);display:inline;fill:#00fcff;fill-opacity:1"
transform="matrix(4.0317942,0,0,4.8366581,-589.41513,-713.39958)"><tspan
x="175.35938"
y="167.87192"
id="tspan3">せんじゅう</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

137
senju/templates/base.jinja Normal file
View file

@ -0,0 +1,137 @@
<!DOCTYPE html>
<html class="h-full bg-gray-100">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{{ title }}</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="https://unpkg.com/@tailwindcss/browser@4"></script>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
{% block head %}
{% endblock %}
</head>
<body class="h-full">
<div class="min-h-full bg-violet-950">
<nav class="bg-violet-600">
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<div class="flex h-16 items-center justify-between">
<div class="flex items-center">
<div class="shrink-0">
<img class="size-8" src="{{ url_for('static', filename='img/senju-nobg.svg') }}" alt="選集">
</div>
<div class="hidden md:block">
<div class="ml-10 flex items-baseline space-x-4">
<!-- Current: "bg-gray-900 text-white", Default: "text-gray-300 hover:bg-gray-700 hover:text-white" -->
<a href="#" class="rounded-md bg-gray-900 px-3 py-2 text-sm font-medium text-white"
aria-current="page">Start</a>
<a href="#"
class="rounded-md px-3 py-2 text-sm font-medium text-gray-300 hover:bg-gray-700 hover:text-white">Haiku</a>
<a href="#"
class="rounded-md px-3 py-2 text-sm font-medium text-gray-300 hover:bg-gray-700 hover:text-white">Information</a>
</div>
</div>
</div>
<div class="hidden md:block">
<div class="ml-4 flex items-center md:ml-6">
{% block navside %}
{% endblock %}
</div>
</div>
<div class="-mr-2 flex md:hidden">
<!-- Mobile menu button -->
<button type="button"
class="relative inline-flex items-center justify-center rounded-md bg-gray-800 p-2 text-gray-400 hover:bg-gray-700 hover:text-white focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-gray-800 focus:outline-hidden"
aria-controls="mobile-menu" aria-expanded="false">
<span class="absolute -inset-0.5"></span>
<span class="sr-only">Open main menu</span>
<!-- Menu open: "hidden", Menu closed: "block" -->
<svg class="block size-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor" aria-hidden="true" data-slot="icon">
<path stroke-linecap="round" stroke-linejoin="round"
d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" />
</svg>
<!-- Menu open: "block", Menu closed: "hidden" -->
<svg class="hidden size-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor" aria-hidden="true" data-slot="icon">
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" />
</svg>
</button>
</div>
</div>
</div>
<!-- Mobile menu, show/hide based on menu state. -->
<div class="md:hidden" id="mobile-menu">
<div class="space-y-1 px-2 pt-2 pb-3 sm:px-3">
<!-- Current: "bg-gray-900 text-white", Default: "text-gray-300 hover:bg-gray-700 hover:text-white" -->
<a href="#" class="block rounded-md bg-gray-900 px-3 py-2 text-base font-medium text-white"
aria-current="page">Dashboard</a>
<a href="#"
class="block rounded-md px-3 py-2 text-base font-medium text-gray-300 hover:bg-gray-700 hover:text-white">Team</a>
<a href="#"
class="block rounded-md px-3 py-2 text-base font-medium text-gray-300 hover:bg-gray-700 hover:text-white">Projects</a>
<a href="#"
class="block rounded-md px-3 py-2 text-base font-medium text-gray-300 hover:bg-gray-700 hover:text-white">Calendar</a>
<a href="#"
class="block rounded-md px-3 py-2 text-base font-medium text-gray-300 hover:bg-gray-700 hover:text-white">Reports</a>
</div>
<div class="border-t border-gray-700 pt-4 pb-3">
<div class="flex items-center px-5">
<div class="shrink-0">
<img class="size-10 rounded-full"
src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
alt="">
</div>
<div class="ml-3">
<div class="text-base/5 font-medium text-white">Tom Cook</div>
<div class="text-sm font-medium text-gray-400">tom@example.com</div>
</div>
<button type="button"
class="relative ml-auto shrink-0 rounded-full bg-gray-800 p-1 text-gray-400 hover:text-white focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-gray-800 focus:outline-hidden">
<span class="absolute -inset-1.5"></span>
<span class="sr-only">View notifications</span>
<svg class="size-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
aria-hidden="true" data-slot="icon">
<path stroke-linecap="round" stroke-linejoin="round"
d="M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0" />
</svg>
</button>
</div>
<div class="mt-3 space-y-1 px-2">
<a href="#"
class="block rounded-md px-3 py-2 text-base font-medium text-gray-400 hover:bg-gray-700 hover:text-white">Your
Profile</a>
<a href="#"
class="block rounded-md px-3 py-2 text-base font-medium text-gray-400 hover:bg-gray-700 hover:text-white">Settings</a>
<a href="#"
class="block rounded-md px-3 py-2 text-base font-medium text-gray-400 hover:bg-gray-700 hover:text-white">Sign
out</a>
</div>
</div>
</div>
</nav>
<header class="bg-violet-500 shadow-sm flex flex-row items-stretch gap-6
px-6 py-3">
<div class="flex-1 place-self-center">
<h1 class="text-3xl font-bold tracking-tight text-gray-900">{{ title }}</h1>
</div>
<div class="flex-1 place-self-center grid place-items-end">
<div class="haiku text-left text-color-black">
紫の<br>
花が強くも<br>
生きている。<br>
</div>
</div>
</header>
<main class="bg-violet-900 min-h-170">
<div class="mx-auto max-w-7xl px-4 py-6 sm:px-6 lg:px-8">
{% block content %}
{% endblock %}
</div>
</main>
</div>
</body>

View file

@ -0,0 +1,4 @@
{% extends "base.jinja" %}
{% block content %}
<h1 class="text-center">yo mama</h1>
{% endblock %}