<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MariaDB on Phillip Kühne</title><link>https://phillipkuehne.de/en/tags/mariadb/</link><description>Recent content in MariaDB on Phillip Kühne</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 01 Oct 2019 00:00:00 +0000</lastBuildDate><atom:link href="https://phillipkuehne.de/en/tags/mariadb/index.xml" rel="self" type="application/rss+xml"/><item><title>KaraoQueue (2019)</title><link>https://phillipkuehne.de/en/projects/karaoqueue/</link><pubDate>Tue, 01 Oct 2019 00:00:00 +0000</pubDate><guid>https://phillipkuehne.de/en/projects/karaoqueue/</guid><description>&lt;style&gt;&#10; div.splitbox {width:100%; overflow:auto;}&#10;&#10; div.splitbox div.column-left {&#10; width:48%;&#10; float:left;}&#10; div.splitbox div.column-right {&#10; width:48%;&#10; float:right;}&#10;&#10; @media only screen and (max-width: 600px) {&#10; div.splitbox div.column-left {&#10; width:100%;&#10; float:left;}&#10; div.splitbox div.column-right {&#10; width:100%;&#10; float:left;}&#10; }&#10; &lt;/style&gt;&lt;div class="splitbox"&gt;&lt;div class="column-left"&gt;&#10;&lt;p&gt;Originally created shortly before the COVID-19 pandemic to simplify event&#10;hosting, and then adopted during it as part of measures to allow us to host&#10;karaoke evenings again while minimizing contact between people. The tool was used by the &lt;a href="https://stuk-leipzig.de/" class="external-link" target="_blank" rel="noopener"&gt;StuK Leipzig student club&lt;/a&gt; until 2025,&#10;for which I wrote it while being actively involved.&lt;/p&gt;&#10;&lt;p&gt;Guests can browse the song catalogue (with suggestions of the songs commonly&#10;sung during the previous events provided), view the metadata of the songs and&#10;queue in for their slot on the stage. The evening&amp;rsquo;s moderator can view the queue,&#10;and either accept or discard entries. If an entry is accepted, it is (anonymously)&#10;added to a playback list for the event, as well as to the statistics informing&#10;the suggestions.&lt;/p&gt;&#10;&lt;p&gt;It is written in Python, utilizing the Flask framework. As the oldest of my&#10;surviving projects, its architecture is very simple; for example, the frontend&#10;consists completely of handwritten Jinja templates, with everything (including&#10;handwritten JavaScript) contained inline. Bootstrap is used as the UI framework&#10;via static CSS/JS inclusion.&lt;/p&gt;&#10;&lt;p&gt;On the backend side, it utilizes a MariaDB for data storage, and can currently&#10;ingest Catalogue CSV files in the format provided by&#10;&lt;a href="https://www.karafun.de/karaoke-song-list.html" class="external-link" target="_blank" rel="noopener"&gt;Recisio&amp;rsquo;s KaraFun&lt;/a&gt;.&#10;Playback statistics can be exported and imported, but will only work with the&#10;appropriate catalogue.&lt;/p&gt;&#10;&#10;&#10;&lt;/div&gt;&lt;div class="column-right"&gt;&#10;&#10;&#10;&lt;div class="splitbox"&gt;&lt;div class="column-left"&gt;&#10;&lt;p&gt;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/karaoqueue/queue.png"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="KaraoQueue main page screenshot"&#10; data-title="KaraoQueue main page screenshot" title="KaraoQueue main page screenshot"&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/karaoqueue/queue.png"&#10; alt="KaraoQueue main page screenshot"&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;KaraoQueue main page screenshot&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&#10;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/karaoqueue/metadata.png"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="Metadata view for a song"&#10; data-title="Metadata view for a song" title="Metadata view for a song"&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/karaoqueue/metadata.png"&#10; alt="Metadata view for a song"&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;Metadata view for a song&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;/p&gt;&#10;&#10;&#10;&lt;/div&gt;&lt;div class="column-right"&gt;&#10;&lt;p&gt;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/karaoqueue/suggestions.png"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="KaraoQueue song search with suggestions"&#10; data-title="KaraoQueue song search with suggestions" title="KaraoQueue song search with suggestions"&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/karaoqueue/suggestions.png"&#10; alt="KaraoQueue song search with suggestions"&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;KaraoQueue song search with suggestions&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&#10;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/karaoqueue/protocol.png"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="The list of played songs generated for an event"&#10; data-title="The list of played songs generated for an event" title="The list of played songs generated for an event"&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/karaoqueue/protocol.png"&#10; alt="The list of played songs generated for an event"&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;The list of played songs generated for an event&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;/p&gt;&#10;&#10;&#10;&lt;/div&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&#10;&lt;/div&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;/div&gt;</description></item></channel></rss>