<!DOCTYPE html>
<html lang="en">
<head>
    <meta name="description" content="MicroPie is an ultra-micro ASGI Python web framework that gets out of your way. - patx/micropie">
    <meta property="og:url" content="https://github.com/patx/micropie">
    <meta property="og:type" content="website">
    <meta property="og:title" content="GitHub - patx/micropie: MicroPie is an ultra-micro ASGI Python web framework that gets out of your way.">
    <meta property="og:description" content="MicroPie is an ultra-micro ASGI Python web framework that gets out of your way. - patx/micropie">
    <meta property="og:image" content="https://repository-images.githubusercontent.com/918862197/ae93975f-208b-4a71-bac4-f164a509ac16">
    <meta name="twitter:card" content="summary_large_image">
    <meta property="twitter:domain" content="github.com">
    <meta property="twitter:url" content="https://github.com/patx/micropie">
    <meta name="twitter:title" content="GitHub - patx/micropie: MicroPie is an ultra-micro ASGI Python web framework that gets out of your way.">
    <meta name="twitter:description" content="MicroPie is an ultra-micro ASGI Python web framework that gets out of your way. - patx/micropie">
    <meta name="twitter:image" content="https://repository-images.githubusercontent.com/918862197/ae93975f-208b-4a71-bac4-f164a509ac16">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600&display=swap" rel="stylesheet">

    <title>MicroPie - An ultra-micro Python ASGI web framework</title>

    <style>
        /* --- Global safety: never allow horizontal overflow --- */
        html, body {
            width: 100%;
            max-width: 100%;
            overflow-x: hidden;
        }

        *, *::before, *::after {
            box-sizing: border-box;
        }

        body {
            font-family: 'Poppins', sans-serif;
            margin: 0;
            padding: 0;
            color: #333;
        }

        .container {
            width: min(800px, 100%);
            margin: 0 auto;
            background: #fff;
            padding: 40px;
            border-radius: 15px;
            text-align: center;
        }

        h1, h2 {
            color: #d20f23;
            font-weight: 600;
        }

        h2 {
            text-align: left;
        }

        p {
            font-size: 18px;
            line-height: 1.6;
            color: #555;
        }

        a {
            color: #d20f23;
            text-decoration: none;
            font-weight: 600;
            transition: color 0.3s ease;
        }

        a:hover {
            color: #d20f23;
        }

        pre {
            background: #f5f2f0;
            padding: 20px;
            border-radius: 10px;
            text-align: left;
            font-size: 1.05em;
            max-width: 100%;
            overflow-x: auto;
            -webkit-overflow-scrolling: touch;
        }

        code {
            max-width: 100%;
        }

        .logo img {
            width: 100%;
            max-width: 600px;
            height: auto;
        }

        span.c2 { color: #8F5902; }
        span.c9 { color: #d20f23; }

        .button {
            display: inline-block;
            background: #d20f23;
            color: #fff;
            padding: 15px 30px;
            border-radius: 12px;
            font-size: 18px;
            font-weight: 600;
            transition: background 0.3s ease;
        }

        .button:hover {
            background: #fff;
            border: 2px solid #d20f23;
            color: #d20f23;
        }

        /* GitHub corner */
        .github-corner {
            position: fixed;
            top: 0;
            right: 0;
            z-index: 1000;
        }

        .github-corner svg {
            fill: #d20f23;
            transition: transform 0.25s ease;
        }

        .github-corner:hover svg {
            transform: scale(1.05);
        }

        .github-corner .octo-arm {
            transform-origin: 130px 106px;
        }

        .github-corner:hover .octo-arm {
            animation: octocat-wave 560ms ease-in-out;
        }

        @keyframes octocat-wave {
            0%, 100% { transform: rotate(0); }
            20%, 60% { transform: rotate(-25deg); }
            40%, 80% { transform: rotate(10deg); }
        }

        /* --- Mobile fixes --- */
        @media (max-width: 768px) {
            .container {
                padding: 20px;
            }

            pre {
                white-space: pre-wrap;
                word-break: break-word;
                overflow-x: hidden;
            }

            .github-corner {
                display: none;
            }
        }

          @media (prefers-color-scheme: dark) {
            html, body {
              background: #0b0f14;
              color: #e7eaf0;
            }

            .container {
              background: #0b0f14;
              color: #e7eaf0;
            }


            p {
              color: rgba(231,234,240,0.82);
            }

            a {
              color: #d20f23;
            }

            a:hover {
              color: #d20f23;
            }

            pre {
              background: #0b111a;
              border: 1px solid rgba(255,255,255,0.08);
              color: #e7eaf0;
            }

            /* keep your little code colors readable on dark */
            span.c2 { color: #ffd17a; }
            span.c9 { color: #d20f23; }

            .button {
              background: #d20f23; /* keep brand red */
              color: #fff;
              border: 1px solid rgba(255,255,255,0.10);
            }

            .button:hover {
              background: transparent;
              border: 2px solid #d20f23;
              color: #d20f23;
            }

            /* GitHub corner stays branded */
            .github-corner svg {
              fill: #d20f23;
            }
          }
    </style>
</head>

<body>

<div class="container">
    <div class="logo">
        <img src="https://patx.github.io/micropie/logo.png" alt="MicroPie logo">
    </div>

    <h2>Ultra-micro ASGI framework, BSD 3-clause</h2>

    <pre><code>
<span class="c2">from</span> micropie <span class="c2">import</span> App

<span class="c2">class</span> MyApp(<span class="c9">App</span>):

    <span class="c2">async def</span> index(self, name=<span class="c9">"world"</span>):
        return <span class="c9">f"Hello</span> {name}<span class="c9">!"</span>

app = MyApp()
    </code></pre>



    <h2>Easy to Install</h2>

    <pre><code><span class="c2">$</span> pip install <span class="c9">micropie</span></code></pre>

    <p><br>
        <a href="https://github.com/patx/micropie" class="button">
            View source, examples and documentation on GitHub
        </a>
    </p>
</div>

<a class="github-corner" href="https://github.com/patx/micropie" aria-label="View source on GitHub">
    <svg width="80" height="80" viewBox="0 0 250 250" aria-hidden="true">
        <path d="M0,0 L250,0 L250,250 Z" fill="#d20f23"></path>
        <path d="M128.3,109.0
                 C113.8,99.7 119.0,89.6 119.0,89.6
                 C122.0,82.7 120.5,78.6 120.5,78.6
                 C119.2,72.0 123.4,76.3 123.4,76.3
                 C127.3,80.9 125.5,87.3 125.5,87.3
                 C122.9,97.6 130.6,101.9 134.4,103.2"
              fill="#fff"
              class="octo-arm"/>
        <path d="M115.0,115.0
                 C114.9,115.1 118.7,116.5 119.8,115.4
                 L133.7,101.6
                 C136.9,99.2 139.9,98.4 142.2,98.6
                 C133.8,88.0 127.5,74.4 143.8,58.0
                 C148.5,53.4 154.0,51.2 159.7,51.0
                 C160.3,49.4 163.2,43.6 171.4,40.1
                 C171.4,40.1 176.1,42.1 178.8,56.2
                 C183.1,58.6 187.2,61.8 190.9,65.4
                 C194.5,69.0 197.7,73.2 200.1,77.6
                 C214.2,80.3 216.2,85.0 216.2,85.0
                 C212.7,93.2 206.9,96.1 205.4,96.7
                 C205.1,102.4 203.0,107.8 198.3,112.5
                 C181.9,128.9 168.3,122.5 157.7,114.1
                 C157.9,116.9 156.7,120.9 152.7,124.9
                 L141.0,136.5
                 C139.8,137.7 141.6,141.6 141.8,141.8
                 Z"
              fill="#fff"/>
    </svg>
</a>

</body>
</html>