<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[I Made These Works.]]></title><description><![CDATA[Hi, I'm Tim. This is a simple portfolio of some of the projects I have worked on so far.]]></description><link>https://i.madethese.works/</link><image><url>https://i.madethese.works/favicon.png</url><title>I Made These Works.</title><link>https://i.madethese.works/</link></image><generator>Ghost 5.64</generator><lastBuildDate>Mon, 11 May 2026 11:00:56 GMT</lastBuildDate><atom:link href="https://i.madethese.works/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Beanie]]></title><description><![CDATA[A coffee grinder companion]]></description><link>https://i.madethese.works/beanie/</link><guid isPermaLink="false">64060f60b941a80001fbdcb6</guid><category><![CDATA[Flutter]]></category><dc:creator><![CDATA[Tim Lehmann]]></dc:creator><pubDate>Mon, 06 Mar 2023 16:12:55 GMT</pubDate><media:content url="https://i.madethese.works/content/images/2023/05/Beanie.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-video-card kg-width-wide"><div class="kg-video-container"><video src="https://i.madethese.works/content/media/2023/05/Beanie-Detail.mp4" poster="https://img.spacergif.org/v1/1920x1080/0a/spacer.png" width="1920" height="1080" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://i.madethese.works/content/images/2023/05/media-thumbnail-ember934.jpg&apos;) 50% 50% / cover no-repeat;"></video><div class="kg-video-overlay"><button class="kg-video-large-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button></div><div class="kg-video-player-container kg-video-hide"><div class="kg-video-player"><button class="kg-video-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button><button class="kg-video-pause-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/><rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/></svg></button><span class="kg-video-current-time">0:00</span><div class="kg-video-time">/<span class="kg-video-duration"></span></div><input type="range" class="kg-video-seek-slider" max="100" value="0"><button class="kg-video-playback-rate">1&#xD7;</button><button class="kg-video-unmute-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/></svg></button><button class="kg-video-mute-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/></svg></button><input type="range" class="kg-video-volume-slider" max="100" value="100"></div></div></div></figure><img src="https://i.madethese.works/content/images/2023/05/Beanie.png" alt="Beanie"><p>Being a pretty big coffee nerd in my free time, I was excited to hear about the release of the Fellow Opus - a capable entry-level grinder meant for beginners at a very competitive price point. However, the adjustment mechanism for the grind size is fairly complicated and has led to people shying away from getting the grinder.</p><p>On a lazy Sunday, I decided to build a very simple app to help people intuitively understand the mechanism and dial in the perfect coffee. The app was received very well (see comments on the accompanying <a href="https://www.reddit.com/r/espresso/comments/118zcpi/fellow_opus_companion_app/?ref=i.madethese.works">Reddit post</a>), so much so that Fellow decided to send me a unit as a thank you gift for creating it.</p><h3 id="links">Links</h3><div class="kg-card kg-button-card kg-align-left"><a href="https://apps.apple.com/de/app/beanie-grind-size-finder/id1673166617?ref=i.madethese.works" class="kg-btn kg-btn-accent">App Store</a></div><div class="kg-card kg-button-card kg-align-left"><a href="https://play.google.com/store/apps/details?id=works.noone.beanie&amp;ref=i.madethese.works" class="kg-btn kg-btn-accent">Google Play</a></div>]]></content:encoded></item><item><title><![CDATA[Flutter Packages]]></title><description><![CDATA[A collection of my open source work]]></description><link>https://i.madethese.works/flutter-packages/</link><guid isPermaLink="false">646e1df773151c0001b6819c</guid><category><![CDATA[OSS]]></category><category><![CDATA[Flutter]]></category><dc:creator><![CDATA[Tim Lehmann]]></dc:creator><pubDate>Wed, 01 Mar 2023 15:41:00 GMT</pubDate><media:content url="https://i.madethese.works/content/images/2023/05/Flutter-Packages.png" medium="image"/><content:encoded><![CDATA[<img src="https://i.madethese.works/content/images/2023/05/Flutter-Packages.png" alt="Flutter Packages"><p>Over the course of my multiple Flutter projects, I authored a variety of open source packages for the Flutter ecosystem. The following presents a quick overview over most of them:</p><h2 id="scribble">Scribble</h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://pub.dev/packages/scribble?ref=i.madethese.works"><div class="kg-bookmark-content"><div class="kg-bookmark-title">scribble | Flutter Package</div><div class="kg-bookmark-description">Scribble is a lightweight library for freehand drawing in Flutter supporting pressure, variable line width and more!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://pub.dev/static/hash-e8sopogb/img/flutter-logo-32x32.png" alt="Flutter Packages"><span class="kg-bookmark-author">Dart packages</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://pub.dev/static/hash-e8sopogb/img/pub-dev-icon-cover-image.png" alt="Flutter Packages"></div></a></figure><p>The most popular among my packages is <strong>scribble</strong>, a lightweight library for freehand drawing in Flutter supporting pressure, variable line width and more. It arose out of the need for custom freehand notes for the <a href="https://i.madethese.works/fyzo">fyzo Assistant</a> application and has amassed over a hundred thumbs up on pub.dev.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://i.madethese.works/content/images/2024/07/scribble_demo.gif" class="kg-image" alt="Flutter Packages" loading="lazy" width="800" height="566" srcset="https://i.madethese.works/content/images/size/w600/2024/07/scribble_demo.gif 600w, https://i.madethese.works/content/images/2024/07/scribble_demo.gif 800w" sizes="(min-width: 720px) 720px"><figcaption>A video of Scribble freehand drawing in action</figcaption></figure><h2 id="figmage">Figmage</h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://pub.dev/packages/figmage?ref=i.madethese.works"><div class="kg-bookmark-content"><div class="kg-bookmark-title">figmage | Dart package</div><div class="kg-bookmark-description">A CLI tool for generating Figma styles for Flutter</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://pub.dev/favicon.ico?hash=nk4nss8c7444fg0chird9erqef2vkhb8" alt="Flutter Packages"><span class="kg-bookmark-author">Dart packages</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://pub.dev/static/hash-mb54d9c1/img/pub-dev-icon-cover-image.png" alt="Flutter Packages"></div></a></figure><p>As part of my <a href="https://whynotmake.it/?ref=i.madethese.works">whynotmake.it</a> project, I co-authored Figmage, a CLI that automatically imports the tokens for an entire Design system from Figma into a standalone Flutter package. Figmage is the first tool of its kind to support Figma styles and variables alike, which makes it extremely flexible and powerful for fast-paced, iterative development.</p><h2 id="dart-coverage-assistant">Dart Coverage Assistant</h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/whynotmake-it/dart-coverage-assistant?ref=i.madethese.works"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - whynotmake-it/dart-coverage-assistant: Magically generates code coverage reports from your dart projects</div><div class="kg-bookmark-description">Magically generates code coverage reports from your dart projects - whynotmake-it/dart-coverage-assistant</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" alt="Flutter Packages"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">whynotmake-it</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/dc1bcf25a72f2309910861bfd765e0d77cafb96f8bb318b9548e07f8a448f11c/whynotmake-it/dart-coverage-assistant" alt="Flutter Packages"></div></a></figure><p>Dart Coverage Assistant is a GitHub Action that automatically generates coverage reports and badges for Dart and Flutter monorepos. It works without any configuration, and dynamically finds all packages in the repository. I published this action as part of the <a href="https://whynotmake.it/?ref=i.madethese.works">whynotmake.it</a> project.</p><h2 id="broody-video">Broody Video</h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://pub.dev/packages/broody_video?ref=i.madethese.works"><div class="kg-bookmark-content"><div class="kg-bookmark-title">broody_video | Flutter Package</div><div class="kg-bookmark-description">The video manipulation library for broody. iOS only for now.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://pub.dev/static/hash-e8sopogb/img/flutter-logo-32x32.png" alt="Flutter Packages"><span class="kg-bookmark-author">Dart packages</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://pub.dev/static/hash-e8sopogb/img/pub-dev-icon-cover-image.png" alt="Flutter Packages"></div></a></figure><p>Although broody_video is still in development, it has the potential to become one of the most feature-rich video transcoding plugin in the Flutter ecosystem. It leverages native Android/iOS APIs to achieve a better performance than FFMPEG, while enabling projects that can&apos;t be published under GNU GPL.</p><p>At this point, the plugin supports, trimming, cropping and compressing video clips, as well as extracting thumbnails. The package was co-authored with Jesper Bellenbaum, just like the <a href="https://i.madethese.works/broody">Broody</a> app.</p><h2 id="value-notifier-tools">Value Notifier Tools</h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://pub.dev/packages/value_notifier_tools?ref=i.madethese.works"><div class="kg-bookmark-content"><div class="kg-bookmark-title">value_notifier_tools | Flutter package</div><div class="kg-bookmark-description">Helpful lightweight tools for working with ValueNotifiers</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://pub.dev/static/hash-mb54d9c1/img/flutter-logo-32x32.png" alt="Flutter Packages"><span class="kg-bookmark-author">Dart packages</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://pub.dev/static/hash-mb54d9c1/img/pub-dev-icon-cover-image.png" alt="Flutter Packages"></div></a></figure><p>This package adds versatile functionality to Flutter&apos;s <code>ValueNotifier</code>, such as undo/redo support, rebuild filtering or the transformation of values.</p><p>It was built by me as part of the Scribble package.</p><h2 id="smooth-video-progress">Smooth Video Progress</h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://pub.dev/packages/smooth_video_progress?ref=i.madethese.works"><div class="kg-bookmark-content"><div class="kg-bookmark-title">smooth_video_progress | Flutter Package</div><div class="kg-bookmark-description">An interpolated progress builder for video_player controllers</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://pub.dev/static/hash-e8sopogb/img/flutter-logo-32x32.png" alt="Flutter Packages"><span class="kg-bookmark-author">Dart packages</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://pub.dev/static/hash-e8sopogb/img/pub-dev-icon-cover-image.png" alt="Flutter Packages"></div></a></figure><p>Most Flutter apps that want to display video do so by depending on the <a href="https://pub.dev/packages/video_player?ref=i.madethese.works">video_player</a> package. While creating <a href="https://i.madethese.works/broody">Broody</a>, I was frustrated with the janky UX that this creates, since the native video player library sends progress updates too infrequently. Therefore, smooth_video_progress was created to interpolate the inbetween values for a smoother user experience.</p><h2 id="rotation-stage">Rotation Stage</h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://pub.dev/packages/rotation_stage?ref=i.madethese.works"><div class="kg-bookmark-content"><div class="kg-bookmark-title">rotation_stage | Flutter Package</div><div class="kg-bookmark-description">A four-sided stage for representing 3D objects with four widgets</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://pub.dev/static/hash-e8sopogb/img/flutter-logo-32x32.png" alt="Flutter Packages"><span class="kg-bookmark-author">Dart packages</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://pub.dev/static/hash-e8sopogb/img/pub-dev-icon-cover-image.png" alt="Flutter Packages"></div></a></figure><p>rotation_stage, another co-op with Jesper Bellenbaum, offers a clever way of presenting a four-sided object in a Flutter widget by using matrix transformations. It is probably easiest to convey it&apos;s functionality in a short GIF:</p><figure class="kg-card kg-image-card"><img src="https://i.madethese.works/content/images/2023/05/demo.gif" class="kg-image" alt="Flutter Packages" loading="lazy" width="616" height="800" srcset="https://i.madethese.works/content/images/size/w600/2023/05/demo.gif 600w, https://i.madethese.works/content/images/2023/05/demo.gif 616w"></figure>]]></content:encoded></item><item><title><![CDATA[fyzo]]></title><description><![CDATA[Innovative Software for Physical Therapy]]></description><link>https://i.madethese.works/fyzo/</link><guid isPermaLink="false">64060759b941a80001fbdc1e</guid><category><![CDATA[Flutter]]></category><category><![CDATA[Firebase]]></category><category><![CDATA[UX]]></category><dc:creator><![CDATA[Tim Lehmann]]></dc:creator><pubDate>Fri, 01 Jul 2022 15:33:00 GMT</pubDate><media:content url="https://i.madethese.works/content/images/2023/05/fyzo.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-video-card kg-width-wide"><div class="kg-video-container"><video src="https://i.madethese.works/content/media/2023/05/fyzo-Detail.mp4" poster="https://img.spacergif.org/v1/1920x1080/0a/spacer.png" width="1920" height="1080" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://i.madethese.works/content/images/2023/05/media-thumbnail-ember402.jpg&apos;) 50% 50% / cover no-repeat;"></video><div class="kg-video-overlay"><button class="kg-video-large-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button></div><div class="kg-video-player-container kg-video-hide"><div class="kg-video-player"><button class="kg-video-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button><button class="kg-video-pause-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/><rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/></svg></button><span class="kg-video-current-time">0:00</span><div class="kg-video-time">/<span class="kg-video-duration"></span></div><input type="range" class="kg-video-seek-slider" max="100" value="0"><button class="kg-video-playback-rate">1&#xD7;</button><button class="kg-video-unmute-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/></svg></button><button class="kg-video-mute-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/></svg></button><input type="range" class="kg-video-volume-slider" max="100" value="100"></div></div></div></figure><img src="https://i.madethese.works/content/images/2023/05/fyzo.png" alt="fyzo"><p>The two apps &quot;fyzo Coach&quot; and &quot;fyzo Assistant&quot; offer a refreshing new take on software for Physical Therapists and their patients.</p><p>As Co-Founder, Design and UX Lead at fyzo, I was responsible for the entire visual design of the software and marketing materials, as well as the planning and execution of user interviews. Furthermore, I also contributed over 50% of the codebase as full-stack developer to the technical implementation of the applications until my exit in May 2023, and played a significant role in the agile project management.</p><p>The software included a variety of technologies in it&apos;s tech stack, all of which I was deeply involved in. This includes:</p><ul><li>Flutter</li><li>Firebase Auth, Cloud Functions, Cloud Firestore, Storage</li><li>Matomo Analytics</li><li>Stripe Connect</li><li>GitHub Actions</li><li>Fastlane</li><li>Ghost (website)</li></ul><p>At the time of my exit, the fyzo Apps were used by physical therapy practices in multiple countries every day.</p><p>If you want to learn more about the company and the products, head to <a href="https://www.fyzo.de/?ref=i.madethese.works">www.fyzo.de</a> (German).</p>]]></content:encoded></item><item><title><![CDATA[Ukraine Help Now]]></title><description><![CDATA[Building a website for a non-profit]]></description><link>https://i.madethese.works/ukraine-help-now/</link><guid isPermaLink="false">64060e38b941a80001fbdc99</guid><category><![CDATA[Web]]></category><category><![CDATA[Ghost]]></category><category><![CDATA[Design]]></category><dc:creator><![CDATA[Tim Lehmann]]></dc:creator><pubDate>Sun, 20 Mar 2022 16:04:00 GMT</pubDate><media:content url="https://i.madethese.works/content/images/2023/05/UHN.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-video-card kg-width-wide"><div class="kg-video-container"><video src="https://i.madethese.works/content/media/2023/05/UHN-Detail.mp4" poster="https://img.spacergif.org/v1/1920x1080/0a/spacer.png" width="1920" height="1080" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://i.madethese.works/content/images/2023/05/media-thumbnail-ember801.jpg&apos;) 50% 50% / cover no-repeat;"></video><div class="kg-video-overlay"><button class="kg-video-large-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button></div><div class="kg-video-player-container kg-video-hide"><div class="kg-video-player"><button class="kg-video-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button><button class="kg-video-pause-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/><rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/></svg></button><span class="kg-video-current-time">0:00</span><div class="kg-video-time">/<span class="kg-video-duration"></span></div><input type="range" class="kg-video-seek-slider" max="100" value="0"><button class="kg-video-playback-rate">1&#xD7;</button><button class="kg-video-unmute-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/></svg></button><button class="kg-video-mute-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/></svg></button><input type="range" class="kg-video-volume-slider" max="100" value="100"></div></div></div></figure><img src="https://i.madethese.works/content/images/2023/05/UHN.png" alt="Ukraine Help Now"><p>At the beginning of the Invasion of Ukraine in 2022, I volunteered to build a website for the non-profit <strong>Ukraine Help Now</strong>.</p><p>The website was set up as a <a href="https://ghost.org/?ref=i.madethese.works">Ghost</a> Theme, so that the organization can manage their content without my support.</p><p>Visit the website here to learn more: <a href="https://www.ukraine-help-now.de/?ref=i.madethese.works">www.ukraine-help-now.de</a></p>]]></content:encoded></item><item><title><![CDATA[Broody]]></title><description><![CDATA[Private video diary]]></description><link>https://i.madethese.works/broody-private-video-diary/</link><guid isPermaLink="false">64060bf1b941a80001fbdc5f</guid><category><![CDATA[Flutter]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[UX]]></category><dc:creator><![CDATA[Tim Lehmann]]></dc:creator><pubDate>Tue, 01 Mar 2022 15:57:00 GMT</pubDate><media:content url="https://i.madethese.works/content/images/2023/05/Broody-1.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-video-card kg-width-wide"><div class="kg-video-container"><video src="https://i.madethese.works/content/media/2023/05/Broody-Detail.mp4" poster="https://img.spacergif.org/v1/1920x1080/0a/spacer.png" width="1920" height="1080" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://i.madethese.works/content/images/2023/05/media-thumbnail-ember1120.jpg&apos;) 50% 50% / cover no-repeat;"></video><div class="kg-video-overlay"><button class="kg-video-large-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button></div><div class="kg-video-player-container kg-video-hide"><div class="kg-video-player"><button class="kg-video-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button><button class="kg-video-pause-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/><rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/></svg></button><span class="kg-video-current-time">0:00</span><div class="kg-video-time">/<span class="kg-video-duration"></span></div><input type="range" class="kg-video-seek-slider" max="100" value="0"><button class="kg-video-playback-rate">1&#xD7;</button><button class="kg-video-unmute-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/></svg></button><button class="kg-video-mute-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/></svg></button><input type="range" class="kg-video-volume-slider" max="100" value="100"></div></div></div></figure><img src="https://i.madethese.works/content/images/2023/05/Broody-1.png" alt="Broody"><p>Broody was created from the frustration of wanting to record a personal video diary, but not finding any existing apps that don&apos;t collect any data, are easy to use and free.</p><p>The app was designed and built by Jesper Bellenbaum and myself in our free time and published under the GNU GPL. It received more than a thousand downloads across both mobile app stores without any marketing whatsoever and continues to be used daily by many. It also lead to the publishing of a new video transcoding package for Flutter.</p><h2 id="features">Features:</h2><ul><li>Customisable clip duration per project</li><li>Easy to use video editor</li><li>Absolute privacy: All data remains on device</li><li>Daily reminders</li><li>Unlimited projects, each with custom settings</li><li>Beautiful and intuitive design</li><li>Personalised colors per project and video</li></ul><h2 id="links">Links:</h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/no-one-works/broody?ref=i.madethese.works"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - no-one-works/broody: World&#x2019;s greatest mobile video diary.</div><div class="kg-bookmark-description">World&#x2019;s greatest mobile video diary. Contribute to no-one-works/broody development by creating an account on GitHub.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt="Broody"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">no-one-works</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/ebedcd6b316ccbe6fa69c290a01a0b7f12a81ece059f6e95adee9370ffc2ad93/no-one-works/broody" alt="Broody"></div></a></figure><div class="kg-card kg-button-card kg-align-left"><a href="https://apps.apple.com/de/app/broody-daily-video-diary/id1608589705?ref=i.madethese.works" class="kg-btn kg-btn-accent">App Store</a></div><div class="kg-card kg-button-card kg-align-left"><a href="https://play.google.com/store/apps/details?id=works.noone.broody&amp;ref=i.madethese.works" class="kg-btn kg-btn-accent">Google Play</a></div>]]></content:encoded></item><item><title><![CDATA[Memento]]></title><description><![CDATA[Express your feelings through memes]]></description><link>https://i.madethese.works/memento/</link><guid isPermaLink="false">64060a16b941a80001fbdc2f</guid><category><![CDATA[Firebase]]></category><category><![CDATA[Design]]></category><category><![CDATA[Flutter]]></category><category><![CDATA[UX]]></category><category><![CDATA[Research]]></category><dc:creator><![CDATA[Tim Lehmann]]></dc:creator><pubDate>Tue, 01 Feb 2022 15:50:00 GMT</pubDate><media:content url="https://i.madethese.works/content/images/2023/05/Memento-1.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-video-card kg-width-wide"><div class="kg-video-container"><video src="https://i.madethese.works/content/media/2023/05/Memento-Detail.mp4" poster="https://img.spacergif.org/v1/1920x1080/0a/spacer.png" width="1920" height="1080" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://i.madethese.works/content/images/2023/05/media-thumbnail-ember1297.jpg&apos;) 50% 50% / cover no-repeat;"></video><div class="kg-video-overlay"><button class="kg-video-large-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button></div><div class="kg-video-player-container kg-video-hide"><div class="kg-video-player"><button class="kg-video-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button><button class="kg-video-pause-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/><rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/></svg></button><span class="kg-video-current-time">0:00</span><div class="kg-video-time">/<span class="kg-video-duration"></span></div><input type="range" class="kg-video-seek-slider" max="100" value="0"><button class="kg-video-playback-rate">1&#xD7;</button><button class="kg-video-unmute-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/></svg></button><button class="kg-video-mute-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/></svg></button><input type="range" class="kg-video-volume-slider" max="100" value="100"></div></div></div></figure><img src="https://i.madethese.works/content/images/2023/05/Memento-1.png" alt="Memento"><p>Inspired by the research of <a href="https://www.researchgate.net/publication/352810927_MEMEories_Internet_Memes_as_Means_for_Daily_Journaling?ref=i.madethese.works">Terzimehi&#x107; et. al.</a>, I designed and developed the <strong>Memento</strong> app as a practical course at LMU Munich. </p><p>The aim of this project was to explore the ways in which people use internet memes to express feelings and process their day-to-day lives by presenting a fusion between a daily journal and a meme editor. Users can track their mood, create a meme and write a diary entry to go with it.</p><p>Memento was built in Flutter and features a custom-built, fully-featured WYSIWYG meme editor and a Firebase serverless backend for storing creations. </p><p>Since it might still be used for future research, the app hasn&apos;t been released publicly yet, however, was exhibited at the Media Informatics Open Days and enjoyed great popularity. Furthermore, the project was awarded a perfect grade by the supervisor <a href="https://www.researchgate.net/publication/scientific-contributions/Nada-Terzimehic-2134004150?ref=i.madethese.works">Na&#x111;a Terzimehi&#x107;</a>.</p><p>If you want to learn more about the project, download the full report here:</p>
        <div class="kg-card kg-file-card ">
            <a class="kg-file-card-container" href="https://i.madethese.works/content/files/2023/05/Memento_Report.pdf" title="Download" download>
                <div class="kg-file-card-contents">
                    <div class="kg-file-card-title">Memento Report</div>
                    <div class="kg-file-card-caption">The final report for the practical course containing more information</div>
                    <div class="kg-file-card-metadata">
                        <div class="kg-file-card-filename">Memento_Report.pdf</div>
                        <div class="kg-file-card-filesize">9 MB</div>
                    </div>
                </div>
                <div class="kg-file-card-icon">
                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>download-circle</title><polyline class="a" points="8.25 14.25 12 18 15.75 14.25"/><line class="a" x1="12" y1="6.75" x2="12" y2="18"/><circle class="a" cx="12" cy="12" r="11.25"/></svg>
                </div>
            </a>
        </div>
        ]]></content:encoded></item><item><title><![CDATA[Intuedo Vocab]]></title><description><![CDATA[A friendly language learning app]]></description><link>https://i.madethese.works/intuedo/</link><guid isPermaLink="false">646dcc7c55b6b800017db11a</guid><category><![CDATA[Flutter]]></category><category><![CDATA[Firebase]]></category><category><![CDATA[Design]]></category><category><![CDATA[UX]]></category><category><![CDATA[NodeJS]]></category><category><![CDATA[Wordpress]]></category><dc:creator><![CDATA[Tim Lehmann]]></dc:creator><pubDate>Sun, 01 Aug 2021 08:36:00 GMT</pubDate><media:content url="https://i.madethese.works/content/images/2023/05/Intuedo.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card kg-width-wide"><img src="https://i.madethese.works/content/images/2023/05/Linguedo-Detail.png" class="kg-image" alt="Intuedo Vocab" loading="lazy" width="1920" height="1080" srcset="https://i.madethese.works/content/images/size/w600/2023/05/Linguedo-Detail.png 600w, https://i.madethese.works/content/images/size/w1000/2023/05/Linguedo-Detail.png 1000w, https://i.madethese.works/content/images/size/w1600/2023/05/Linguedo-Detail.png 1600w, https://i.madethese.works/content/images/2023/05/Linguedo-Detail.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><img src="https://i.madethese.works/content/images/2023/05/Intuedo.png" alt="Intuedo Vocab"><p>Intuedo is a friendly online German course for Italian and English-speaking people from around the world.</p><p>The Vocab app, which I designed and developed over a few months as a working student, is a mobile companion that helps users study their vocabulary on the go. Users can pick their own schedule to study at their preferred pace and progress their words through different levels of knowledge. The app makes sure to present repetitions in an optimal way to foster long-term memory.</p><h2 id="technologies">Technologies</h2><p>The Intuedo platform uses a wide array of technologies in its stack.</p><ul><li>WordPress for account, member, and progress management</li><li>Firebase cloud functions for interacting with the WordPress backend</li><li>OAuth to authenticate users in the app</li><li>Google WaveNet API for generating pronunciation audio</li><li>Firebase Cloud Storage for storing and providing these audio files</li><li>Firebase Cloud Firestore for storing app user data and course vocabulary</li><li>Angular for the admin frontend, where the teachers can manage course vocabulary</li><li>Flutter for the Vocab App</li></ul><p></p>]]></content:encoded></item><item><title><![CDATA[Prometheus]]></title><description><![CDATA[An asymmetric multiplayer game made in Unity]]></description><link>https://i.madethese.works/prometheus/</link><guid isPermaLink="false">646dc1db55b6b800017db0ee</guid><category><![CDATA[Unity]]></category><category><![CDATA[Multiplayer]]></category><category><![CDATA[Game Design]]></category><category><![CDATA[VFX]]></category><dc:creator><![CDATA[Tim Lehmann]]></dc:creator><pubDate>Tue, 27 Jul 2021 07:52:00 GMT</pubDate><media:content url="https://i.madethese.works/content/images/2023/05/Prometheus.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-video-card kg-width-wide"><div class="kg-video-container"><video src="https://i.madethese.works/content/media/2023/05/Prometheus-Detail.mp4" poster="https://img.spacergif.org/v1/1920x1080/0a/spacer.png" width="1920" height="1080" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://i.madethese.works/content/images/2023/05/media-thumbnail-ember656.jpg&apos;) 50% 50% / cover no-repeat;"></video><div class="kg-video-overlay"><button class="kg-video-large-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button></div><div class="kg-video-player-container kg-video-hide"><div class="kg-video-player"><button class="kg-video-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button><button class="kg-video-pause-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/><rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/></svg></button><span class="kg-video-current-time">0:00</span><div class="kg-video-time">/<span class="kg-video-duration"></span></div><input type="range" class="kg-video-seek-slider" max="100" value="0"><button class="kg-video-playback-rate">1&#xD7;</button><button class="kg-video-unmute-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/></svg></button><button class="kg-video-mute-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/></svg></button><input type="range" class="kg-video-volume-slider" max="100" value="100"></div></div></div></figure><img src="https://i.madethese.works/content/images/2023/05/Prometheus.png" alt="Prometheus"><p>Prometheus was created by myself and two teammates for the master&apos;s course &quot;Open Games Workshop&quot; at LMU Munich.</p><p>In the game, one player controls Prometheus, who is trying to take the gift of fire down the Olympos from the gods to the humans. The other player is trying their best to stop that from happening by using the powers of different gods to either kill Prometheus directly or destroy the environment around him. Prometheus isn&apos;t wholly defenseless however since the power of the fire gives him the ability to air-dash to avoid the attacks thrown at him by the gods.</p><p>Even though, the time limit didn&apos;t allow for more than one level to be designed, this makes for a fun and engaging interplay between the two players. The project was developed in Unity, and all graphics, effects, and 3D Models were custom-built.</p><p>The project was awarded with a perfect grade by the course organizers.</p><figure class="kg-card kg-embed-card kg-card-hascaption"><iframe width="200" height="113" src="https://www.youtube.com/embed/Ta6_OYNqfCc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="Prometheus Trailer"></iframe><figcaption>A fun trailer we put together after the project&apos;s completion</figcaption></figure><div class="kg-card kg-button-card kg-align-center"><a href="https://olympgodworkshop.itch.io/prometheus?ref=i.madethese.works" class="kg-btn kg-btn-accent">Download on itch.io</a></div>]]></content:encoded></item><item><title><![CDATA[Memester]]></title><description><![CDATA[An online meme platform]]></description><link>https://i.madethese.works/memester/</link><guid isPermaLink="false">646dffd65e21ea0001d92a38</guid><category><![CDATA[Design]]></category><category><![CDATA[Backend]]></category><category><![CDATA[NestJS]]></category><category><![CDATA[Angular]]></category><category><![CDATA[CSS]]></category><dc:creator><![CDATA[Tim Lehmann]]></dc:creator><pubDate>Wed, 14 Apr 2021 12:15:00 GMT</pubDate><media:content url="https://i.madethese.works/content/images/2023/05/Memester.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-video-card kg-width-wide"><div class="kg-video-container"><video src="https://i.madethese.works/content/media/2023/05/Memester-Detail.mp4" poster="https://img.spacergif.org/v1/1920x1080/0a/spacer.png" width="1920" height="1080" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://i.madethese.works/content/images/2023/05/media-thumbnail-ember72.jpg&apos;) 50% 50% / cover no-repeat;"></video><div class="kg-video-overlay"><button class="kg-video-large-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button></div><div class="kg-video-player-container kg-video-hide"><div class="kg-video-player"><button class="kg-video-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button><button class="kg-video-pause-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/><rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/></svg></button><span class="kg-video-current-time">0:00</span><div class="kg-video-time">/<span class="kg-video-duration"></span></div><input type="range" class="kg-video-seek-slider" max="100" value="0"><button class="kg-video-playback-rate">1&#xD7;</button><button class="kg-video-unmute-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/></svg></button><button class="kg-video-mute-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/></svg></button><input type="range" class="kg-video-volume-slider" max="100" value="100"></div></div></div></figure><img src="https://i.madethese.works/content/images/2023/05/Memester.png" alt="Memester"><p>As part of the <em>Online Multimedia </em>course at LMU Munich, two teammates and I designed and developed a full online meme platform over the course of one semester, using a NestJS backend for all social features, meme rendering and authentication, and an Angular frontend including a custom-built meme editor.</p><h2 id="features">Features</h2><p>Memester included a wide array of features, some of which are listed here:</p><ul><li>Custom WYSIWYG meme editor including templates from ImgFlip, custom templates, webcam photos and more.</li><li>Text editing and repositioning using drag and drop</li><li>Authentication</li><li>Full REST API to interact with the backend</li><li>Posting memes to a meme feed with social features (likes, comments, sharing...)</li><li>Open memes from the feed to remix them (remixed memes remember their history)</li><li>The backend generates a video slideshow from the most popular memes daily.</li></ul><p>The project received a perfect grade at the end of the course.</p><p>You can check out the source code on <a href="https://github.com/timcreatedit/memester?ref=i.madethese.works">GitHub</a></p>]]></content:encoded></item></channel></rss>