<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>SvelteKit on Maxime Moreillon</title>
    <link>https://articles.maximemoreillon.com/tags/sveltekit/</link>
    <description>Recent content in SvelteKit on Maxime Moreillon</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 25 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://articles.maximemoreillon.com/tags/sveltekit/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>MQTT Alarm Clock: a Cron Scheduler with a Web UI</title>
      <link>https://articles.maximemoreillon.com/articles/mqtt-alarm-clock/</link>
      <pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate>
      
      <guid>https://articles.maximemoreillon.com/articles/mqtt-alarm-clock/</guid>
      
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/maximemoreillon/mqtt-alarm-clock&#34;&gt;mqtt-alarm-clock&lt;/a&gt; is a small home project born from a practical worry: I often sleep with earplugs and fear I won&amp;rsquo;t hear a regular alarm clock. My bedroom lights, on the other hand, are controlled over MQTT, so instead of making a sound, an alarm in this app publishes a message to an MQTT broker and the lights do the waking up. The app itself stays down to a scheduler with a settings page, and what happens on a given message is up to whatever is subscribed to that topic.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Building a Client-Side Encrypted Chat App with SvelteKit and Firebase</title>
      <link>https://articles.maximemoreillon.com/articles/encrypted-chat/</link>
      <pubDate>Sat, 21 Mar 2026 00:00:00 +0000</pubDate>
      
      <guid>https://articles.maximemoreillon.com/articles/encrypted-chat/</guid>
      
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/maximemoreillon/encrypted-chat&#34;&gt;encrypted-chat&lt;/a&gt; is a small chat application built not as a secure messaging product but as a way to get hands-on with the Web Crypto API: what it actually takes to keep message content unreadable to the backend itself, rather than merely encrypting data in transit and at rest. The app is a SvelteKit frontend backed by Firebase: Firebase Authentication (Google sign-in) handles who can access the app, and Firestore stores chats and messages, but the messages Firestore holds are already ciphertext by the time they leave the browser.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Shared Countdown: a Small Firebase &#43; SvelteKit App</title>
      <link>https://articles.maximemoreillon.com/articles/shared-countdown/</link>
      <pubDate>Sat, 21 Mar 2026 00:00:00 +0000</pubDate>
      
      <guid>https://articles.maximemoreillon.com/articles/shared-countdown/</guid>
      
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/maximemoreillon/shared-countdown&#34;&gt;shared-countdown&lt;/a&gt; is a pet project built to poke at Firestore&amp;rsquo;s real-time sync rather than to fill some gap in the countdown-timer market: a countdown, plus the ability to share it with other people instead of it living only in your own browser tab. It&amp;rsquo;s a SvelteKit frontend on Firebase — Firebase Authentication for Google sign-in, Firestore for storage — and it reuses the same stack as &lt;a href=&#34;https://articles.maximemoreillon.com/articles/encrypted-chat/&#34;&gt;encrypted-chat&lt;/a&gt;, another small project built around SvelteKit and Firebase.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Tokun: Tracking Japanese Vocabulary Across Texts</title>
      <link>https://articles.maximemoreillon.com/articles/tokun/</link>
      <pubDate>Wed, 02 Apr 2025 00:00:00 +0000</pubDate>
      
      <guid>https://articles.maximemoreillon.com/articles/tokun/</guid>
      
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/maximemoreillon/tokun&#34;&gt;tokun&lt;/a&gt; is a pet project for learning Japanese from real texts: paste some Japanese in, and the app splits it into words and lets you mark which ones you know. It is a SvelteKit application storing its data in PostgreSQL through Drizzle ORM, and relying on &lt;a href=&#34;https://github.com/takuyaa/kuromoji.js&#34;&gt;kuromoji.js&lt;/a&gt; to do the actual language processing.&lt;/p&gt;
&lt;h2 id=&#34;how-it-works&#34;&gt;How it works&lt;/h2&gt;
&lt;p&gt;Japanese is written without spaces, so the first step is tokenization. When a text is submitted, kuromoji breaks it into tokens, each with its surface form (the word as written), part of speech and reading. The server stores the text, then registers every token. Tokens belong to a user and are deduplicated by surface form, so a word that appears in ten different texts is a single token linked to each text through a join table that also keeps its position. This is what makes the tracking useful: marking a word once applies to every text containing it.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
