Showing source for: https://tonoid.com/
Duration: 0.244702s
Server: cloudflare

<!DOCTYPE html>
<html class="bricolage_grotesque_1b97ba4b-module__NjNj1a__variable geistsans_d5a4f12f-module__Ur3q_a__variable" lang="en">
    <head>
        <meta charset="utf-8">
        <meta content="width=device-width, initial-scale=1" name="viewport">
        <link as="font" crossorigin="" href="/_next/static/media/017d9bea37084d9b-s.p.179.vsfvxa6t5.woff2" rel="preload" type="font/woff2">
        <link as="font" crossorigin="" href="/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2" rel="preload" type="font/woff2">
        <link as="image" href="/images/tonoid-dark.png" rel="preload">
        <link data-precedence="next" href="/_next/static/chunks/003a7.s2~qy_a.css" rel="stylesheet">
        <link as="script" fetchpriority="low" href="/_next/static/chunks/10vfgn4v1128_.js" rel="preload">
        <script async="" src="/_next/static/chunks/0nligd75l.cy4.js">
        </script>
        <script async="" src="/_next/static/chunks/02_xf8xz.22jb.js">
        </script>
        <script async="" src="/_next/static/chunks/0ajqdcbaje98m.js">
        </script>
        <script async="" src="/_next/static/chunks/turbopack-0f7vpst.txvos.js">
        </script>
        <script async="" src="/_next/static/chunks/04eklj-7j4aqp.js">
        </script>
        <script async="" src="/_next/static/chunks/0d3shmwh5_nmn.js">
        </script>
        <script async="" src="/_next/static/chunks/0ka051yepewro.js">
        </script>
        <link as="script" href="/plsb/js/script.js" rel="preload">
        <meta content="" name="next-size-adjust">
        <title>
            tono&iuml;d &middot; Microstartup studio
        </title>
        <meta content="A one-person studio shipping small, profitable software." name="description">
        <meta content="tono&iuml;d" name="application-name">
        <link href="https://tonoid.com" rel="author">
        <meta content="Simo Elalj" name="author">
        <meta content="tono&iuml;d,tonoid,Simo Elalj,microstartup,indie software,solo founder,bootstrapped,independent software studio" name="keywords">
        <meta content="Simo Elalj" name="creator">
        <meta content="tono&iuml;d" name="publisher">
        <meta content="index, follow" name="robots">
        <meta content="index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1" name="googlebot">
        <meta content="technology" name="category">
        <link href="https://tonoid.com" rel="canonical">
        <link href="https://tonoid.com" hreflang="en" rel="alternate">
        <link href="https://tonoid.com/fr" hreflang="fr" rel="alternate">
        <link href="https://tonoid.com" hreflang="x-default" rel="alternate">
        <meta content="tono&iuml;d &middot; Microstartup studio" property="og:title">
        <meta content="A one-person studio shipping small, profitable software." property="og:description">
        <meta content="https://tonoid.com" property="og:url">
        <meta content="tono&iuml;d" property="og:site_name">
        <meta content="en_US" property="og:locale">
        <meta content="https://tonoid.com/images/tonoid-light.png" property="og:image">
        <meta content="tono&iuml;d &middot; Microstartup studio" property="og:image:alt">
        <meta content="fr_FR" property="og:locale:alternate">
        <meta content="website" property="og:type">
        <meta content="summary_large_image" name="twitter:card">
        <meta content="tono&iuml;d &middot; Microstartup studio" name="twitter:title">
        <meta content="A one-person studio shipping small, profitable software." name="twitter:description">
        <meta content="https://tonoid.com/images/tonoid-light.png" name="twitter:image">
        <link href="/favicon.png" rel="icon">
        <script nomodule="" src="/_next/static/chunks/03~yq9q893hmn.js">
        </script>
    </head>
    <body class="font-sans">
        <div hidden="">
            <!--$-->
            <!--/$-->
        </div>
        <style>
            @keyframes tn-agb-float1 {
                0%
                   
                { transform: translate3d(0, 0, 0); }
                
                   
                25%
                  
                { transform: translate3d(6vw, -4vh, 0); }
                
                   
                50%
                  
                { transform: translate3d(-3vw, 5vh, 0); }
                
                   
                75%
                  
                { transform: translate3d(4vw, 2vh, 0); }
                
                   
                100%
                 
                { transform: translate3d(0, 0, 0); }
            }
            @keyframes tn-agb-float2 {
                0%
                   
                { transform: translate3d(0, 0, 0); }
                
                   
                30%
                  
                { transform: translate3d(-5vw, 4vh, 0); }
                
                   
                60%
                  
                { transform: translate3d(4vw, -5vh, 0); }
                
                   
                100%
                 
                { transform: translate3d(0, 0, 0); }
            }
            @keyframes tn-agb-shift {
                0%
                   
                { background-position: 0% 0%, 100% 100%, 50% 0%, 20% 100%; }
                
                   
                50%
                  
                { background-position: 10% 15%, 85% 85%, 55% 10%, 25% 90%; }
                
                   
                100%
                 
                { background-position: 0% 0%, 100% 100%, 50% 0%, 20% 100%; }
            }
            @keyframes tn-agb-breathe {
                0%
                ,
                 
                100%
                 
                { opacity: 0.55; }
                
                   
                50%
                      
                { opacity: 0.85; }
            }
            @media (prefers-reduced-motion: reduce) {
                [data-agb-base]
                ,
                 
                [data-agb-orb]
                 
                { animation: none !important; }
            }
        </style>
        <div aria-hidden="true" class="pointer-events-none fixed inset-0 -z-10 overflow-hidden">
            <div class="absolute inset-0" data-agb-base="true" style="background:radial-gradient(ellipse 100% 80% at 20% 15%, rgba(199, 194, 234, 0.22) 0%, transparent 60%),
              radial-gradient(ellipse 90% 80% at 85% 35%, rgba(45, 42, 74, 0.55) 0%, transparent 65%),
              radial-gradient(ellipse 110% 90% at 50% 100%, rgba(155, 149, 201, 0.18) 0%, transparent 60%),
              radial-gradient(ellipse 95% 70% at 10% 90%, rgba(199, 194, 234, 0.10) 0%, transparent 60%);background-size:140% 140%, 140% 140%, 140% 140%, 140% 140%;background-repeat:no-repeat;animation:tn-agb-shift 32s ease-in-out infinite">
            </div>
            <div class="absolute top-[10vh] left-[15vw] rounded-full will-change-transform" data-agb-orb="true" style="width:80vmax;height:80vmax;background:radial-gradient(closest-side, rgba(199, 194, 234, 0.18) 0%, rgba(199, 194, 234, 0.06) 45%, transparent 100%);filter:blur(120px);animation:tn-agb-float1 22s ease-in-out infinite, tn-agb-breathe 14s ease-in-out infinite">
            </div>
            <div class="absolute bottom-[5vh] right-[10vw] rounded-full will-change-transform" data-agb-orb="true" style="width:70vmax;height:70vmax;background:radial-gradient(closest-side, rgba(155, 149, 201, 0.14) 0%, rgba(155, 149, 201, 0.05) 45%, transparent 100%);filter:blur(120px);animation:tn-agb-float2 26s ease-in-out infinite">
            </div>
            <div class="absolute inset-0 opacity-[0.28] mix-blend-overlay" style="background-image:url(&quot;data:image/svg+xml,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.6' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E&quot;);background-size:120px 120px">
            </div>
        </div>
        <div class="flex min-h-screen flex-col">
            <header class="sticky top-0 z-40 backdrop-blur-xl backdrop-saturate-150 border-b" style="background:color-mix(in oklab, #1f1d2e 40%, transparent);border-color:rgba(228, 224, 243, 0.35)">
                <div class="mx-auto max-w-5xl px-5 sm:px-8">
                    <div class="flex h-16 items-center justify-between gap-4">
                        <a aria-label="tono&iuml;d home" class="flex items-center" href="/">
                            <img alt="tono&iuml;d" class="h-7 w-auto select-none" height="38" src="/images/tonoid-dark.png" width="99">
                        </a>
                        <nav class="hidden sm:flex items-center gap-8 text-sm">
                            <a class="text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] transition" href="/about">
                                About
                            </a>
                            <a class="text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] transition" href="/projects">
                                Projects
                            </a>
                            <a class="text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] transition" href="/open-source">
                                Open source
                            </a>
                            <a class="text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] transition" href="/contact">
                                Contact
                            </a>
                        </nav>
                        <a class="label-md inline-flex items-center justify-center h-8 min-w-10 px-2.5 rounded-md transition text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] hover:bg-[color:var(--color-surface-container-high)]" href="/fr" hreflang="fr" title="Switch to French">
                            FR
                        </a>
                    </div>
                    <nav class="sm:hidden flex gap-6 pb-3 text-sm overflow-x-auto">
                        <a class="text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] whitespace-nowrap" href="/about">
                            About
                        </a>
                        <a class="text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] whitespace-nowrap" href="/projects">
                            Projects
                        </a>
                        <a class="text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] whitespace-nowrap" href="/open-source">
                            Open source
                        </a>
                        <a class="text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] whitespace-nowrap" href="/contact">
                            Contact
                        </a>
                    </nav>
                </div>
            </header>
            <main class="mx-auto w-full max-w-5xl flex-1 px-5 sm:px-8 pt-10 sm:pt-14 pb-24">
                <section class="pt-16 sm:pt-24 pb-24 sm:pb-32 text-center">
                    <div class="mx-auto max-w-3xl flex flex-col items-center">
                        <div class="label-md">
                            Microstartup studio
                        </div>
                        <h1 class="display-lg mt-6 mx-auto">
                            Independent software, built to last.
                        </h1>
                        <p class="mt-10 max-w-lg mx-auto text-lg text-[color:var(--color-fg-muted)]">
                            tono&iuml;d is Simo Elalj's one-person studio, named after the French tonneau &agrave; id&eacute;es, a barrel of ideas. I pull a few out, build them lean, and run them for years. No investors, no roadmap theatre, no rush.
                        </p>
                        <div class="mt-10 flex flex-wrap justify-center gap-4">
                            <a class="btn-primary" href="/projects">
                                See the projects
                                <svg aria-hidden="true" fill="currentColor" height="18" role="presentation" viewBox="0 0 24 24" width="18" xmlns="http://www.w3.org/2000/svg">
                                    <path d="M14 16.94V12.94H5.08L5.05 10.93H14V6.94L19 11.94Z">
                                    </path>
                                </svg>
                            </a>
                            <a class="btn-secondary" href="/about">
                                About the studio
                            </a>
                        </div>
                    </div>
                </section>
                <section class="py-16 sm:py-20">
                    <div class="flex items-end justify-between gap-8 mb-12">
                        <h2 class="headline-md max-w-md text-[color:var(--color-fg)]">
                            Featured projects
                        </h2>
                        <a class="btn-ghost shrink-0" href="/projects">
                            All projects
                            <svg aria-hidden="true" fill="currentColor" height="16" role="presentation" viewBox="0 0 24 24" width="16" xmlns="http://www.w3.org/2000/svg">
                                <path d="M14 16.94V12.94H5.08L5.05 10.93H14V6.94L19 11.94Z">
                                </path>
                            </svg>
                        </a>
                    </div>
                    <div class="grid gap-6 sm:grid-cols-2 lg:grid-cols-3">
                        <a class="link-plain group block overflow-hidden rounded-xl bg-[color:var(--color-surface-container-low)] editorial-transition hover:bg-[color:var(--color-surface-container)]" href="/projects/refurbme">
                            <div class="aspect-[16/9] w-full overflow-hidden bg-[color:var(--color-surface-container)]">
                                <img alt="RefurbMe" class="h-full w-full object-cover opacity-85 editorial-transition group-hover:opacity-100 group-hover:scale-[1.02]" loading="lazy" src="/images/projects/refurbme.jpg">
                            </div>
                            <div class="p-8">
                                <div class="flex items-center justify-between gap-3">
                                    <span class="label-md inline-flex shrink-0 items-center gap-1.5 text-[color:var(--color-fg-muted)]">
                                        <span aria-hidden="true" class="h-1.5 w-1.5 rounded-full" style="background:var(--color-status-for-sale)">
                                        </span>
                                        For sale
                                    </span>
                                    <span class="label-md text-[color:var(--color-fg-whisper)]">
                                        2007
                                    </span>
                                </div>
                                <h3 class="mt-4 font-[family-name:var(--font-heading)] text-2xl font-semibold tracking-[-0.02em] text-[color:var(--color-fg)]">
                                    RefurbMe
                                </h3>
                                <p class="mt-3 text-[color:var(--color-fg-muted)] line-clamp-3">
                                    The largest Apple refurbished comparator. For sale, looking for a new owner.
                                </p>
                            </div>
                        </a>
                        <a class="link-plain group block overflow-hidden rounded-xl bg-[color:var(--color-surface-container-low)] editorial-transition hover:bg-[color:var(--color-surface-container)]" href="/projects/2sync">
                            <div class="aspect-[16/9] w-full overflow-hidden bg-[color:var(--color-surface-container)]">
                                <img alt="2sync" class="h-full w-full object-cover opacity-85 editorial-transition group-hover:opacity-100 group-hover:scale-[1.02]" loading="lazy" src="/images/projects/2sync.jpg">
                            </div>
                            <div class="p-8">
                                <div class="flex items-center justify-between gap-3">
                                    <span class="label-md inline-flex shrink-0 items-center gap-1.5 text-[color:var(--color-fg-muted)]">
                                        <span aria-hidden="true" class="h-1.5 w-1.5 rounded-full" style="background:var(--color-status-profitable)">
                                        </span>
                                        Profitable
                                    </span>
                                    <span class="label-md text-[color:var(--color-fg-whisper)]">
                                        2021
                                    </span>
                                </div>
                                <h3 class="mt-4 font-[family-name:var(--font-heading)] text-2xl font-semibold tracking-[-0.02em] text-[color:var(--color-fg)]">
                                    2sync
                                </h3>
                                <p class="mt-3 text-[color:var(--color-fg-muted)] line-clamp-3">
                                    Two-way sync between Notion and the apps you already use.
                                </p>
                            </div>
                        </a>
                        <a class="link-plain group block overflow-hidden rounded-xl bg-[color:var(--color-surface-container-low)] editorial-transition hover:bg-[color:var(--color-surface-container)]" href="/projects/exportin">
                            <div class="aspect-[16/9] w-full overflow-hidden bg-[color:var(--color-surface-container)]">
                                <img alt="ExportIn" class="h-full w-full object-cover opacity-85 editorial-transition group-hover:opacity-100 group-hover:scale-[1.02]" loading="lazy" src="/images/projects/exportin.jpg">
                            </div>
                            <div class="p-8">
                                <div class="flex items-center justify-between gap-3">
                                    <span class="label-md inline-flex shrink-0 items-center gap-1.5 text-[color:var(--color-fg-muted)]">
                                        <span aria-hidden="true" class="h-1.5 w-1.5 rounded-full" style="background:var(--color-status-live)">
                                        </span>
                                        Live
                                    </span>
                                    <span class="label-md text-[color:var(--color-fg-whisper)]">
                                        2026
                                    </span>
                                </div>
                                <h3 class="mt-4 font-[family-name:var(--font-heading)] text-2xl font-semibold tracking-[-0.02em] text-[color:var(--color-fg)]">
                                    ExportIn
                                </h3>
                                <p class="mt-3 text-[color:var(--color-fg-muted)] line-clamp-3">
                                    Chrome extension that gets your contacts' birthdays out of LinkedIn and Facebook, and your Instagram mutuals' profiles, so an AI agent can enrich your CRM. Free and open source.
                                </p>
                            </div>
                        </a>
                    </div>
                </section>
                <section class="py-16 sm:py-20">
                    <div class="flex items-end justify-between gap-8 mb-12">
                        <h2 class="headline-md max-w-md text-[color:var(--color-fg)]">
                            Open source
                        </h2>
                        <a class="btn-ghost shrink-0" href="/open-source">
                            All open source
                            <svg aria-hidden="true" fill="currentColor" height="16" role="presentation" viewBox="0 0 24 24" width="16" xmlns="http://www.w3.org/2000/svg">
                                <path d="M14 16.94V12.94H5.08L5.05 10.93H14V6.94L19 11.94Z">
                                </path>
                            </svg>
                        </a>
                    </div>
                    <div class="grid gap-6 sm:grid-cols-2 lg:grid-cols-3">
                        <a class="link-plain group block overflow-hidden rounded-xl bg-[color:var(--color-surface-container-low)] editorial-transition hover:bg-[color:var(--color-surface-container)]" href="/open-source/qonto-backup">
                            <div class="aspect-[16/9] w-full overflow-hidden bg-[color:var(--color-surface-container)]">
                                <img alt="Qonto Backup" class="h-full w-full object-cover opacity-85 editorial-transition group-hover:opacity-100 group-hover:scale-[1.02]" loading="lazy" src="/images/open-source/qonto-backup.jpg">
                            </div>
                            <div class="p-8">
                                <div class="flex items-center justify-between gap-3">
                                    <span class="label-md inline-flex shrink-0 items-center gap-1.5 text-[color:var(--color-fg-muted)]">
                                        <span aria-hidden="true" class="h-1.5 w-1.5 rounded-full" style="background:var(--color-status-live)">
                                        </span>
                                        Live
                                    </span>
                                    <span class="label-md text-[color:var(--color-fg-whisper)]">
                                        2026
                                    </span>
                                </div>
                                <h3 class="mt-4 font-[family-name:var(--font-heading)] text-2xl font-semibold tracking-[-0.02em] text-[color:var(--color-fg)]">
                                    Qonto Backup
                                </h3>
                                <p class="mt-3 text-[color:var(--color-fg-muted)] line-clamp-3">
                                    Self-hosted CLI that exports your full Qonto business account to local disk every night: transactions, attachments, and PAdES probative receipts. Runs as a Docker container or Node binary on a Synology NAS.
                                </p>
                            </div>
                        </a>
                        <a class="link-plain group block overflow-hidden rounded-xl bg-[color:var(--color-surface-container-low)] editorial-transition hover:bg-[color:var(--color-surface-container)]" href="/open-source/mongo-backup-s3">
                            <div class="aspect-[16/9] w-full overflow-hidden bg-[color:var(--color-surface-container)]">
                                <img alt="Mongo Backup S3" class="h-full w-full object-cover opacity-85 editorial-transition group-hover:opacity-100 group-hover:scale-[1.02]" loading="lazy" src="/images/open-source/mongo-backup-s3.png">
                            </div>
                            <div class="p-8">
                                <div class="flex items-center justify-between gap-3">
                                    <span class="label-md inline-flex shrink-0 items-center gap-1.5 text-[color:var(--color-fg-muted)]">
                                        <span aria-hidden="true" class="h-1.5 w-1.5 rounded-full" style="background:var(--color-status-live)">
                                        </span>
                                        Live
                                    </span>
                                    <span class="label-md text-[color:var(--color-fg-whisper)]">
                                        2026
                                    </span>
                                </div>
                                <h3 class="mt-4 font-[family-name:var(--font-heading)] text-2xl font-semibold tracking-[-0.02em] text-[color:var(--color-fg)]">
                                    Mongo Backup S3
                                </h3>
                                <p class="mt-3 text-[color:var(--color-fg-muted)] line-clamp-3">
                                    Small Alpine Docker image that backs up and restores MongoDB to any S3-compatible store (AWS S3, Backblaze B2, Cloudflare R2, MinIO, Wasabi), with age-based or grandfather-father-son retention. Driven by your existing cron.
                                </p>
                            </div>
                        </a>
                    </div>
                </section>
            </main>
            <footer class="mt-32 bg-[color:var(--color-surface-container-low)] shrink-0">
                <div class="mx-auto max-w-5xl px-5 sm:px-8 py-16 text-sm text-[color:var(--color-fg-muted)]">
                    <div class="grid gap-10 sm:grid-cols-[2fr_1fr] sm:items-end">
                        <div>
                            <img alt="tono&iuml;d" class="h-7 w-auto select-none h-8" height="38" src="/images/tonoid-dark.png" width="99">
                            <p class="mt-4 max-w-md text-[color:var(--color-fg-muted)]">
                                A one-person studio shipping small, profitable software.
                            </p>
                        </div>
                        <div class="flex sm:justify-end items-center gap-3">
                            <a aria-label="Email" class="inline-flex h-10 w-10 items-center justify-center rounded-full text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-primary)] hover:bg-[color:var(--color-surface-container-high)] transition" href="/cdn-cgi/l/email-protection#422a272e2e2d02362d2c2d2b266c212d2f">
                                <svg aria-hidden="true" fill="currentColor" height="20" role="presentation" viewBox="0 0 24 24" width="20" xmlns="http://www.w3.org/2000/svg">
                                    <path d="M22 6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6M20 6L12 11L4 6H20M20 18H4V8L12 13L20 8V18Z">
                                    </path>
                                </svg>
                            </a>
                            <a aria-label="GitHub" class="inline-flex h-10 w-10 items-center justify-center rounded-full text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-primary)] hover:bg-[color:var(--color-surface-container-high)] transition" href="https://github.com/tonoid" rel="noopener noreferrer" target="_blank">
                                <svg aria-hidden="true" fill="currentColor" height="20" role="presentation" viewBox="0 0 24 24" width="20" xmlns="http://www.w3.org/2000/svg">
                                    <path d="M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z">
                                    </path>
                                </svg>
                            </a>
                            <a aria-label="X" class="inline-flex h-10 w-10 items-center justify-center rounded-full text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-primary)] hover:bg-[color:var(--color-surface-container-high)] transition" href="https://x.com/simoelalj" rel="noopener noreferrer" target="_blank">
                                <svg aria-hidden="true" fill="currentColor" height="18" role="presentation" viewBox="0 0 24 24" width="18" xmlns="http://www.w3.org/2000/svg">
                                    <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z">
                                    </path>
                                </svg>
                            </a>
                            <a aria-label="LinkedIn" class="inline-flex h-10 w-10 items-center justify-center rounded-full text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-primary)] hover:bg-[color:var(--color-surface-container-high)] transition" href="https://www.linkedin.com/in/elalj" rel="noopener noreferrer" target="_blank">
                                <svg aria-hidden="true" fill="currentColor" height="20" role="presentation" viewBox="0 0 24 24" width="20" xmlns="http://www.w3.org/2000/svg">
                                    <path d="M19 3A2 2 0 0 1 21 5V19A2 2 0 0 1 19 21H5A2 2 0 0 1 3 19V5A2 2 0 0 1 5 3H19M18.5 18.5V13.2A3.26 3.26 0 0 0 15.24 9.94C14.39 9.94 13.4 10.46 12.92 11.24V10.13H10.13V18.5H12.92V13.57C12.92 12.8 13.54 12.17 14.31 12.17A1.4 1.4 0 0 1 15.71 13.57V18.5H18.5M6.88 8.56A1.68 1.68 0 0 0 8.56 6.88C8.56 5.95 7.81 5.19 6.88 5.19A1.69 1.69 0 0 0 5.19 6.88C5.19 7.81 5.95 8.56 6.88 8.56M8.27 18.5V10.13H5.5V18.5H8.27Z">
                                    </path>
                                </svg>
                            </a>
                        </div>
                    </div>
                    <div class="mt-16 flex flex-col gap-2 text-sm text-[color:var(--color-fg-muted)] md:flex-row md:items-center md:justify-between">
                        <p>
                            &copy; 2026 tono&iuml;d, a trademarked brand.
                            <!-- -->
       Made by
                            <!-- -->
       Simo Elalj
                            <!-- -->
       in Bordeaux
                            <span aria-label="French flag" role="img">
                                🇫🇷
                            </span>
                        </p>
                        <p>
                            On a
                            <a class="underline decoration-[color:var(--color-primary)]/30 underline-offset-2 text-[color:var(--color-primary)] hover:decoration-[color:var(--color-primary)]" href="https://www.refurb.me/refurbished/macbook/macbook-pro/m4-pro" rel="noopener noreferrer" target="_blank">
                                refurbished MacBook Pro M4 Pro
                            </a>
                            .
                        </p>
                    </div>
                    <p class="mt-2 text-xs text-[color:var(--color-fg-whisper)]">
                        tono&iuml;d SASU &middot; 879 475 788 RCS Versailles
                    </p>
                </div>
            </footer>
        </div>
        <!--$-->
        <!--/$-->
        <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js">
        </script>
        <script>
            (self.__next_s = self.__next_s || []).push([0,{
                "type": "application/ld+json",
                "children": "{\"@context\":\"https://schema.org\",\"@graph\":[{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"@id\":\"https://tonoid.com#organization\",\"name\":\"tonoïd\",\"alternateName\":\"tonoid\",\"url\":\"https://tonoid.com\",\"logo\":\"https://tonoid.com/images/tonoid-light.png\",\"image\":\"https://tonoid.com/images/tonoid-light.png\",\"description\":\"A one-person studio shipping small, profitable software.\",\"email\":\"[email protected]\",\"founder\":{\"@id\":\"https://tonoid.com#person\"},\"foundingDate\":\"2007\",\"sameAs\":[]},{\"@context\":\"https://schema.org\",\"@type\":\"Person\",\"@id\":\"https://tonoid.com#person\",\"name\":\"Simo Elalj\",\"url\":\"https://tonoid.com\",\"jobTitle\":\"Founder\",\"worksFor\":{\"@id\":\"https://tonoid.com#organization\"}},{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"@id\":\"https://tonoid.com#website\",\"url\":\"https://tonoid.com\",\"name\":\"tonoïd\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https://tonoid.com#organization\"},\"description\":\"A one-person studio shipping small, profitable software.\"}]}",
                "id": "ld-graph"
            }]);
        </script>
        <script async="" id="_R_" src="/_next/static/chunks/10vfgn4v1128_.js">
        </script>
        <script>
            (self.__next_f = self.__next_f || []).push([0]);
        </script>
        <script>
            self.__next_f.push([1,"1:\"$Sreact.fragment\"\n8:I[68027,[\"/_next/static/chunks/04eklj-7j4aqp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/003a7.s2~qy_a.css\",\"style\"]\n:HL[\"/_next/static/media/017d9bea37084d9b-s.p.179.vsfvxa6t5.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:T45f,\n        @keyframes tn-agb-float1 {\n          0%   { transform: translate3d(0, 0, 0); }\n          25%  { transform: translate3d(6vw, -4vh, 0); }\n          50%  { transform: translate3d(-3vw, 5vh, 0); }\n          75%  { transform: translate3d(4vw, 2vh, 0); }\n          100% { transform: translate3d(0, 0, 0); }\n        }\n        @keyframes tn-agb-float2 {\n          0%   { transform: translate3d(0, 0, 0); }\n          30%  { transform: translate3d(-5vw, 4vh, 0); }\n          60%  { transform: translate3d(4vw, -5vh, 0); }\n          100% { transform: translate3d(0, 0, 0); }\n        }\n        @keyframes tn-agb-shift {\n          0%   { background-position: 0% 0%, 100% 100%, 50% 0%, 20% 100%; }\n          50%  { background-position: 10% 15%, 85% 85%, 55% 10%, 25% 90%; }\n          100% { background-position: 0% 0%, 100% 100%, 50% 0%, 20% 100%; }\n        }\n        @keyframes tn-agb-breathe {\n          0%, 100% { opacity: 0.55; }\n          50%      { opacity: 0.85; }\n        }\n        @media (prefers-reduced-motion: reduce) {\n          [data-agb-base], [data-agb-orb] { animation: none !important; }\n        }\n        "]);
        </script>
        <script>
            self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/003a7.s2~qy_a.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/04eklj-7j4aqp.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"bricolage_grotesque_1b97ba4b-module__NjNj1a__variable geistsans_d5a4f12f-module__Ur3q_a__variable\",\"children\":[\"$\",\"body\",null,{\"className\":\"font-sans\",\"children\":[[[\"$\",\"style\",null,{\"children\":\"$2\"}],[\"$\",\"div\",null,{\"aria-hidden\":\"true\",\"className\":\"pointer-events-none fixed inset-0 -z-10 overflow-hidden\",\"children\":[[\"$\",\"div\",null,{\"data-agb-base\":true,\"className\":\"absolute inset-0\",\"style\":{\"background\":\"\\n              radial-gradient(ellipse 100% 80% at 20% 15%, rgba(199, 194, 234, 0.22) 0%, transparent 60%),\\n              radial-gradient(ellipse 90% 80% at 85% 35%, rgba(45, 42, 74, 0.55) 0%, transparent 65%),\\n              radial-gradient(ellipse 110% 90% at 50% 100%, rgba(155, 149, 201, 0.18) 0%, transparent 60%),\\n              radial-gradient(ellipse 95% 70% at 10% 90%, rgba(199, 194, 234, 0.10) 0%, transparent 60%)\\n            \",\"backgroundSize\":\"140% 140%, 140% 140%, 140% 140%, 140% 140%\",\"backgroundRepeat\":\"no-repeat\",\"animation\":\"tn-agb-shift 32s ease-in-out infinite\"}}],[\"$\",\"div\",null,{\"data-agb-orb\":true,\"className\":\"absolute top-[10vh] left-[15vw] rounded-full will-change-transform\",\"style\":{\"width\":\"80vmax\",\"height\":\"80vmax\",\"background\":\"radial-gradient(closest-side, rgba(199, 194, 234, 0.18) 0%, rgba(199, 194, 234, 0.06) 45%, transparent 100%)\",\"filter\":\"blur(120px)\",\"animation\":\"tn-agb-float1 22s ease-in-out infinite, tn-agb-breathe 14s ease-in-out infinite\"}}],[\"$\",\"div\",null,{\"data-agb-orb\":true,\"className\":\"absolute bottom-[5vh] right-[10vw] rounded-full will-change-transform\",\"style\":{\"width\":\"70vmax\",\"height\":\"70vmax\",\"background\":\"radial-gradient(closest-side, rgba(155, 149, 201, 0.14) 0%, rgba(155, 149, 201, 0.05) 45%, transparent 100%)\",\"filter\":\"blur(120px)\",\"animation\":\"tn-agb-float2 26s ease-in-out infinite\"}}],[\"$\",\"div\",null,{\"className\":\"absolute inset-0 opacity-[0.28] mix-blend-overlay\",\"style\":{\"backgroundImage\":\"url(\\\"data:image/svg+xml,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.6' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E\\\")\",\"backgroundSize\":\"120px 120px\"}}]]}]],\"$L3\",\"$L4\",\"$L5\"]}]}]]}],{\"children\":[\"$L6\",{},null,false,null]},null,false,null],\"$L7\",false]],\"m\":\"$undefined\",\"G\":[\"$8\",[\"$L9\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"YMEWryK06H3Q4CYpHlzTr\"}\n"]);
        </script>
        <script>
            self.__next_f.push([1,"a:I[39756,[\"/_next/static/chunks/04eklj-7j4aqp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\nb:I[37457,[\"/_next/static/chunks/04eklj-7j4aqp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\nc:I[22016,[\"/_next/static/chunks/04eklj-7j4aqp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0ka051yepewro.js\"],\"\"]\n13:I[79520,[\"/_next/static/chunks/04eklj-7j4aqp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"\"]\n1a:I[97367,[\"/_next/static/chunks/04eklj-7j4aqp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"ViewportBoundary\"]\n1c:I[97367,[\"/_next/static/chunks/04eklj-7j4aqp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"MetadataBoundary\"]\n1d:\"$Sreact.suspense\"\n:HL[\"/images/tonoid-dark.png\",\"image\"]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"3:[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"div\",null,{\"className\":\"flex min-h-screen flex-col\",\"children\":[[\"$\",\"header\",null,{\"className\":\"sticky top-0 z-40 backdrop-blur-xl backdrop-saturate-150 border-b\",\"style\":{\"background\":\"color-mix(in oklab, #1f1d2e 40%, transparent)\",\"borderColor\":\"rgba(228, 224, 243, 0.35)\"},\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-5xl px-5 sm:px-8\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex h-16 items-center justify-between gap-4\",\"children\":[[\"$\",\"$Lc\",null,{\"href\":\"/\",\"className\":\"flex items-center\",\"aria-label\":\"tonoïd home\",\"children\":[\"$\",\"img\",null,{\"src\":\"/images/tonoid-dark.png\",\"alt\":\"tonoïd\",\"width\":99,\"height\":38,\"className\":\"h-7 w-auto select-none \"}]}],[\"$\",\"nav\",null,{\"className\":\"hidden sm:flex items-center gap-8 text-sm\",\"children\":[[\"$\",\"$Lc\",\"about\",{\"href\":\"/about\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] transition\",\"children\":\"About\"}],[\"$\",\"$Lc\",\"projects\",{\"href\":\"/projects\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] transition\",\"children\":\"Projects\"}],[\"$\",\"$Lc\",\"open-source\",{\"href\":\"/open-source\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] transition\",\"children\":\"Open source\"}],[\"$\",\"$Lc\",\"contact\",{\"href\":\"/contact\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] transition\",\"children\":\"Contact\"}]]}],[\"$\",\"$Lc\",null,{\"href\":\"/fr\",\"hrefLang\":\"fr\",\"title\":\"Switch to French\",\"className\":\"label-md inline-flex items-center justify-center h-8 min-w-10 px-2.5 rounded-md transition text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] hover:bg-[color:var(--color-surface-container-high)]\",\"children\":\"FR\"}]]}],[\"$\",\"nav\",null,{\"className\":\"sm:hidden flex gap-6 pb-3 text-sm overflow-x-auto\",\"children\":[[\"$\",\"$Lc\",\"about\",{\"href\":\"/about\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] whitespace-nowrap\",\"children\":\"About\"}],[\"$\",\"$Lc\",\"projects\",{\"href\":\"/projects\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] whitespace-nowrap\",\"children\":\"Projects\"}],[\"$\",\"$Lc\",\"open-source\",{\"href\":\"/open-source\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] whitespace-nowrap\",\"children\":\"Open source\"}],[\"$\",\"$Lc\",\"contact\",{\"href\":\"/contact\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] whitespace-nowrap\",\"children\":\"Contact\"}]]}]]}]}],[\"$\",\"main\",null,{\"className\":\"mx-auto w-full max-w-5xl flex-1 px-5 sm:px-8 pt-10 sm:pt-14 pb-24\",\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-xl pt-16 sm:pt-24\",\"children\":[[\"$\",\"div\",null,{\"className\":\"label-md\",\"children\":\"404\"}],[\"$\",\"h1\",null,{\"className\":\"mt-6 display-lg\",\"children\":\"Page not found\"}],[\"$\",\"p\",null,{\"className\":\"mt-6 text-lg text-[color:var(--color-fg-muted)]\",\"children\":\"That page doesn't exist. The home page is probably a better bet.\"}],[\"$\",\"$Lc\",null,{\"href\":\"/\",\"className\":\"btn-primary mt-10\",\"children\":\"Back home\"}]]}]}],[\"$\",\"footer\",null,{\"className\":\"mt-32 bg-[color:var(--color-surface-container-low)] shrink-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-5xl px-5 sm:px-8 py-16 text-sm text-[color:var(--color-fg-muted)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"grid gap-10 sm:grid-cols-[2fr_1fr] sm:items-end\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"img\",null,{\"src\":\"/images/tonoid-dark.png\",\"alt\":\"tonoïd\",\"width\":99,\"height\":38,\"className\":\"h-7 w-auto select-none h-8\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 max-w-md text-[color:var(--color-fg-muted)]\",\"children\":\"A one-person studio shipping small, profitable software.\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex sm:justify-end items-center gap-3\",\"children\":[[\"$\",\"a\",null,{\"href\":\"mailto:[email protected]\",\"aria-label\":\"Email\",\"className\":\"inline-flex h-10 w-10 items-center justify-center rounded-full text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-primary)] hover:bg-[color:var(--color-surface-container-high)] transition\",\"children\":\"$Ld\"}],\"$Le\",\"$Lf\",\"$L10\"]}]]}],\"$L11\",\"$L12\"]}]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"4:[\"$\",\"$L13\",null,{\"id\":\"ld-graph\",\"type\":\"application/ld+json\",\"strategy\":\"beforeInteractive\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@graph\\\":[{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Organization\\\",\\\"@id\\\":\\\"https://tonoid.com#organization\\\",\\\"name\\\":\\\"tonoïd\\\",\\\"alternateName\\\":\\\"tonoid\\\",\\\"url\\\":\\\"https://tonoid.com\\\",\\\"logo\\\":\\\"https://tonoid.com/images/tonoid-light.png\\\",\\\"image\\\":\\\"https://tonoid.com/images/tonoid-light.png\\\",\\\"description\\\":\\\"A one-person studio shipping small, profitable software.\\\",\\\"email\\\":\\\"[email protected]\\\",\\\"founder\\\":{\\\"@id\\\":\\\"https://tonoid.com#person\\\"},\\\"foundingDate\\\":\\\"2007\\\",\\\"sameAs\\\":[]},{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"Person\\\",\\\"@id\\\":\\\"https://tonoid.com#person\\\",\\\"name\\\":\\\"Simo Elalj\\\",\\\"url\\\":\\\"https://tonoid.com\\\",\\\"jobTitle\\\":\\\"Founder\\\",\\\"worksFor\\\":{\\\"@id\\\":\\\"https://tonoid.com#organization\\\"}},{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"WebSite\\\",\\\"@id\\\":\\\"https://tonoid.com#website\\\",\\\"url\\\":\\\"https://tonoid.com\\\",\\\"name\\\":\\\"tonoïd\\\",\\\"inLanguage\\\":\\\"en-US\\\",\\\"publisher\\\":{\\\"@id\\\":\\\"https://tonoid.com#organization\\\"},\\\"description\\\":\\\"A one-person studio shipping small, profitable software.\\\"}]}\"}}]\n5:[\"$\",\"$L13\",null,{\"defer\":true,\"data-domain\":\"tonoid.com\",\"data-api\":\"/plsb/api/event\",\"src\":\"/plsb/js/script.js\"}]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"6:[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"div\",null,{\"className\":\"flex min-h-screen flex-col\",\"children\":[[\"$\",\"header\",null,{\"className\":\"sticky top-0 z-40 backdrop-blur-xl backdrop-saturate-150 border-b\",\"style\":{\"background\":\"color-mix(in oklab, #1f1d2e 40%, transparent)\",\"borderColor\":\"rgba(228, 224, 243, 0.35)\"},\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-5xl px-5 sm:px-8\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex h-16 items-center justify-between gap-4\",\"children\":[[\"$\",\"$Lc\",null,{\"href\":\"/\",\"className\":\"flex items-center\",\"aria-label\":\"tonoïd home\",\"children\":[\"$\",\"img\",null,{\"src\":\"/images/tonoid-dark.png\",\"alt\":\"tonoïd\",\"width\":99,\"height\":38,\"className\":\"h-7 w-auto select-none \"}]}],[\"$\",\"nav\",null,{\"className\":\"hidden sm:flex items-center gap-8 text-sm\",\"children\":[[\"$\",\"$Lc\",\"about\",{\"href\":\"/about\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] transition\",\"children\":\"About\"}],[\"$\",\"$Lc\",\"projects\",{\"href\":\"/projects\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] transition\",\"children\":\"Projects\"}],[\"$\",\"$Lc\",\"open-source\",{\"href\":\"/open-source\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] transition\",\"children\":\"Open source\"}],[\"$\",\"$Lc\",\"contact\",{\"href\":\"/contact\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] transition\",\"children\":\"Contact\"}]]}],[\"$\",\"$Lc\",null,{\"href\":\"/fr\",\"hrefLang\":\"fr\",\"title\":\"Switch to French\",\"className\":\"label-md inline-flex items-center justify-center h-8 min-w-10 px-2.5 rounded-md transition text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] hover:bg-[color:var(--color-surface-container-high)]\",\"children\":\"FR\"}]]}],[\"$\",\"nav\",null,{\"className\":\"sm:hidden flex gap-6 pb-3 text-sm overflow-x-auto\",\"children\":[[\"$\",\"$Lc\",\"about\",{\"href\":\"/about\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] whitespace-nowrap\",\"children\":\"About\"}],[\"$\",\"$Lc\",\"projects\",{\"href\":\"/projects\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] whitespace-nowrap\",\"children\":\"Projects\"}],[\"$\",\"$Lc\",\"open-source\",{\"href\":\"/open-source\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] whitespace-nowrap\",\"children\":\"Open source\"}],[\"$\",\"$Lc\",\"contact\",{\"href\":\"/contact\",\"className\":\"text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-fg)] whitespace-nowrap\",\"children\":\"Contact\"}]]}]]}]}],[\"$\",\"main\",null,{\"className\":\"mx-auto w-full max-w-5xl flex-1 px-5 sm:px-8 pt-10 sm:pt-14 pb-24\",\"children\":[[\"$\",\"section\",null,{\"className\":\"pt-16 sm:pt-24 pb-24 sm:pb-32 text-center\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-3xl flex flex-col items-center\",\"children\":[[\"$\",\"div\",null,{\"className\":\"label-md\",\"children\":\"Microstartup studio\"}],[\"$\",\"h1\",null,{\"className\":\"display-lg mt-6 mx-auto\",\"children\":\"Independent software, built to last.\"}],[\"$\",\"p\",null,{\"className\":\"mt-10 max-w-lg mx-auto text-lg text-[color:var(--color-fg-muted)]\",\"children\":\"tonoïd is Simo Elalj's one-person studio, named after the French tonneau à idées, a barrel of ideas. I pull a few out, build them lean, and run them for years. No investors, no roadmap theatre, no rush.\"}],[\"$\",\"div\",null,{\"className\":\"mt-10 flex flex-wrap justify-center gap-4\",\"children\":[[\"$\",\"$Lc\",null,{\"href\":\"/projects\",\"className\":\"btn-primary\",\"children\":[\"See the projects\",[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":18,\"height\":18,\"className\":\"$undefined\",\"role\":\"presentation\",\"aria-label\":\"$undefined\",\"aria-hidden\":true,\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M14 16.94V12.94H5.08L5.05 10.93H14V6.94L19 11.94Z\"}]}]]}],[\"$\",\"$Lc\",null,{\"href\":\"/about\",\"className\":\"btn-secondary\",\"children\":\"About the studio\"}]]}]]}]}],[\"$\",\"section\",null,{\"className\":\"py-16 sm:py-20\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-end justify-between gap-8 mb-12\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"headline-md max-w-md text-[color:var(--color-fg)]\",\"children\":\"Featured projects\"}],\"$L14\"]}],\"$L15\"]}],\"$L16\"]}],\"$L17\"]}],[\"$L18\"],\"$L19\"]}]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"7:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L1a\",null,{\"children\":\"$L1b\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L1c\",null,{\"children\":[\"$\",\"$1d\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1e\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n9:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/003a7.s2~qy_a.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"24:I[97367,[\"/_next/static/chunks/04eklj-7j4aqp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"OutletBoundary\"]\nd:[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":20,\"height\":20,\"className\":\"$undefined\",\"role\":\"presentation\",\"aria-label\":\"$undefined\",\"aria-hidden\":true,\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M22 6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6M20 6L12 11L4 6H20M20 18H4V8L12 13L20 8V18Z\"}]}]\ne:[\"$\",\"a\",null,{\"href\":\"https://github.com/tonoid\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"aria-label\":\"GitHub\",\"className\":\"inline-flex h-10 w-10 items-center justify-center rounded-full text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-primary)] hover:bg-[color:var(--color-surface-container-high)] transition\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":20,\"height\":20,\"className\":\"$undefined\",\"role\":\"presentation\",\"aria-label\":\"$undefined\",\"aria-hidden\":true,\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z\"}]}]}]\nf:[\"$\",\"a\",null,{\"href\":\"https://x.com/simoelalj\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"aria-label\":\"X\",\"className\":\"inline-flex h-10 w-10 items-center justify-center rounded-full text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-primary)] hover:bg-[color:var(--color-surface-container-high)] transition\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":18,\"height\":18,\"className\":\"$undefined\",\"role\":\"presentation\",\"aria-label\":\"$undefined\",\"aria-hidden\":true,\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\"}]}]}]\n10:[\"$\",\"a\",null,{\"href\":\"https://www.linkedin.com/in/elalj\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"aria-label\":\"LinkedIn\",\"className\":\"inline-flex h-10 w-10 items-center justify-center rounded-full text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-primary)] hover:bg-[color:var(--color-surface-container-high)] transition\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":20,\"height\":20,\"className\":\"$undefined\",\"role\":\"presentation\",\"aria-label\":\"$undefined\",\"aria-hidden\":true,\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M19 3A2 2 0 0 1 21 5V19A2 2 0 0 1 19 21H5A2 2 0 0 1 3 19V5A2 2 0 0 1 5 3H19M18.5 18.5V13.2A3.26 3.26 0 0 0 15.24 9.94C14.39 9.94 13.4 10.46 12.92 11.24V10.13H10.13V18.5H12.92V13.57C12.92 12.8 13.54 12.17 14.31 12.17A1.4 1.4 0 0 1 15.71 13.57V18.5H18.5M6.88 8.56A1.68 1.68 0 0 0 8.56 6.88C8.56 5.95 7.81 5.19 6.88 5.19A1.69 1.69 0 0 0 5.19 6.88C5.19 7.81 5.95 8.56 6.88 8.56M8.27 18.5V10.13H5.5V18.5H8.27Z\"}]}]}]\n11:[\"$\",\"div\",null,{\"className\":\"mt-16 flex flex-col gap-2 text-sm text-[color:var(--color-fg-muted)] md:flex-row md:items-center md:justify-between\",\"children\":[[\"$\",\"p\",null,{\"children\":[\"© 2026 tonoïd, a trademarked brand. \",\"Made by \",\"Simo Elalj\",\" in Bordeaux \",[\"$\",\"span\",null,{\"aria-label\":\"French flag\",\"role\":\"img\",\"children\":\"🇫🇷\"}]]}],[\"$\",\"p\",null,{\"children\":[\"On a \",[\"$\",\"a\",null,{\"className\":\"underline decoration-[color:var(--color-primary)]/30 underline"]);
        </script>
        <script>
            self.__next_f.push([1,"-offset-2 text-[color:var(--color-primary)] hover:decoration-[color:var(--color-primary)]\",\"href\":\"https://www.refurb.me/refurbished/macbook/macbook-pro/m4-pro\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":\"refurbished MacBook Pro M4 Pro\"}],\".\"]}]]}]\n12:[\"$\",\"p\",null,{\"className\":\"mt-2 text-xs text-[color:var(--color-fg-whisper)]\",\"children\":\"tonoïd SASU · 879 475 788 RCS Versailles\"}]\n14:[\"$\",\"$Lc\",null,{\"href\":\"/projects\",\"className\":\"btn-ghost shrink-0\",\"children\":[\"All projects\",[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":16,\"height\":16,\"className\":\"$undefined\",\"role\":\"presentation\",\"aria-label\":\"$undefined\",\"aria-hidden\":true,\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M14 16.94V12.94H5.08L5.05 10.93H14V6.94L19 11.94Z\"}]}]]}]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"15:[\"$\",\"div\",null,{\"className\":\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\",\"children\":[[\"$\",\"$Lc\",\"refurbme\",{\"href\":\"/projects/refurbme\",\"className\":\"link-plain group block overflow-hidden rounded-xl bg-[color:var(--color-surface-container-low)] editorial-transition hover:bg-[color:var(--color-surface-container)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"aspect-[16/9] w-full overflow-hidden bg-[color:var(--color-surface-container)]\",\"children\":[\"$\",\"img\",null,{\"src\":\"/images/projects/refurbme.jpg\",\"alt\":\"RefurbMe\",\"loading\":\"lazy\",\"className\":\"h-full w-full object-cover opacity-85 editorial-transition group-hover:opacity-100 group-hover:scale-[1.02]\"}]}],[\"$\",\"div\",null,{\"className\":\"p-8\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"label-md inline-flex shrink-0 items-center gap-1.5 text-[color:var(--color-fg-muted)]\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"h-1.5 w-1.5 rounded-full\",\"style\":{\"background\":\"var(--color-status-for-sale)\"}}],\"For sale\"]}],[\"$\",\"span\",null,{\"className\":\"label-md text-[color:var(--color-fg-whisper)]\",\"children\":2007}]]}],[\"$\",\"h3\",null,{\"className\":\"mt-4 font-[family-name:var(--font-heading)] text-2xl font-semibold tracking-[-0.02em] text-[color:var(--color-fg)]\",\"children\":\"RefurbMe\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-[color:var(--color-fg-muted)] line-clamp-3\",\"children\":\"The largest Apple refurbished comparator. For sale, looking for a new owner.\"}]]}]]}],[\"$\",\"$Lc\",\"2sync\",{\"href\":\"/projects/2sync\",\"className\":\"link-plain group block overflow-hidden rounded-xl bg-[color:var(--color-surface-container-low)] editorial-transition hover:bg-[color:var(--color-surface-container)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"aspect-[16/9] w-full overflow-hidden bg-[color:var(--color-surface-container)]\",\"children\":[\"$\",\"img\",null,{\"src\":\"/images/projects/2sync.jpg\",\"alt\":\"2sync\",\"loading\":\"lazy\",\"className\":\"h-full w-full object-cover opacity-85 editorial-transition group-hover:opacity-100 group-hover:scale-[1.02]\"}]}],[\"$\",\"div\",null,{\"className\":\"p-8\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"label-md inline-flex shrink-0 items-center gap-1.5 text-[color:var(--color-fg-muted)]\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"h-1.5 w-1.5 rounded-full\",\"style\":{\"background\":\"var(--color-status-profitable)\"}}],\"Profitable\"]}],[\"$\",\"span\",null,{\"className\":\"label-md text-[color:var(--color-fg-whisper)]\",\"children\":2021}]]}],[\"$\",\"h3\",null,{\"className\":\"mt-4 font-[family-name:var(--font-heading)] text-2xl font-semibold tracking-[-0.02em] text-[color:var(--color-fg)]\",\"children\":\"2sync\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-[color:var(--color-fg-muted)] line-clamp-3\",\"children\":\"Two-way sync between Notion and the apps you already use.\"}]]}]]}],[\"$\",\"$Lc\",\"exportin\",{\"href\":\"/projects/exportin\",\"className\":\"link-plain group block overflow-hidden rounded-xl bg-[color:var(--color-surface-container-low)] editorial-transition hover:bg-[color:var(--color-surface-container)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"aspect-[16/9] w-full overflow-hidden bg-[color:var(--color-surface-container)]\",\"children\":[\"$\",\"img\",null,{\"src\":\"/images/projects/exportin.jpg\",\"alt\":\"ExportIn\",\"loading\":\"lazy\",\"className\":\"h-full w-full object-cover opacity-85 editorial-transition group-hover:opacity-100 group-hover:scale-[1.02]\"}]}],[\"$\",\"div\",null,{\"className\":\"p-8\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"label-md inline-flex shrink-0 items-center gap-1.5 text-[color:var(--color-fg-muted)]\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"h-1.5 w-1.5 rounded-full\",\"style\":{\"background\":\"var(--color-status-live)\"}}],\"Live\"]}],[\"$\",\"span\",null,{\"className\":\"label-md text-[color:var(--color-fg-whisper)]\",\"children\":2026}]]}],\"$L1f\",\"$L20\"]}]]}]]}]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"16:[\"$\",\"section\",null,{\"className\":\"py-16 sm:py-20\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-end justify-between gap-8 mb-12\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"headline-md max-w-md text-[color:var(--color-fg)]\",\"children\":\"Open source\"}],[\"$\",\"$Lc\",null,{\"href\":\"/open-source\",\"className\":\"btn-ghost shrink-0\",\"children\":[\"All open source\",[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":16,\"height\":16,\"className\":\"$undefined\",\"role\":\"presentation\",\"aria-label\":\"$undefined\",\"aria-hidden\":true,\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M14 16.94V12.94H5.08L5.05 10.93H14V6.94L19 11.94Z\"}]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\",\"children\":[[\"$\",\"$Lc\",\"qonto-backup\",{\"href\":\"/open-source/qonto-backup\",\"className\":\"link-plain group block overflow-hidden rounded-xl bg-[color:var(--color-surface-container-low)] editorial-transition hover:bg-[color:var(--color-surface-container)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"aspect-[16/9] w-full overflow-hidden bg-[color:var(--color-surface-container)]\",\"children\":[\"$\",\"img\",null,{\"src\":\"/images/open-source/qonto-backup.jpg\",\"alt\":\"Qonto Backup\",\"loading\":\"lazy\",\"className\":\"h-full w-full object-cover opacity-85 editorial-transition group-hover:opacity-100 group-hover:scale-[1.02]\"}]}],[\"$\",\"div\",null,{\"className\":\"p-8\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"label-md inline-flex shrink-0 items-center gap-1.5 text-[color:var(--color-fg-muted)]\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"h-1.5 w-1.5 rounded-full\",\"style\":{\"background\":\"var(--color-status-live)\"}}],\"Live\"]}],[\"$\",\"span\",null,{\"className\":\"label-md text-[color:var(--color-fg-whisper)]\",\"children\":2026}]]}],[\"$\",\"h3\",null,{\"className\":\"mt-4 font-[family-name:var(--font-heading)] text-2xl font-semibold tracking-[-0.02em] text-[color:var(--color-fg)]\",\"children\":\"Qonto Backup\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-[color:var(--color-fg-muted)] line-clamp-3\",\"children\":\"Self-hosted CLI that exports your full Qonto business account to local disk every night: transactions, attachments, and PAdES probative receipts. Runs as a Docker container or Node binary on a Synology NAS.\"}]]}]]}],[\"$\",\"$Lc\",\"mongo-backup-s3\",{\"href\":\"/open-source/mongo-backup-s3\",\"className\":\"link-plain group block overflow-hidden rounded-xl bg-[color:var(--color-surface-container-low)] editorial-transition hover:bg-[color:var(--color-surface-container)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"aspect-[16/9] w-full overflow-hidden bg-[color:var(--color-surface-container)]\",\"children\":[\"$\",\"img\",null,{\"src\":\"/images/open-source/mongo-backup-s3.png\",\"alt\":\"Mongo Backup S3\",\"loading\":\"lazy\",\"className\":\"h-full w-full object-cover opacity-85 editorial-transition group-hover:opacity-100 group-hover:scale-[1.02]\"}]}],[\"$\",\"div\",null,{\"className\":\"p-8\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-3\",\"children\":[[\"$\",\"span\",null,{\"className\":\"label-md inline-flex shrink-0 items-center gap-1.5 text-[color:var(--color-fg-muted)]\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"h-1.5 w-1.5 rounded-full\",\"style\":{\"background\":\"var(--color-status-live)\"}}],\"Live\"]}],[\"$\",\"span\",null,{\"className\":\"label-md text-[color:var(--color-fg-whisper)]\",\"children\":2026}]]}],[\"$\",\"h3\",null,{\"className\":\"mt-4 font-[family-name:var(--font-heading)] text-2xl font-semibold tracking-[-0.02em] text-[color:var(--color-fg)]\",\"children\":\"Mongo Backup S3\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-[color:var(--color-fg-muted)] line-clamp-3\",\"children\":\"Small Alpine Docker image that backs up and restores MongoDB to any S3-compatible store (AWS S3, Backblaze B2, Cloudflare R2, MinIO, Wasabi), with age-based or grandfather-father-son retention. Driven by your existing cron.\"}]]}]]}]]}]]}]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"17:[\"$\",\"footer\",null,{\"className\":\"mt-32 bg-[color:var(--color-surface-container-low)] shrink-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-5xl px-5 sm:px-8 py-16 text-sm text-[color:var(--color-fg-muted)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"grid gap-10 sm:grid-cols-[2fr_1fr] sm:items-end\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"img\",null,{\"src\":\"/images/tonoid-dark.png\",\"alt\":\"tonoïd\",\"width\":99,\"height\":38,\"className\":\"h-7 w-auto select-none h-8\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 max-w-md text-[color:var(--color-fg-muted)]\",\"children\":\"A one-person studio shipping small, profitable software.\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex sm:justify-end items-center gap-3\",\"children\":[[\"$\",\"a\",null,{\"href\":\"mailto:[email protected]\",\"aria-label\":\"Email\",\"className\":\"inline-flex h-10 w-10 items-center justify-center rounded-full text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-primary)] hover:bg-[color:var(--color-surface-container-high)] transition\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":20,\"height\":20,\"className\":\"$undefined\",\"role\":\"presentation\",\"aria-label\":\"$undefined\",\"aria-hidden\":true,\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M22 6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6M20 6L12 11L4 6H20M20 18H4V8L12 13L20 8V18Z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://github.com/tonoid\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"aria-label\":\"GitHub\",\"className\":\"inline-flex h-10 w-10 items-center justify-center rounded-full text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-primary)] hover:bg-[color:var(--color-surface-container-high)] transition\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":20,\"height\":20,\"className\":\"$undefined\",\"role\":\"presentation\",\"aria-label\":\"$undefined\",\"aria-hidden\":true,\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://x.com/simoelalj\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"aria-label\":\"X\",\"className\":\"inline-flex h-10 w-10 items-center justify-center rounded-full text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-primary)] hover:bg-[color:var(--color-surface-container-high)] transition\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":18,\"height\":18,\"className\":\"$undefined\",\"role\":\"presentation\",\"aria-label\":\"$undefined\",\"aria-hidden\":true,\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://www.linkedin.com/in/elalj\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"aria-label\":\"LinkedIn\",\"className\":\"inline-flex h-10 w-10 items-center justify-center rounded-full text-[color:var(--color-fg-muted)] hover:text-[color:var(--color-primary)] hover:bg-[color:var(--color-surface-container-high)] transition\",\"children\":\"$L21\"}]]}]]}],\"$L22\",\"$L23\"]}]}]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"18:[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0ka051yepewro.js\",\"async\":true,\"nonce\":\"$undefined\"}]\n19:[\"$\",\"$L24\",null,{\"children\":[\"$\",\"$1d\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@25\"}]}]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"1f:[\"$\",\"h3\",null,{\"className\":\"mt-4 font-[family-name:var(--font-heading)] text-2xl font-semibold tracking-[-0.02em] text-[color:var(--color-fg)]\",\"children\":\"ExportIn\"}]\n20:[\"$\",\"p\",null,{\"className\":\"mt-3 text-[color:var(--color-fg-muted)] line-clamp-3\",\"children\":\"Chrome extension that gets your contacts' birthdays out of LinkedIn and Facebook, and your Instagram mutuals' profiles, so an AI agent can enrich your CRM. Free and open source.\"}]\n21:[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":20,\"height\":20,\"className\":\"$undefined\",\"role\":\"presentation\",\"aria-label\":\"$undefined\",\"aria-hidden\":true,\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M19 3A2 2 0 0 1 21 5V19A2 2 0 0 1 19 21H5A2 2 0 0 1 3 19V5A2 2 0 0 1 5 3H19M18.5 18.5V13.2A3.26 3.26 0 0 0 15.24 9.94C14.39 9.94 13.4 10.46 12.92 11.24V10.13H10.13V18.5H12.92V13.57C12.92 12.8 13.54 12.17 14.31 12.17A1.4 1.4 0 0 1 15.71 13.57V18.5H18.5M6.88 8.56A1.68 1.68 0 0 0 8.56 6.88C8.56 5.95 7.81 5.19 6.88 5.19A1.69 1.69 0 0 0 5.19 6.88C5.19 7.81 5.95 8.56 6.88 8.56M8.27 18.5V10.13H5.5V18.5H8.27Z\"}]}]\n22:[\"$\",\"div\",null,{\"className\":\"mt-16 flex flex-col gap-2 text-sm text-[color:var(--color-fg-muted)] md:flex-row md:items-center md:justify-between\",\"children\":[[\"$\",\"p\",null,{\"children\":[\"© 2026 tonoïd, a trademarked brand. \",\"Made by \",\"Simo Elalj\",\" in Bordeaux \",[\"$\",\"span\",null,{\"aria-label\":\"French flag\",\"role\":\"img\",\"children\":\"🇫🇷\"}]]}],[\"$\",\"p\",null,{\"children\":[\"On a \",[\"$\",\"a\",null,{\"className\":\"underline decoration-[color:var(--color-primary)]/30 underline-offset-2 text-[color:var(--color-primary)] hover:decoration-[color:var(--color-primary)]\",\"href\":\"https://www.refurb.me/refurbished/macbook/macbook-pro/m4-pro\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":\"refurbished MacBook Pro M4 Pro\"}],\".\"]}]]}]\n23:[\"$\",\"p\",null,{\"className\":\"mt-2 text-xs text-[color:var(--color-fg-whisper)]\",\"children\":\"tonoïd SASU · 879 475 788 RCS Versailles\"}]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"1b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"26:I[27201,[\"/_next/static/chunks/04eklj-7j4aqp.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"IconMark\"]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"1e:[[\"$\",\"title\",\"0\",{\"children\":\"tonoïd · Microstartup studio\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A one-person studio shipping small, profitable software.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"tonoïd\"}],[\"$\",\"link\",\"3\",{\"rel\":\"author\",\"href\":\"https://tonoid.com\"}],[\"$\",\"meta\",\"4\",{\"name\":\"author\",\"content\":\"Simo Elalj\"}],[\"$\",\"meta\",\"5\",{\"name\":\"keywords\",\"content\":\"tonoïd,tonoid,Simo Elalj,microstartup,indie software,solo founder,bootstrapped,independent software studio\"}],[\"$\",\"meta\",\"6\",{\"name\":\"creator\",\"content\":\"Simo Elalj\"}],[\"$\",\"meta\",\"7\",{\"name\":\"publisher\",\"content\":\"tonoïd\"}],[\"$\",\"meta\",\"8\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"9\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"meta\",\"10\",{\"name\":\"category\",\"content\":\"technology\"}],[\"$\",\"link\",\"11\",{\"rel\":\"canonical\",\"href\":\"https://tonoid.com\"}],[\"$\",\"link\",\"12\",{\"rel\":\"alternate\",\"hrefLang\":\"en\",\"href\":\"https://tonoid.com\"}],[\"$\",\"link\",\"13\",{\"rel\":\"alternate\",\"hrefLang\":\"fr\",\"href\":\"https://tonoid.com/fr\"}],[\"$\",\"link\",\"14\",{\"rel\":\"alternate\",\"hrefLang\":\"x-default\",\"href\":\"https://tonoid.com\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:title\",\"content\":\"tonoïd · Microstartup studio\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:description\",\"content\":\"A one-person studio shipping small, profitable software.\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:url\",\"content\":\"https://tonoid.com\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:site_name\",\"content\":\"tonoïd\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"20\",{\"property\":\"og:image\",\"content\":\"https://tonoid.com/images/tonoid-light.png\"}],[\"$\",\"meta\",\"21\",{\"property\":\"og:image:alt\",\"content\":\"tonoïd · Microstartup studio\"}],[\"$\",\"meta\",\"22\",{\"property\":\"og:locale:alternate\",\"content\":\"fr_FR\"}],[\"$\",\"meta\",\"23\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"25\",{\"name\":\"twitter:title\",\"content\":\"tonoïd · Microstartup studio\"}],[\"$\",\"meta\",\"26\",{\"name\":\"twitter:description\",\"content\":\"A one-person studio shipping small, profitable software.\"}],[\"$\",\"meta\",\"27\",{\"name\":\"twitter:image\",\"content\":\"https://tonoid.com/images/tonoid-light.png\"}],[\"$\",\"link\",\"28\",{\"rel\":\"icon\",\"href\":\"/favicon.png\"}],[\"$\",\"$L26\",\"29\",{}]]\n"]);
        </script>
        <script>
            self.__next_f.push([1,"25:null\n"]);
        </script>
    </body>
</html>

Latest requests

# Url Url Source Date
1 https://tonoid.com/ 2026-10-20 12:51:30
2 https://www.thebolditalic.com/?gi=… 2026-10-20 12:51:29
3 http://sekken-life.com/life/cgi-bi… 2026-10-20 12:51:29
4 https://www.thebolditalic.com/?gi=… 2026-10-20 12:51:29
5 https://www.thebolditalic.com/?gi=… 2026-10-20 12:51:27
6 https://www.thebolditalic.com/?gi=… 2026-10-20 12:51:26
7 https://www.thebolditalic.com/?gi=… 2026-10-20 12:51:25
8 https://www.texarkanatwins.com/%25… 2026-10-20 12:51:25
9 https://www.thebolditalic.com/?gi=… 2026-10-20 12:51:24
10 https://www.thebolditalic.com/?gi=… 2026-10-20 12:51:24
11 https://www.texarkanatwins.com/%25… 2026-10-20 12:51:24
12 http://sekken-life.com/life/cgi-bi… 2026-10-20 12:51:23
13 https://www.texarkanatwins.com/%25… 2026-10-20 12:51:23
14 https://consciouslifenews.com 2026-10-20 12:51:23
15 https://m.delphic.games/ 2026-10-20 12:51:22
16 https://www.thebolditalic.com/?gi=… 2026-10-20 12:51:20
17 https://www.thebolditalic.com/?gi=… 2026-10-20 12:51:20
18 https://www.thebolditalic.com/?gi=… 2026-10-20 12:51:19
19 https://www.thebolditalic.com/?gi=… 2026-10-20 12:51:19
20 https://pub-cb3f5136997842fcb5c074… 2026-10-20 12:51:18