roundabout,
created on Monday, 29 April 2024, 12:18:12 (1714393092),
received on Wednesday, 10 July 2024, 16:59:59 (1720630799)
Author identity: vlad <vlad.muntoiu@gmail.com>
7b22bbc21303bb3b5566a18cb49cb59162691b3b
.idea/workspace.xml
@@ -4,19 +4,17 @@
<option name="autoReloadType" value="SELECTIVE" /> </component> <component name="ChangeListManager"> <list default="true" id="b2c629ea-d173-4caf-b306-cbeaee617270" name="Changes" comment="Build in another worktree"><change afterPath="$PROJECT_DIR$/projects/echo.md" afterDir="false" /><change afterPath="$PROJECT_DIR$/projects/waste.md" afterDir="false" /><change afterPath="$PROJECT_DIR$/projects/wordle.md" afterDir="false" /><change afterPath="$PROJECT_DIR$/static/photos/wordle-analyser.png" afterDir="false" /><change afterPath="$PROJECT_DIR$/static/photos/wordle.png" afterDir="false" /><list default="true" id="b2c629ea-d173-4caf-b306-cbeaee617270" name="Changes" comment="More"> <change afterPath="$PROJECT_DIR$/templates/index.html" afterDir="false" /><change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/articles/Markdown testing.md" beforeDir="false" /><change beforePath="$PROJECT_DIR$/articles/Moved to a roundabout.md" beforeDir="false" afterPath="$PROJECT_DIR$/articles/Moved to a roundabout.md" afterDir="false" /> <change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" /><change beforePath="$PROJECT_DIR$/projects/ampoule.md" beforeDir="false" afterPath="$PROJECT_DIR$/projects/ampoule.md" afterDir="false" /> <change beforePath="$PROJECT_DIR$/projects/echo.md" beforeDir="false" afterPath="$PROJECT_DIR$/projects/echo.md" afterDir="false" /><change beforePath="$PROJECT_DIR$/projects/roundabout.md" beforeDir="false" afterPath="$PROJECT_DIR$/projects/roundabout.md" afterDir="false" /> <change beforePath="$PROJECT_DIR$/projects/waste.md" beforeDir="false" afterPath="$PROJECT_DIR$/projects/waste.md" afterDir="false" /> <change beforePath="$PROJECT_DIR$/projects/wordle.md" beforeDir="false" afterPath="$PROJECT_DIR$/projects/wordle.md" afterDir="false" /><change beforePath="$PROJECT_DIR$/static/style.css" beforeDir="false" afterPath="$PROJECT_DIR$/static/style.css" afterDir="false" /> <change beforePath="$PROJECT_DIR$/templates/default.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/default.html" afterDir="false" /></list> <option name="SHOW_DIALOG" value="false" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -223,7 +221,15 @@
<option name="project" value="LOCAL" /> <updated>1714373192680</updated> </task> <option name="localTasksCounter" value="17" /><task id="LOCAL-00017" summary="More"> <option name="closed" value="true" /> <created>1714390356294</created> <option name="number" value="00017" /> <option name="presentableId" value="LOCAL-00017" /> <option name="project" value="LOCAL" /> <updated>1714390356294</updated> </task> <option name="localTasksCounter" value="18" /><servers /> </component> <component name="Vcs.Log.Tabs.Properties">
@@ -247,13 +253,13 @@
<MESSAGE value="Update article" /> <MESSAGE value="Add ampoule docs" /> <MESSAGE value="Update ampoule docs" /> <MESSAGE value="More" /><MESSAGE value="Roundabout article" /> <MESSAGE value="Add source link" /> <MESSAGE value="Article" /> <MESSAGE value="Add dates" /> <MESSAGE value="Reverse order of articles" /> <MESSAGE value="Build in another worktree" /> <option name="LAST_COMMIT_MESSAGE" value="Build in another worktree" /><MESSAGE value="More" /> <option name="LAST_COMMIT_MESSAGE" value="More" /></component> </project>
articles/Moved to a roundabout.md
main.py
@@ -1,3 +1,4 @@
import collectionsimport string from datetime import datetime import string
@@ -44,10 +45,20 @@ site.add_from_index(projects, "/projects", "project.html")
# Create the index pages main_page = ampoule.Page(site, "home.html", articles=articles) projects_page = ampoule.Page(site, "projects.html", projects=projects) topics = collections.defaultdict(list) for article in articles: for topic in article["topics"]: topics[topic].append(article) for project in projects: for topic in project["topics"]: topics[topic].append(project) topics = sorted(topics.items(), key=lambda x: x[0]) index_page = ampoule.Page(site, "index.html", all_posts=list(articles)+list(projects), topics=topics)# Add the pages to the site site.add_page("/", main_page) site.add_page("/projects/", projects_page) site.add_page("/index/", index_page)# Add static files site.add_from_index(
projects/ampoule.md
@@ -1,10 +1,11 @@
--- title: Ampoule source-url: https://roundabout-host.com/roundabout/ampoule topics: ["software", "web", "python", "ampoule", "jinja2", "docs", "gpl"]--- Ampoule is a lightweight, simple yet flexible, static site generator written in Python. It uses Jinja2 for templating.It uses Jinja2 for templating. This site was generated using Ampoule.Features --------
@@ -325,3 +326,17 @@ Delete an item from the document's front matter.
#### def `__contains__(self, item: str)` Check if an item is in the document's front matter. Licence ------- This program is free software: you can redistribute it and/or modify it under the terms of the GNU 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
projects/echo.md
@@ -1,6 +1,7 @@
--- title: Echo source-url: https://roundabout-host.com/roundabout/itec24-echo topics: ["web", "flask", "contest", "software", "python", "fair licence", "echo", "school project"]--- Echo is a very basic status tracker for web endpoints. I don't recommend you use it. It was
projects/roundabout.md
@@ -1,6 +1,7 @@
--- title: The roundabout source-url: https://roundabout-host.com/roundabout/roundabout topics: ["web", "flask", "git", "software", "python", "agpl", "roundabout", "roundabout-host"]--- The roundabout is a **git repository hosting** server software. It is designed to be a complete
projects/waste.md
@@ -1,6 +1,8 @@
--- title: Waste detection source-url: https://roundabout-host.com/roundabout/waste-detection topics: ["ai", "machine learning", "computer vision", "environment", "waste", "data", "yolo", "keras", "python", "agpl", "cc-by-sa", "cc-by-nc", "waste detection", "creative commons", "crowdsourcing"]--- An YOLO model specifically trained to detect waste in images. We collected a custom dataset of waste,
@@ -40,7 +42,7 @@ Licence
------- Unless otherwise stated, the software (source code) in this repository is licenced under the GNU Affero General Public License, with an additional permission in section 7.with an additional permission in section 7 - basically an LAGPL.A copy of the licence is located in the file `LICENCE-GNU-AGPL.md` in this directory. > This program is free software, you can redistribute it and/or modify
projects/wordle.md
@@ -1,6 +1,7 @@
--- title: Teletype Wordle source-url: https://roundabout-host.com/roundabout/tty-wordle topics: ["game", "python", "terminal", "apache", "fun", "teletype wordle"]--- Just like the original Wordle, you have to guess a 5-letter word in 6 tries and it tells you
static/style.css
@@ -330,3 +330,40 @@ img {
max-width: 100%; height: auto; } .topic-expander .topic-posts { display: flex; flex-direction: column; gap: 0.5rem; } .topic-expander > summary { display: flex; justify-content: space-between; align-items: center; cursor: pointer; text-transform: uppercase; user-select: none; align-items: center; } .topic-expander > summary > h2 { font-family: "Romanian League Gothic", sans-serif; font-size: 2.75rem; } .topic-expander > summary::after { content: "▶"; transition: transform 400ms; font-size: 1.5rem; } .topic-expander[open] > summary::after { transform: rotate(90deg); } #index-container { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
templates/index.html
@@ -0,0 +1,22 @@
{% extends "default.html" %} {% block title %}Index{% endblock %} {% block content %} <h1>Index</h1> <div id="index-container"> {% for topic, posts in topics %} <details class="topic-expander"> <summary><h2>{{ topic }}</h2></summary> <div class="topic-posts"> {% for post in posts %} <article class="content-area"> <h2><a href="/posts/{{ post.file_name }}" class="article-title">{{ post["title"] }}</a></h2> <div class="home-article-date">{{ post.date | strftime("%Y-%m-%d") }}</div> <p>{{ post.content | first_paragraph | markdown }}</p> </article> {% endfor %} </div> </details> {% endfor %} </div> {% endblock %}