cloudflare
tcp/443 tcp/80 tcp/8443
Open service 2606:4700:3037::ac43:c416:8443 · lovetypespec.com
2026-01-22 23:17
HTTP/1.1 200 OK
Date: Thu, 22 Jan 2026 23:17:44 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=83i2mv1KZS5O02LVY2kXAxInKk5Lt%2FT6jRStg%2F%2F%2FgHV8QmOagK1Xrvk1DmnQ1LxtL%2FFznAzJf98z6IvatCsXL7QqDk1XCFw9IzrTEiJHLdbYrUL2jzXXLV6x"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=11,cfOrigin;dur=53
CF-RAY: 9c22c435cbfc5fb0-SIN
alt-svc: h3=":8443"; ma=86400
Page title: LoveTypeSpec
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>LoveTypeSpec</title><meta name="description" content="A community for all things TypeSpec."><script src="/toggle-theme.js" defer></script><link rel="stylesheet" href="/_astro/index.osAoiBy6.css"></head> <body class="page"> <header class="header"> <a href="/" class="text-xl font-bold tracking-tight">LoveTypeSpec</a> <nav class="space-x-6 text-sm"> <a href="#" class="hover:underline">Docs</a> <a href="#" class="hover:underline">Blog</a> <a href="/emitters" class="hover:underline">Emitters</a> <a href="#" class="hover:underline">Community</a> <button id="theme-toggle" class="ml-4 text-sm px-3 py-1 rounded border border-gray-300 bg-white text-gray-700 hover:bg-gray-100 dark:bg-white dark:text-black dark:hover:bg-gray-200 transition">
Toggle Theme
</button> </nav> </header> <main class="px-6 md:px-12 py-12 max-w-6xl mx-auto"> <section class="hero"> <h1 class="hero-title">
A community for all things <span class="text-orange-600">TypeSpec</span> </h1> <p class="hero-subtitle">
Helping developers build better APIs with TypeSpec
</p> <a href="/emitters" class="cta-button">
Explore Emitters →
</a> </section> <section class="grid gap-10 mt-20 md:grid-cols-2 lg:grid-cols-3"> <a href="/articles/first" class="card"> <img src="/first.png" alt="Your First Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Your First Emitter</h2> <p class="card-text">Step-by-step guide to creating your first emitter.</p> </div> </a><a href="/emitters/minimalapi" class="card"> <img src="/minimalapi.png" alt="Minimal API Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Minimal API Emitter</h2> <p class="card-text">Generate ASP.NET Core Minimal API endpoints directly from TypeSpec.</p> </div> </a><a href="/emitters/markdown" class="card"> <img src="/markdown.png" alt="Markdown Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Markdown Emitter</h2> <p class="card-text">Output Markdown documentation from TypeSpec definitions.</p> </div> </a><a href="/emitters/controllers" class="card"> <img src="/controllers.png" alt="Controllers Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Controllers Emitter</h2> <p class="card-text">Generate ASP.NET Core controllers for APIs.</p> </div> </a> </section> </main> <footer class="footer">
© 2025 LoveTypeSpec. Built with Astro.
</footer> <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d7a65fed96ff41d4956507d7c3157e40","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body></html>
Open service 2606:4700:3035::6815:54bd:443 · lovetypespec.com
2026-01-22 23:17
HTTP/1.1 200 OK
Date: Thu, 22 Jan 2026 23:17:44 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=%2By9TayaH0PCv8XFcfiQx2GTQxFa1rgA1sANI%2Bo2OAWzcWbNBijQmPFDMmpgvuCiEHbfQLIYEpPsPYsMtbxxibFPq51VURJelO6dhtLKR7i7n3ZQxkyvE56onWmo%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=7,cfOrigin;dur=32
CF-RAY: 9c22c435de011de3-AMS
alt-svc: h3=":443"; ma=86400
Page title: LoveTypeSpec
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>LoveTypeSpec</title><meta name="description" content="A community for all things TypeSpec."><script src="/toggle-theme.js" defer></script><link rel="stylesheet" href="/_astro/index.osAoiBy6.css"></head> <body class="page"> <header class="header"> <a href="/" class="text-xl font-bold tracking-tight">LoveTypeSpec</a> <nav class="space-x-6 text-sm"> <a href="#" class="hover:underline">Docs</a> <a href="#" class="hover:underline">Blog</a> <a href="/emitters" class="hover:underline">Emitters</a> <a href="#" class="hover:underline">Community</a> <button id="theme-toggle" class="ml-4 text-sm px-3 py-1 rounded border border-gray-300 bg-white text-gray-700 hover:bg-gray-100 dark:bg-white dark:text-black dark:hover:bg-gray-200 transition">
Toggle Theme
</button> </nav> </header> <main class="px-6 md:px-12 py-12 max-w-6xl mx-auto"> <section class="hero"> <h1 class="hero-title">
A community for all things <span class="text-orange-600">TypeSpec</span> </h1> <p class="hero-subtitle">
Helping developers build better APIs with TypeSpec
</p> <a href="/emitters" class="cta-button">
Explore Emitters →
</a> </section> <section class="grid gap-10 mt-20 md:grid-cols-2 lg:grid-cols-3"> <a href="/articles/first" class="card"> <img src="/first.png" alt="Your First Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Your First Emitter</h2> <p class="card-text">Step-by-step guide to creating your first emitter.</p> </div> </a><a href="/emitters/minimalapi" class="card"> <img src="/minimalapi.png" alt="Minimal API Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Minimal API Emitter</h2> <p class="card-text">Generate ASP.NET Core Minimal API endpoints directly from TypeSpec.</p> </div> </a><a href="/emitters/markdown" class="card"> <img src="/markdown.png" alt="Markdown Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Markdown Emitter</h2> <p class="card-text">Output Markdown documentation from TypeSpec definitions.</p> </div> </a><a href="/emitters/controllers" class="card"> <img src="/controllers.png" alt="Controllers Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Controllers Emitter</h2> <p class="card-text">Generate ASP.NET Core controllers for APIs.</p> </div> </a> </section> </main> <footer class="footer">
© 2025 LoveTypeSpec. Built with Astro.
</footer> <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d7a65fed96ff41d4956507d7c3157e40","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body></html>
Open service 2606:4700:3037::ac43:c416:80 · lovetypespec.com
2026-01-22 23:17
HTTP/1.1 301 Moved Permanently
Date: Thu, 22 Jan 2026 23:17:43 GMT
Content-Length: 0
Connection: close
Location: https://lovetypespec.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Q7e3%2F2xjj1o7sz4afbBTN07sOu7IR7c5JUGxN2kKzpC9VDHgRposFJs5AeYBVUukwtW70RAxqoWCKX0BfnxbxD0bJSa3To0eoNUqrWikJECrUVYIBBHbM9%2BFZJo%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=15,cfOrigin;dur=6
cf-cache-status: DYNAMIC
CF-RAY: 9c22c434ed04ebe9-SJC
alt-svc: h3=":443"; ma=86400
Open service 104.21.84.189:8443 · lovetypespec.com
2026-01-22 23:17
HTTP/1.1 200 OK
Date: Thu, 22 Jan 2026 23:17:43 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Owgt3phCww%2BdwOCD01BR3RyRwY6mbOL%2BTf5dz%2BAT8u6tADklwVw57FG8IxNwU%2Bsa6295In1b0%2Fvnna0s%2FUP0Rve89ruh78MLcgEu4ci7vJs%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=13,cfOrigin;dur=55
CF-RAY: 9c22c435286843ed-EWR
alt-svc: h3=":8443"; ma=86400
Page title: LoveTypeSpec
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>LoveTypeSpec</title><meta name="description" content="A community for all things TypeSpec."><script src="/toggle-theme.js" defer></script><link rel="stylesheet" href="/_astro/index.osAoiBy6.css"></head> <body class="page"> <header class="header"> <a href="/" class="text-xl font-bold tracking-tight">LoveTypeSpec</a> <nav class="space-x-6 text-sm"> <a href="#" class="hover:underline">Docs</a> <a href="#" class="hover:underline">Blog</a> <a href="/emitters" class="hover:underline">Emitters</a> <a href="#" class="hover:underline">Community</a> <button id="theme-toggle" class="ml-4 text-sm px-3 py-1 rounded border border-gray-300 bg-white text-gray-700 hover:bg-gray-100 dark:bg-white dark:text-black dark:hover:bg-gray-200 transition">
Toggle Theme
</button> </nav> </header> <main class="px-6 md:px-12 py-12 max-w-6xl mx-auto"> <section class="hero"> <h1 class="hero-title">
A community for all things <span class="text-orange-600">TypeSpec</span> </h1> <p class="hero-subtitle">
Helping developers build better APIs with TypeSpec
</p> <a href="/emitters" class="cta-button">
Explore Emitters →
</a> </section> <section class="grid gap-10 mt-20 md:grid-cols-2 lg:grid-cols-3"> <a href="/articles/first" class="card"> <img src="/first.png" alt="Your First Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Your First Emitter</h2> <p class="card-text">Step-by-step guide to creating your first emitter.</p> </div> </a><a href="/emitters/minimalapi" class="card"> <img src="/minimalapi.png" alt="Minimal API Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Minimal API Emitter</h2> <p class="card-text">Generate ASP.NET Core Minimal API endpoints directly from TypeSpec.</p> </div> </a><a href="/emitters/markdown" class="card"> <img src="/markdown.png" alt="Markdown Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Markdown Emitter</h2> <p class="card-text">Output Markdown documentation from TypeSpec definitions.</p> </div> </a><a href="/emitters/controllers" class="card"> <img src="/controllers.png" alt="Controllers Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Controllers Emitter</h2> <p class="card-text">Generate ASP.NET Core controllers for APIs.</p> </div> </a> </section> </main> <footer class="footer">
© 2025 LoveTypeSpec. Built with Astro.
</footer> <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d7a65fed96ff41d4956507d7c3157e40","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body></html>
Open service 2606:4700:3037::ac43:c416:443 · lovetypespec.com
2026-01-22 23:17
HTTP/1.1 200 OK
Date: Thu, 22 Jan 2026 23:17:43 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=8GZMcWk3cgsn5%2BCO7PJ0y%2FKKzxBX1ls49lfFaAJJzIPYPuHyv%2Fl0Fo8ylPyIxMEeg%2Bh96SMU22eTXfCYANTSO3fZD5UTCjutGuumMbLy08vQvQAVW%2FI5eGR6K24%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=12,cfOrigin;dur=44
CF-RAY: 9c22c4352b548f3f-FRA
alt-svc: h3=":443"; ma=86400
Page title: LoveTypeSpec
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>LoveTypeSpec</title><meta name="description" content="A community for all things TypeSpec."><script src="/toggle-theme.js" defer></script><link rel="stylesheet" href="/_astro/index.osAoiBy6.css"></head> <body class="page"> <header class="header"> <a href="/" class="text-xl font-bold tracking-tight">LoveTypeSpec</a> <nav class="space-x-6 text-sm"> <a href="#" class="hover:underline">Docs</a> <a href="#" class="hover:underline">Blog</a> <a href="/emitters" class="hover:underline">Emitters</a> <a href="#" class="hover:underline">Community</a> <button id="theme-toggle" class="ml-4 text-sm px-3 py-1 rounded border border-gray-300 bg-white text-gray-700 hover:bg-gray-100 dark:bg-white dark:text-black dark:hover:bg-gray-200 transition">
Toggle Theme
</button> </nav> </header> <main class="px-6 md:px-12 py-12 max-w-6xl mx-auto"> <section class="hero"> <h1 class="hero-title">
A community for all things <span class="text-orange-600">TypeSpec</span> </h1> <p class="hero-subtitle">
Helping developers build better APIs with TypeSpec
</p> <a href="/emitters" class="cta-button">
Explore Emitters →
</a> </section> <section class="grid gap-10 mt-20 md:grid-cols-2 lg:grid-cols-3"> <a href="/articles/first" class="card"> <img src="/first.png" alt="Your First Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Your First Emitter</h2> <p class="card-text">Step-by-step guide to creating your first emitter.</p> </div> </a><a href="/emitters/minimalapi" class="card"> <img src="/minimalapi.png" alt="Minimal API Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Minimal API Emitter</h2> <p class="card-text">Generate ASP.NET Core Minimal API endpoints directly from TypeSpec.</p> </div> </a><a href="/emitters/markdown" class="card"> <img src="/markdown.png" alt="Markdown Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Markdown Emitter</h2> <p class="card-text">Output Markdown documentation from TypeSpec definitions.</p> </div> </a><a href="/emitters/controllers" class="card"> <img src="/controllers.png" alt="Controllers Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Controllers Emitter</h2> <p class="card-text">Generate ASP.NET Core controllers for APIs.</p> </div> </a> </section> </main> <footer class="footer">
© 2025 LoveTypeSpec. Built with Astro.
</footer> <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d7a65fed96ff41d4956507d7c3157e40","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body></html>
Open service 2606:4700:3035::6815:54bd:8443 · lovetypespec.com
2026-01-22 23:17
HTTP/1.1 200 OK
Date: Thu, 22 Jan 2026 23:17:43 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=e8hkeP7OR8tMIZO%2F56xiOfFBfbe5MFIW9Qd0OyjKCC4jsGJ0cP92TKU6uGyTzQtFlpU3b8EQwma2ZyAbKRSb36FRhF9tjPElnoP0oT4A49ik49WI%2F5xtAPPMhO8%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=10,cfOrigin;dur=33
CF-RAY: 9c22c434ce200d33-EWR
alt-svc: h3=":8443"; ma=86400
Page title: LoveTypeSpec
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>LoveTypeSpec</title><meta name="description" content="A community for all things TypeSpec."><script src="/toggle-theme.js" defer></script><link rel="stylesheet" href="/_astro/index.osAoiBy6.css"></head> <body class="page"> <header class="header"> <a href="/" class="text-xl font-bold tracking-tight">LoveTypeSpec</a> <nav class="space-x-6 text-sm"> <a href="#" class="hover:underline">Docs</a> <a href="#" class="hover:underline">Blog</a> <a href="/emitters" class="hover:underline">Emitters</a> <a href="#" class="hover:underline">Community</a> <button id="theme-toggle" class="ml-4 text-sm px-3 py-1 rounded border border-gray-300 bg-white text-gray-700 hover:bg-gray-100 dark:bg-white dark:text-black dark:hover:bg-gray-200 transition">
Toggle Theme
</button> </nav> </header> <main class="px-6 md:px-12 py-12 max-w-6xl mx-auto"> <section class="hero"> <h1 class="hero-title">
A community for all things <span class="text-orange-600">TypeSpec</span> </h1> <p class="hero-subtitle">
Helping developers build better APIs with TypeSpec
</p> <a href="/emitters" class="cta-button">
Explore Emitters →
</a> </section> <section class="grid gap-10 mt-20 md:grid-cols-2 lg:grid-cols-3"> <a href="/articles/first" class="card"> <img src="/first.png" alt="Your First Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Your First Emitter</h2> <p class="card-text">Step-by-step guide to creating your first emitter.</p> </div> </a><a href="/emitters/minimalapi" class="card"> <img src="/minimalapi.png" alt="Minimal API Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Minimal API Emitter</h2> <p class="card-text">Generate ASP.NET Core Minimal API endpoints directly from TypeSpec.</p> </div> </a><a href="/emitters/markdown" class="card"> <img src="/markdown.png" alt="Markdown Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Markdown Emitter</h2> <p class="card-text">Output Markdown documentation from TypeSpec definitions.</p> </div> </a><a href="/emitters/controllers" class="card"> <img src="/controllers.png" alt="Controllers Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Controllers Emitter</h2> <p class="card-text">Generate ASP.NET Core controllers for APIs.</p> </div> </a> </section> </main> <footer class="footer">
© 2025 LoveTypeSpec. Built with Astro.
</footer> <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d7a65fed96ff41d4956507d7c3157e40","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body></html>
Open service 2606:4700:3035::6815:54bd:80 · lovetypespec.com
2026-01-22 23:17
HTTP/1.1 301 Moved Permanently
Date: Thu, 22 Jan 2026 23:17:43 GMT
Content-Length: 0
Connection: close
Location: https://lovetypespec.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=6mQDsKPuTxBAMGCXwPGmLyJkiho5%2BRBC59zLKJ3GQwXZZPbt0CdFqnhhx2cacKVtNjAkXq%2Bx%2BkIATKJVig0LV7exvr9xVVk6N2i%2BKhxZHCHSeuEAzCXQgq2LvnM%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=14,cfOrigin;dur=5
cf-cache-status: DYNAMIC
CF-RAY: 9c22c4345e98dccc-FRA
alt-svc: h3=":443"; ma=86400
Open service 104.21.84.189:443 · lovetypespec.com
2026-01-22 23:17
HTTP/1.1 200 OK
Date: Thu, 22 Jan 2026 23:17:43 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=cMq2iI1WC59hEwss5HYxH%2Bm53cfQEAetyz0lG%2FqL7l8XopVYRkg8oFhzZs75Oiv4HyDCnWbV2Z0Ndn6cc4H1Ct4aHcdQaEX8gPiYD0VJIZw%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=11,cfOrigin;dur=35
CF-RAY: 9c22c434cdb1c45b-YYZ
alt-svc: h3=":443"; ma=86400
Page title: LoveTypeSpec
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>LoveTypeSpec</title><meta name="description" content="A community for all things TypeSpec."><script src="/toggle-theme.js" defer></script><link rel="stylesheet" href="/_astro/index.osAoiBy6.css"></head> <body class="page"> <header class="header"> <a href="/" class="text-xl font-bold tracking-tight">LoveTypeSpec</a> <nav class="space-x-6 text-sm"> <a href="#" class="hover:underline">Docs</a> <a href="#" class="hover:underline">Blog</a> <a href="/emitters" class="hover:underline">Emitters</a> <a href="#" class="hover:underline">Community</a> <button id="theme-toggle" class="ml-4 text-sm px-3 py-1 rounded border border-gray-300 bg-white text-gray-700 hover:bg-gray-100 dark:bg-white dark:text-black dark:hover:bg-gray-200 transition">
Toggle Theme
</button> </nav> </header> <main class="px-6 md:px-12 py-12 max-w-6xl mx-auto"> <section class="hero"> <h1 class="hero-title">
A community for all things <span class="text-orange-600">TypeSpec</span> </h1> <p class="hero-subtitle">
Helping developers build better APIs with TypeSpec
</p> <a href="/emitters" class="cta-button">
Explore Emitters →
</a> </section> <section class="grid gap-10 mt-20 md:grid-cols-2 lg:grid-cols-3"> <a href="/articles/first" class="card"> <img src="/first.png" alt="Your First Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Your First Emitter</h2> <p class="card-text">Step-by-step guide to creating your first emitter.</p> </div> </a><a href="/emitters/minimalapi" class="card"> <img src="/minimalapi.png" alt="Minimal API Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Minimal API Emitter</h2> <p class="card-text">Generate ASP.NET Core Minimal API endpoints directly from TypeSpec.</p> </div> </a><a href="/emitters/markdown" class="card"> <img src="/markdown.png" alt="Markdown Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Markdown Emitter</h2> <p class="card-text">Output Markdown documentation from TypeSpec definitions.</p> </div> </a><a href="/emitters/controllers" class="card"> <img src="/controllers.png" alt="Controllers Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Controllers Emitter</h2> <p class="card-text">Generate ASP.NET Core controllers for APIs.</p> </div> </a> </section> </main> <footer class="footer">
© 2025 LoveTypeSpec. Built with Astro.
</footer> <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d7a65fed96ff41d4956507d7c3157e40","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body></html>
Open service 172.67.196.22:443 · lovetypespec.com
2026-01-22 23:17
HTTP/1.1 200 OK
Date: Thu, 22 Jan 2026 23:17:43 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=pwPjXgiwhgaEbzgQKYSGnO5%2BVCvMiK1xsndgKXgYnEgPM05PXfbTAlL3kO98hC9nyDsjrDmUkoHYAzBfAvfOANZVvWXX8dBxh6FskM5RvHU%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=10,cfOrigin;dur=41
CF-RAY: 9c22c4347ed8b987-AMS
alt-svc: h3=":443"; ma=86400
Page title: LoveTypeSpec
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>LoveTypeSpec</title><meta name="description" content="A community for all things TypeSpec."><script src="/toggle-theme.js" defer></script><link rel="stylesheet" href="/_astro/index.osAoiBy6.css"></head> <body class="page"> <header class="header"> <a href="/" class="text-xl font-bold tracking-tight">LoveTypeSpec</a> <nav class="space-x-6 text-sm"> <a href="#" class="hover:underline">Docs</a> <a href="#" class="hover:underline">Blog</a> <a href="/emitters" class="hover:underline">Emitters</a> <a href="#" class="hover:underline">Community</a> <button id="theme-toggle" class="ml-4 text-sm px-3 py-1 rounded border border-gray-300 bg-white text-gray-700 hover:bg-gray-100 dark:bg-white dark:text-black dark:hover:bg-gray-200 transition">
Toggle Theme
</button> </nav> </header> <main class="px-6 md:px-12 py-12 max-w-6xl mx-auto"> <section class="hero"> <h1 class="hero-title">
A community for all things <span class="text-orange-600">TypeSpec</span> </h1> <p class="hero-subtitle">
Helping developers build better APIs with TypeSpec
</p> <a href="/emitters" class="cta-button">
Explore Emitters →
</a> </section> <section class="grid gap-10 mt-20 md:grid-cols-2 lg:grid-cols-3"> <a href="/articles/first" class="card"> <img src="/first.png" alt="Your First Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Your First Emitter</h2> <p class="card-text">Step-by-step guide to creating your first emitter.</p> </div> </a><a href="/emitters/minimalapi" class="card"> <img src="/minimalapi.png" alt="Minimal API Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Minimal API Emitter</h2> <p class="card-text">Generate ASP.NET Core Minimal API endpoints directly from TypeSpec.</p> </div> </a><a href="/emitters/markdown" class="card"> <img src="/markdown.png" alt="Markdown Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Markdown Emitter</h2> <p class="card-text">Output Markdown documentation from TypeSpec definitions.</p> </div> </a><a href="/emitters/controllers" class="card"> <img src="/controllers.png" alt="Controllers Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Controllers Emitter</h2> <p class="card-text">Generate ASP.NET Core controllers for APIs.</p> </div> </a> </section> </main> <footer class="footer">
© 2025 LoveTypeSpec. Built with Astro.
</footer> <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d7a65fed96ff41d4956507d7c3157e40","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body></html>
Open service 172.67.196.22:8443 · lovetypespec.com
2026-01-22 23:17
HTTP/1.1 200 OK
Date: Thu, 22 Jan 2026 23:17:43 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=%2BwyHXUziSydn8QAq5g4bGMECTFl1DEGh11Rmy17dVk06J6bCoSN6y0VRyd6vRdUxV3RGhIavtUrigr8pfXGcXc9i0dTgu0w7J5MjHlb48Gg%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=12,cfOrigin;dur=40
CF-RAY: 9c22c4344f8f2bbe-FRA
alt-svc: h3=":8443"; ma=86400
Page title: LoveTypeSpec
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>LoveTypeSpec</title><meta name="description" content="A community for all things TypeSpec."><script src="/toggle-theme.js" defer></script><link rel="stylesheet" href="/_astro/index.osAoiBy6.css"></head> <body class="page"> <header class="header"> <a href="/" class="text-xl font-bold tracking-tight">LoveTypeSpec</a> <nav class="space-x-6 text-sm"> <a href="#" class="hover:underline">Docs</a> <a href="#" class="hover:underline">Blog</a> <a href="/emitters" class="hover:underline">Emitters</a> <a href="#" class="hover:underline">Community</a> <button id="theme-toggle" class="ml-4 text-sm px-3 py-1 rounded border border-gray-300 bg-white text-gray-700 hover:bg-gray-100 dark:bg-white dark:text-black dark:hover:bg-gray-200 transition">
Toggle Theme
</button> </nav> </header> <main class="px-6 md:px-12 py-12 max-w-6xl mx-auto"> <section class="hero"> <h1 class="hero-title">
A community for all things <span class="text-orange-600">TypeSpec</span> </h1> <p class="hero-subtitle">
Helping developers build better APIs with TypeSpec
</p> <a href="/emitters" class="cta-button">
Explore Emitters →
</a> </section> <section class="grid gap-10 mt-20 md:grid-cols-2 lg:grid-cols-3"> <a href="/articles/first" class="card"> <img src="/first.png" alt="Your First Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Your First Emitter</h2> <p class="card-text">Step-by-step guide to creating your first emitter.</p> </div> </a><a href="/emitters/minimalapi" class="card"> <img src="/minimalapi.png" alt="Minimal API Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Minimal API Emitter</h2> <p class="card-text">Generate ASP.NET Core Minimal API endpoints directly from TypeSpec.</p> </div> </a><a href="/emitters/markdown" class="card"> <img src="/markdown.png" alt="Markdown Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Markdown Emitter</h2> <p class="card-text">Output Markdown documentation from TypeSpec definitions.</p> </div> </a><a href="/emitters/controllers" class="card"> <img src="/controllers.png" alt="Controllers Emitter" class="rounded-t-lg w-full h-40 object-cover"> <div class="p-5"> <h2 class="card-title">Controllers Emitter</h2> <p class="card-text">Generate ASP.NET Core controllers for APIs.</p> </div> </a> </section> </main> <footer class="footer">
© 2025 LoveTypeSpec. Built with Astro.
</footer> <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d7a65fed96ff41d4956507d7c3157e40","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body></html>
Open service 172.67.196.22:80 · lovetypespec.com
2026-01-22 23:17
HTTP/1.1 301 Moved Permanently
Date: Thu, 22 Jan 2026 23:17:43 GMT
Content-Length: 0
Connection: close
Location: https://lovetypespec.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=7zE2bj2P22VuSlQscNKyHbD9x8eHIiMpgFFJT2PzrAGlWT1XggDrCdO4o%2FsuM6LmginwQKGL0p7pQQi0c%2FoCY9LfTcTK4S7ljopK%2BVfnMoI%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=20,cfOrigin;dur=10
cf-cache-status: DYNAMIC
CF-RAY: 9c22c4341f5fc452-EWR
alt-svc: h3=":443"; ma=86400
Open service 104.21.84.189:80 · lovetypespec.com
2026-01-22 23:17
HTTP/1.1 301 Moved Permanently
Date: Thu, 22 Jan 2026 23:17:43 GMT
Content-Length: 0
Connection: close
Location: https://lovetypespec.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=WOFLptRcQR4MLCe%2BInA0F%2F%2BDKwUbp1V96L%2FSwDJGfnCu50mbATr4cmNfouyYsWMzLoue3C2s7qCNgdztFCK%2B3z7CBGAwKYlDTZmPxF4YWoE%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=13,cfOrigin;dur=6
cf-cache-status: DYNAMIC
CF-RAY: 9c22c433981bc5b0-AMS
alt-svc: h3=":443"; ma=86400