6 Commits

Author SHA1 Message Date
stacksharebot
05d763caf5 Update techstack.md 2024-02-29 20:21:35 +00:00
stacksharebot
fd5edda174 Update techstack.yml 2024-02-29 20:21:34 +00:00
stacksharebot
ac48a69a11 Update techstack.md 2024-01-05 09:36:26 +00:00
stacksharebot
3b86ef987c Update techstack.yml 2024-01-05 09:36:25 +00:00
stacksharebot
6363852423 Create techstack.md 2023-11-11 06:44:34 +00:00
stacksharebot
e9e2cfd523 Create techstack.yml 2023-11-11 06:44:33 +00:00
17 changed files with 3594 additions and 475 deletions

View File

@@ -1,9 +0,0 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "chore"
include: "scope"

View File

@@ -1,44 +1,67 @@
name: Update README
# Visit https://github.com/lowlighter/metrics/blob/master/action.yml for full reference
name: Metrics
on:
schedule: [{ cron: '0 4,16 * * *' }]
schedule: [{cron: "0 4 * * *"}]
# Lines below let you run workflow manually and on each commit
workflow_dispatch:
jobs:
update_readme:
metrics:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v6
- name: Left Panel
if: ${{ success() || failure() }}
uses: lowlighter/metrics@latest
with:
python-version: '3.12'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Create .env file
run: |
echo "GHOST_URL=${{ secrets.GHOST_URL }}" >> .env
echo "GHOST_KEY=${{ secrets.GHOST_KEY }}" >> .env
echo "WAKAPI_URL=${{ secrets.WAKAPI_URL }}" >> .env
echo "WAKAPI_KEY=${{ secrets.WAKAPI_KEY }}" >> .env
echo "DUOLINGO_URL=${{ secrets.DUOLINGO_URL }}" >> .env
- name: Run README updater
run: python readme_updater.py
- name: Commit changes
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add README.md
git commit -m "Auto-update README [skip ci]"
- name: Push changes
uses: ad-m/github-push-action@master
filename: left-panel.svg
token: ${{ secrets.METRICS_TOKEN }}
base: header, activity, community, repositories, metadata
config_order: base.header, base.repositories, base.activity+community, languages, followup
output_action: gist
committer_gist: ${{ secrets.GIST }}
template: classic
config_timezone: Europe/Berlin
plugin_followup: yes
plugin_followup_sections: user, repositories
plugin_languages: yes
plugin_languages_analysis_timeout: 15
plugin_languages_categories: markup, programming
plugin_languages_colors: github
plugin_languages_limit: 8
plugin_languages_recent_categories: markup, programming, data, prose
plugin_languages_recent_days: 14
plugin_languages_recent_load: 300
plugin_languages_sections: most-used
plugin_languages_threshold: 0%
- name: Right Panel
if: ${{ success() || failure() }}
uses: lowlighter/metrics@latest
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
filename: right-panel.svg
token: ${{ secrets.METRICS_TOKEN }}
base: ""
config_order: wakatime, isocalendar, activity
output_action: gist
committer_gist: ${{ secrets.GIST }}
template: classic
config_timezone: Europe/Berlin
plugin_activity: yes
plugin_activity_days: 14
plugin_activity_filter: all
plugin_activity_limit: 5
plugin_activity_load: 300
plugin_activity_visibility: all
plugin_activity_skipped: marvinscham/marvinscham
plugin_isocalendar: yes
plugin_isocalendar_duration: half-year
plugin_wakatime: yes
plugin_wakatime_token: ${{ secrets.WAKA_TOKEN }}
plugin_wakatime_days: "30"
plugin_wakatime_sections: time, projects-graphs, languages-graphs, editors
plugin_wakatime_user: marvinscham
plugin_wakatime_url: https://wakapi.ms-ds.org

2
.gitignore vendored
View File

@@ -1,2 +0,0 @@
.env
.venv

113
README.md
View File

@@ -1,93 +1,34 @@
<h1 align="center" style="text-align:center;">Welcome! <img height="28" style="height:1em;display:inline-block;" src="https://raw.githubusercontent.com/marvinscham/marvinscham/main/resources/wave.gif"></h1>
<p align="center" style="text-align:center;">I'm Marvin Software engineer and creator of <a href="https://masterychart.com">Mastery Chart</a>.<br>Located in Baden-Württemberg, Germany <img height="16" style="height:1em;display:inline-block;" src="https://marvinscham.de/assets/img/lang/de.png">.</p>
<h2>🛠 Things I use</h2>
<div align="center">
<h1>Hi there 👋</h1>
<p>
<img alt="Linux Mint" style="display:inline-block;" src="https://img.shields.io/badge/-Linux_Mint-86BE43?style=flat-square&logo=linuxmint&logoColor=white" />
<img alt="Gitea" style="display:inline-block;" src="https://img.shields.io/badge/-Gitea-609926?style=flat-square&logo=gitea&logoColor=white" />
<img alt="Bash" style="display:inline-block;" src="https://img.shields.io/badge/-Bash-4EAA25?style=flat-square&logo=gnubash&logoColor=white" />
<img alt="Paperless" style="display:inline-block;" src="https://img.shields.io/badge/-Paperless-17541F?style=flat-square&logo=paperlessngx&logoColor=white" />
<img alt="nginx" style="display:inline-block;" src="https://img.shields.io/badge/-nginx-009639?style=flat-square&logo=nginx&logoColor=white" />
<img alt="Calibre--Web" style="display:inline-block;" src="https://img.shields.io/badge/-Calibre--Web-45B29D?style=flat-square&logo=calibreweb&logoColor=white" />
<img alt="LaTeX" style="display:inline-block;" src="https://img.shields.io/badge/-LaTeX-008080?style=flat-square&logo=latex&logoColor=white" />
<img alt="Traefik" style="display:inline-block;" src="https://img.shields.io/badge/-Traefik-24A1C1?style=flat-square&logo=traefikproxy&logoColor=white" />
<img alt="Nextcloud" style="display:inline-block;" src="https://img.shields.io/badge/-Nextcloud-0082C9?style=flat-square&logo=nextcloud&logoColor=white" />
<img alt="C%2b%2b" style="display:inline-block;" src="https://img.shields.io/badge/-C%2b%2b-00599C?style=flat-square&logo=cplusplus&logoColor=white" />
<img alt="Docker" style="display:inline-block;" src="https://img.shields.io/badge/-Docker-2496ED?style=flat-square&logo=Docker&logoColor=white" />
<img alt="Python" style="display:inline-block;" src="https://img.shields.io/badge/-Python-3776AB?style=flat-square&logo=python&logoColor=white" />
<img alt="SonarQube" style="display:inline-block;" src="https://img.shields.io/badge/-SonarQube-126ED3?style=flat-square&logo=sonarqubeserver&logoColor=white" />
<img alt="Adminer" style="display:inline-block;" src="https://img.shields.io/badge/-Adminer-34567C?style=flat-square&logo=adminer&logoColor=white" />
<img alt="MariaDB" style="display:inline-block;" src="https://img.shields.io/badge/-MariaDB-1F305F?style=flat-square&logo=mariadb&logoColor=white" />
<img alt="Immich" style="display:inline-block;" src="https://img.shields.io/badge/-Immich-4250AF?style=flat-square&logo=immich&logoColor=white" />
<img alt="PHP" style="display:inline-block;" src="https://img.shields.io/badge/-PHP-777BB4?style=flat-square&logo=php&logoColor=white" />
<img alt="Plausible" style="display:inline-block;" src="https://img.shields.io/badge/-Plausible-5850EC?style=flat-square&logo=plausibleanalytics&logoColor=white" />
<img alt="Obsidian" style="display:inline-block;" src="https://img.shields.io/badge/-Obsidian-7C3AED?style=flat-square&logo=obsidian&logoColor=white" />
<img alt="CSS" style="display:inline-block;" src="https://img.shields.io/badge/-CSS-663399?style=flat-square&logo=css&logoColor=white" />
<img alt="Sass" style="display:inline-block;" src="https://img.shields.io/badge/-Sass-CC6699?style=flat-square&logo=sass&logoColor=white" />
<img alt="n8n" style="display:inline-block;" src="https://img.shields.io/badge/-n8n-EA4B71?style=flat-square&logo=n8n&logoColor=white" />
<img alt="Riot API" style="display:inline-block;" src="https://img.shields.io/badge/-Riot_API-EB0029?style=flat-square&logo=riotgames&logoColor=white" />
<img alt="WireGuard" style="display:inline-block;" src="https://img.shields.io/badge/-WireGuard-88171A?style=flat-square&logo=wireguard&logoColor=white" />
<img alt="uBlock" style="display:inline-block;" src="https://img.shields.io/badge/-uBlock-800000?style=flat-square&logo=ublockorigin&logoColor=white" />
<img alt="Redis" style="display:inline-block;" src="https://img.shields.io/badge/-Redis-FF4438?style=flat-square&logo=redis&logoColor=white" />
<img alt="Authentik" style="display:inline-block;" src="https://img.shields.io/badge/-Authentik-FD4B2D?style=flat-square&logo=authentik&logoColor=white" />
<img alt="Git" style="display:inline-block;" src="https://img.shields.io/badge/-Git-F05032?style=flat-square&logo=git&logoColor=white" />
<img alt="Cloudflare" style="display:inline-block;" src="https://img.shields.io/badge/-Cloudflare-F38020?style=flat-square&logo=cloudflare&logoColor=white" />
<img alt="D3.js" style="display:inline-block;" src="https://img.shields.io/badge/-D3.js-F9A03C?style=flat-square&logo=d3&logoColor=white" />
<img alt="JavaScript" style="display:inline-block;" src="https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat-square&logo=javascript&logoColor=white" />
<img alt="Ghost" style="display:inline-block;" src="https://img.shields.io/badge/-Ghost-15171A?style=flat-square&logo=ghost&logoColor=white" />
<img alt="Markdown" style="display:inline-block;" src="https://img.shields.io/badge/-Markdown-000000?style=flat-square&logo=markdown&logoColor=white" />
<img alt="Vaultwarden" style="display:inline-block;" src="https://img.shields.io/badge/-Vaultwarden-000000?style=flat-square&logo=vaultwarden&logoColor=white" />
I'm Marvin.<br>
CSS enjoyer, pianist, creator of <a href="https://masterychart.com">Mastery Chart</a>.
</p>
<h2>🎁 Open source</h2>
<img width="390" align="left" src="https://gist.githubusercontent.com/marvinscham/2c47caf3cc853cc0977cbfb6f54c602d/raw/left-panel.svg">
<img width="390" align="right" src="https://gist.githubusercontent.com/marvinscham/2c47caf3cc853cc0977cbfb6f54c602d/raw/right-panel.svg">
<table>
<tbody><tr>
<td><a href="https://github.com/marvinscham/disenchanter"><b>Disenchanter</b></a></td>
<td><img alt="Stars" src="https://img.shields.io/github/stars/marvinscham/disenchanter?style=flat-square&labelColor=343b41"/></td>
<td><img alt="Issues" src="https://img.shields.io/github/issues/marvinscham/disenchanter?style=flat-square&labelColor=343b41"/></td>
<td><img alt="Pull Requests" src="https://img.shields.io/github/issues-pr/marvinscham/disenchanter?style=flat-square&labelColor=343b41"/></td>
<td><img alt="Last Commit" src="https://img.shields.io/github/last-commit/marvinscham/disenchanter?style=flat-square&labelColor=343b41"/></td>
</tr><tr>
<td><a href="https://github.com/marvinscham/duolingo-api-dockerized"><b>Duolingo API Dockerized</b></a></td>
<td><img alt="Stars" src="https://img.shields.io/github/stars/marvinscham/duolingo-api-dockerized?style=flat-square&labelColor=343b41"/></td>
<td><img alt="Issues" src="https://img.shields.io/github/issues/marvinscham/duolingo-api-dockerized?style=flat-square&labelColor=343b41"/></td>
<td><img alt="Pull Requests" src="https://img.shields.io/github/issues-pr/marvinscham/duolingo-api-dockerized?style=flat-square&labelColor=343b41"/></td>
<td><img alt="Last Commit" src="https://img.shields.io/github/last-commit/marvinscham/duolingo-api-dockerized?style=flat-square&labelColor=343b41"/></td>
</tr><tr>
<td><a href="https://github.com/marvinscham/bibtex-oss"><b>BibTeX OSS</b></a></td>
<td><img alt="Stars" src="https://img.shields.io/github/stars/marvinscham/bibtex-oss?style=flat-square&labelColor=343b41"/></td>
<td><img alt="Issues" src="https://img.shields.io/github/issues/marvinscham/bibtex-oss?style=flat-square&labelColor=343b41"/></td>
<td><img alt="Pull Requests" src="https://img.shields.io/github/issues-pr/marvinscham/bibtex-oss?style=flat-square&labelColor=343b41"/></td>
<td><img alt="Last Commit" src="https://img.shields.io/github/last-commit/marvinscham/bibtex-oss?style=flat-square&labelColor=343b41"/></td>
</tr></tbody>
</table>
<h2>📊 30-day coding activity</h2>
</div>
<!--
![](http://github-profile-summary-cards.vercel.app/api/cards/profile-details?username=marvinscham&theme=github_dark)
<br>
![](https://github-profile-summary-cards.vercel.app/api/cards/productive-time?username=marvinscham&theme=github_dark)
![](http://github-profile-summary-cards.vercel.app/api/cards/stats?username=marvinscham&theme=github_dark&utcOffset=8)
<br>
![](https://github-profile-summary-cards.vercel.app/api/cards/repos-per-language?username=marvinscham&theme=github_dark)
![](https://github-profile-summary-cards.vercel.app/api/cards/most-commit-language?username=marvinscham&theme=github_dark)
**marvinscham/marvinscham** is a ✨ _special_ ✨ repository because its `README.md` (this file) appears on your GitHub profile.
Here are some ideas to get you started:
<pre>
Lang hh:mm
Python 15:24 █████████████--------------------------- 33%
C++ 12:28 ██████████------------------------------ 27%
PHP 4:10 ███------------------------------------- 9%
YAML 4:06 ███------------------------------------- 9%
Markdown 2:19 ██-------------------------------------- 5%
Bash 1:33 █--------------------------------------- 3%
</pre>
<h2>👥 Social</h2>
<p align="center" style="text-align:center;"><a href="https://marvinscham.de" style="display:inline-block;" target="_blank"><img alt="Homepage" src="https://img.shields.io/badge/Homepage-%230d254c.svg?&style=for-the-badge&logo=&logoColor=white" /></a>
<a href="https://github.vom/marvinscham" style="display:inline-block;" target="_blank"><img alt="GitHub" src="https://img.shields.io/badge/GitHub-%23181717.svg?&style=for-the-badge&logo=&logoColor=white" /></a>
<a href="https://www.linkedin.com/in/marvin-scham-58576216b/" style="display:inline-block;" target="_blank"><img alt="LinkedIn" src="https://img.shields.io/badge/LinkedIn-%230A66C2.svg?&style=for-the-badge&logo=&logoColor=white" /></a>
<a href="https://duolingo.com/profile/marvinscham" style="display:inline-block;" target="_blank"><img alt="Duolingo" src="https://img.shields.io/badge/Duolingo-%2358CC02.svg?&style=for-the-badge&logo=&logoColor=white" /></a>
</p>
<hr>
<p align="center" style="text-align:center;">Last update: Monday, 24 November 05:36 CET</p>
<p align="center" style="text-align:center;"><a href="https://github.com/marvinscham/marvinscham/actions/workflows/metrics.yml"><img src="https://github.com/marvinscham/marvinscham/actions/workflows/metrics.yml/badge.svg" alt="Update README" style="display:inline-block;"></a> <img alt="made with ♥" style="display:inline-block;" src="https://img.shields.io/badge/made_with-%E2%99%A5-663399?style=flat&labelColor=%23343B41"></p>
- 🔭 Im currently working on ...
- 🌱 Im currently learning ...
- 👯 Im looking to collaborate on ...
- 🤔 Im looking for help with ...
- 💬 Ask me about ...
- 📫 How to reach me: ...
- 😄 Pronouns: ...
- ⚡ Fun fact: ...
-->

1704
github-metrics.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 188 KiB

485
left-panel.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 91 KiB

View File

@@ -1,198 +0,0 @@
# -*- coding: utf-8 -*-
import base64
import datetime
import json
import os
import matplotlib.colors as mcolors
import pytz
import requests
from dotenv import load_dotenv
from jinja2 import Environment, FileSystemLoader
load_dotenv()
# Constants for the progress bar
MAX_BAR_LENGTH = 40
BAR_CHAR = ""
EMPTY_BAR_CHAR = "-"
def hex_to_rgb(hex_color):
# Helper function to convert hex to RGB
return tuple(int(hex_color[i : i + 2], 16) / 255.0 for i in (1, 3, 5))
def shift_hue(obj, hue_shift):
# Shift hue to determine rainbow start
hue = mcolors.rgb_to_hsv(hex_to_rgb(obj["color"]))[0] + hue_shift
if hue > 1:
hue -= 1.0
return hue
def calc_darkness_bias(obj, threshold):
# Threshold 1: No bias
brightness = mcolors.rgb_to_hsv(hex_to_rgb(obj["color"]))[2]
if brightness < threshold:
return 2 - brightness
else:
return 0
def seconds_to_string(seconds):
hours = seconds // 3600
remaining_minutes = (seconds % 3600) // 60
time_string = f"{hours}"
time_string += f":{remaining_minutes:02}"
return time_string
resource_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "resources")
env = Environment(loader=FileSystemLoader(resource_dir))
# Load template
template = env.get_template("README.md.jinja")
# Load metadata files
with open(os.path.join(resource_dir, "technologies.json")) as f:
technologies = json.load(f)
with open(os.path.join(resource_dir, "projects.json")) as f:
projects = json.load(f)
with open(os.path.join(resource_dir, "socials.json")) as f:
socials = json.load(f)
# Sort to build rainbow
hue_shift = 0.8
darkness_bias = 0.2
technologies = sorted(
technologies,
key=lambda obj: shift_hue(obj, hue_shift) + calc_darkness_bias(obj, darkness_bias),
)
blog_entries = {}
try:
ghost_base_url = os.getenv("GHOST_URL").rstrip("/")
ghost_api_key = os.getenv("GHOST_API_KEY")
response = requests.get(
f"{ghost_base_url}/ghost/api/content/posts/?key={ghost_api_key}"
)
blog_entries = response.json()["posts"][:3]
except Exception as e:
print(e)
pass
waka_projects = ""
waka_langs = ""
try:
waka_token = base64.b64encode(os.getenv("WAKAPI_KEY").encode("ascii")).decode(
"ascii"
)
wakapi_base_url = os.getenv("WAKAPI_URL").rstrip("/")
response = requests.get(
f"{wakapi_base_url}/api/summary?interval=30_days",
headers={"Authorization": f"Basic {waka_token}"},
)
waka_info = response.json()
total_duration = sum(item["total"] for item in waka_info["machines"])
project_list = waka_info["projects"][:4]
lang_list = waka_info["languages"][:6]
# max_name_len = max(len(entry["key"]) for entry in project_list)
max_lang_len = max(len(entry["key"]) for entry in lang_list)
# max_key_len = max(max_name_len, max_lang_len)
max_key_len = max_lang_len
# max_proj_time_len = max(
# len(seconds_to_string(entry["total"])) for entry in project_list
# )
max_lang_time_len = max(
len(seconds_to_string(entry["total"])) for entry in lang_list
)
# max_total_len = max(max_proj_time_len, max_lang_time_len)
max_total_len = max_lang_time_len
# waka_projects += "<pre>\n"
# for project in project_list:
# filled_length = int(
# (project["total"] / total_duration) * MAX_BAR_LENGTH)
# progress_bar = BAR_CHAR * filled_length + \
# EMPTY_BAR_CHAR * (MAX_BAR_LENGTH - filled_length)
# percentage_str = str(
# int((project["total"] / total_duration * 100))) + "%"
# waka_projects += f"{project['key']:<{max_key_len}} "
# waka_projects += f"{seconds_to_string(project["total"]):>{
# max_total_len}} "
# waka_projects += f"{progress_bar} "
# waka_projects += f"{percentage_str:>3}\n"
# waka_projects += "</pre>"
waka_langs += "<pre>\n"
waka_langs += f"{'Lang':<{max_key_len}} "
waka_langs += f"{'hh:mm':>{max_total_len}} \n"
for lang in lang_list:
filled_length = int((lang["total"] / total_duration) * MAX_BAR_LENGTH)
progress_bar = BAR_CHAR * filled_length + EMPTY_BAR_CHAR * (
MAX_BAR_LENGTH - filled_length
)
percentage_str = str(int((lang["total"] / total_duration * 100))) + "%"
time_string = seconds_to_string(lang["total"])
waka_langs += f"{lang['key']:<{max_key_len}} "
waka_langs += f"{time_string:>{max_total_len}} "
waka_langs += f"{progress_bar} "
waka_langs += f"{percentage_str:>3}\n"
waka_langs += "</pre>"
waka_stats = waka_projects + "\n\n" + waka_langs
except Exception as e:
waka_stats = ""
print(e)
pass
duolingo_stats = {}
try:
response = requests.get(os.getenv("DUOLINGO_URL"))
duolingo_stats = response.json()
for lang in duolingo_stats["lang_data"]:
if (
duolingo_stats["lang_data"][lang]["learningLanguage"]
== duolingo_stats["learning_language"]
):
current_lang = duolingo_stats["lang_data"][lang]["learningLanguageFull"]
duolingo_stats["current_lang"] = current_lang
except Exception as e:
print(e)
pass
berlin_timezone = pytz.timezone("Europe/Berlin")
berlin_time = datetime.datetime.now(berlin_timezone)
last_update = berlin_time.strftime("%A, %e %B %H:%M %Z")
# Variables to pass to the template
data = {
"technologies": technologies,
"projects": projects,
"blog_entries": blog_entries,
"waka_stats": waka_stats,
"duolingo_stats": duolingo_stats,
"socials": socials,
"last_update": last_update,
}
# Render the template with data
output = template.render(data)
# Write the output to README.md
with open("README.md", "w", encoding="utf-8") as f:
f.write(output)
print("README.md generated successfully.")

View File

@@ -1,5 +0,0 @@
jinja2
matplotlib
requests
python-dotenv
pytz

View File

@@ -1,5 +0,0 @@
# Resources
## Logo source for shields.io icons
> https://simpleicons.org/

View File

@@ -1,63 +0,0 @@
<h1 align="center" style="text-align:center;">Welcome! <img height="28" style="height:1em;display:inline-block;" src="https://raw.githubusercontent.com/marvinscham/marvinscham/main/resources/wave.gif"></h1>
<p align="center" style="text-align:center;">I'm Marvin Software engineer and creator of <a href="https://masterychart.com">Mastery Chart</a>.<br>Located in Baden-Württemberg, Germany <img height="16" style="height:1em;display:inline-block;" src="https://marvinscham.de/assets/img/lang/de.png">.</p>
{# Derived from https://github.com/thmsgbrt/thmsgbrt #}
<h2>🛠 Things I use</h2>
<p>
{% for item in technologies -%}
<img alt="{{ item['name'] }}" style="display:inline-block;" src="https://img.shields.io/badge/-{{ item["name"] | replace(" ", "_") }}-{{ item['color'] | replace("#", "") }}?style=flat-square&logo={{ item['logo'] or item['name'] | replace(" ", "_") }}&logoColor=white" />
{% endfor -%}
</p>
<h2>🎁 Open source</h2>
<table>
<tbody>
{%- for project in projects -%}
<tr>
<td><a href="https://github.com/{{ project['repository'] }}"><b>{{ project['name'] }}</b></a></td>
<td><img alt="Stars" src="https://img.shields.io/github/stars/{{ project['repository'] }}?style=flat-square&labelColor=343b41"/></td>
<td><img alt="Issues" src="https://img.shields.io/github/issues/{{ project['repository'] }}?style=flat-square&labelColor=343b41"/></td>
<td><img alt="Pull Requests" src="https://img.shields.io/github/issues-pr/{{ project['repository'] }}?style=flat-square&labelColor=343b41"/></td>
<td><img alt="Last Commit" src="https://img.shields.io/github/last-commit/{{ project['repository'] }}?style=flat-square&labelColor=343b41"/></td>
</tr>
{%- endfor -%}
</tbody>
</table>
{%- if waka_stats|length > 1 %}
<h2>📊 30-day coding activity</h2>
{{ waka_stats }}
{% endif %}
{%- if blog_entries|length > 1 %}
<h2>📓 Latest blog posts</h2>
<ul>
{%- for entry in blog_entries %}
<li><a href="{{ entry["url"] }}">{{ entry["title"] }}</a></li>
{%- endfor %}
</ul>
{% endif %}
{%- if duolingo_stats["lang_data"]|length > 1 %}
<h2>🦉 Duolingo progress</h2>
<ul>
<li>🔥 Streak: {{ "%d"|format(duolingo_stats["streak"]|float) }}</li>
<li>⚡ {{ "%d"|format(duolingo_stats["xp"]|float) }} XP</li>
<li>👨‍🎓 Currently learning: <img height="16" style="height:1em;display:inline-block;" src="https://marvinscham.de/assets/img/lang/{{ duolingo_stats['learning_language'] }}.png"/> {{ duolingo_stats['current_lang'] }}</li>
</ul>
{% endif %}
<h2>👥 Social</h2>
<p align="center" style="text-align:center;">
{%- for social in socials -%}
<a href="{{ social['url'] }}" style="display:inline-block;" target="_blank"><img alt="{{ social['name'] }}" src="https://img.shields.io/badge/{{ social['name'] }}-%23{{ social['color']|replace("#","") }}.svg?&style=for-the-badge&logo={{ social['logo'] }}&logoColor=white" /></a>
{% endfor %}
</p>
<hr>
<p align="center" style="text-align:center;">Last update: {{ last_update }}</p>
<p align="center" style="text-align:center;"><a href="https://github.com/marvinscham/marvinscham/actions/workflows/metrics.yml"><img src="https://github.com/marvinscham/marvinscham/actions/workflows/metrics.yml/badge.svg" alt="Update README" style="display:inline-block;"></a> <img alt="made with ♥" style="display:inline-block;" src="https://img.shields.io/badge/made_with-%E2%99%A5-663399?style=flat&labelColor=%23343B41"></p>

View File

@@ -1,8 +0,0 @@
[
{ "name": "Disenchanter", "repository": "marvinscham/disenchanter" },
{
"name": "Duolingo API Dockerized",
"repository": "marvinscham/duolingo-api-dockerized"
},
{ "name": "BibTeX OSS", "repository": "marvinscham/bibtex-oss" }
]

View File

@@ -1,26 +0,0 @@
[
{
"name": "Homepage",
"url": "https://marvinscham.de",
"color": "#0d254c",
"logo": ""
},
{
"name": "GitHub",
"url": "https://github.vom/marvinscham",
"color": "#181717",
"logo": ""
},
{
"name": "LinkedIn",
"url": "https://www.linkedin.com/in/marvin-scham-58576216b/",
"color": "#0A66C2",
"logo": ""
},
{
"name": "Duolingo",
"url": "https://duolingo.com/profile/marvinscham",
"color": "#58CC02",
"logo": ""
}
]

View File

@@ -1,36 +0,0 @@
[
{ "name": "Adminer", "logo": "adminer", "color": "#34567C" },
{ "name": "Authentik", "logo": "authentik", "color": "#FD4B2D" },
{ "name": "Bash", "logo": "gnubash", "color": "#4EAA25" },
{ "name": "Calibre--Web", "logo": "calibreweb", "color": "#45B29D" },
{ "name": "Cloudflare", "logo": "cloudflare", "color": "#F38020" },
{ "name": "C%2b%2b", "logo": "cplusplus", "color": "#00599C" },
{ "name": "CSS", "logo": "css", "color": "#663399" },
{ "name": "D3.js", "logo": "d3", "color": "#F9A03C" },
{ "name": "Docker", "logo": "Docker", "color": "#2496ED" },
{ "name": "Ghost", "logo": "ghost", "color": "#15171A" },
{ "name": "Git", "logo": "git", "color": "#F05032" },
{ "name": "Gitea", "logo": "gitea", "color": "#609926" },
{ "name": "Immich", "logo": "immich", "color": "#4250AF" },
{ "name": "JavaScript", "logo": "javascript", "color": "#F7DF1E" },
{ "name": "LaTeX", "logo": "latex", "color": "#008080" },
{ "name": "Linux Mint", "logo": "linuxmint", "color": "#86BE43" },
{ "name": "MariaDB", "logo": "mariadb", "color": "#1F305F" },
{ "name": "Markdown", "logo": "markdown", "color": "#000000" },
{ "name": "n8n", "logo": "n8n", "color": "#EA4B71" },
{ "name": "Nextcloud", "logo": "nextcloud", "color": "#0082C9" },
{ "name": "nginx", "logo": "nginx", "color": "#009639" },
{ "name": "Obsidian", "logo": "obsidian", "color": "#7C3AED" },
{ "name": "Paperless", "logo": "paperlessngx", "color": "#17541F" },
{ "name": "PHP", "logo": "php", "color": "#777BB4" },
{ "name": "Plausible", "logo": "plausibleanalytics", "color": "#5850EC" },
{ "name": "Python", "logo": "python", "color": "#3776AB" },
{ "name": "Redis", "logo": "redis", "color": "#FF4438" },
{ "name": "Riot API", "logo": "riotgames", "color": "#EB0029" },
{ "name": "Sass", "logo": "sass", "color": "#CC6699" },
{ "name": "SonarQube", "logo": "sonarqubeserver", "color": "#126ED3" },
{ "name": "Traefik", "logo": "traefikproxy", "color": "#24A1C1" },
{ "name": "uBlock", "logo": "ublockorigin", "color": "#800000" },
{ "name": "Vaultwarden", "logo": "vaultwarden", "color": "#000000" },
{ "name": "WireGuard", "logo": "wireguard", "color": "#88171A" }
]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

1231
right-panel.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 99 KiB

55
techstack.md Normal file
View File

@@ -0,0 +1,55 @@
<!--
&lt;--- Readme.md Snippet without images Start ---&gt;
## Tech Stack
marvinscham/marvinscham is built on the following main stack:
- [GitHub Actions](https://github.com/features/actions) Continuous Integration
Full tech stack [here](/techstack.md)
&lt;--- Readme.md Snippet without images End ---&gt;
&lt;--- Readme.md Snippet with images Start ---&gt;
## Tech Stack
marvinscham/marvinscham is built on the following main stack:
- <img width='25' height='25' src='https://img.stackshare.io/service/11563/actions.png' alt='GitHub Actions'/> [GitHub Actions](https://github.com/features/actions) Continuous Integration
Full tech stack [here](/techstack.md)
&lt;--- Readme.md Snippet with images End ---&gt;
-->
<div align="center">
# Tech Stack File
![](https://img.stackshare.io/repo.svg "repo") [marvinscham/marvinscham](https://github.com/marvinscham/marvinscham)![](https://img.stackshare.io/public_badge.svg "public")
<br/><br/>
|2<br/>Tools used|02/29/24 <br/>Report generated|
|------|------|
</div>
## <img src='https://img.stackshare.io/devops.svg'/> DevOps (2)
<table><tr>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/1046/git.png' alt='Git'>
<br>
<sub><a href="http://git-scm.com/">Git</a></sub>
<br>
<sub></sub>
</td>
<td align='center'>
<img width='36' height='36' src='https://img.stackshare.io/service/11563/actions.png' alt='GitHub Actions'>
<br>
<sub><a href="https://github.com/features/actions">GitHub Actions</a></sub>
<br>
<sub></sub>
</td>
</tr>
</table>
<br/>
<div align='center'>
Generated via [Stack File](https://github.com/marketplace/stack-file)

32
techstack.yml Normal file
View File

@@ -0,0 +1,32 @@
repo_name: marvinscham/marvinscham
report_id: 785eed106406bd2d014bb65ffffc9bc3
version: 0.1
repo_type: Public
timestamp: '2024-02-29T18:37:54+00:00'
requested_by: marvinscham
provider: github
branch: main
detected_tools_count: 2
tools:
- name: Git
description: Fast, scalable, distributed revision control system
website_url: http://git-scm.com/
open_source: true
hosted_saas: false
category: Build, Test, Deploy
sub_category: Version Control System
image_url: https://img.stackshare.io/service/1046/git.png
detection_source_url: https://github.com/marvinscham/marvinscham
detection_source: Repo Metadata
- name: GitHub Actions
description: Automate your workflow from idea to production
website_url: https://github.com/features/actions
open_source: false
hosted_saas: true
category: Build, Test, Deploy
sub_category: Continuous Integration
image_url: https://img.stackshare.io/service/11563/actions.png
detection_source_url: https://github.com/marvinscham/marvinscham/blob/main/.github/workflows/metrics.yml
detection_source: ".github/workflows/metrics.yml"
last_updated_by: Marvin Scham
last_updated_on: 2022-08-12 03:00:08.000000000 Z