{"id":4063,"date":"2026-08-04T04:12:07","date_gmt":"2026-08-04T04:12:07","guid":{"rendered":"https:\/\/tucumandevelopers.com\/index.php\/2026\/08\/04\/i-made-a-web-framework\/"},"modified":"2026-08-04T04:12:07","modified_gmt":"2026-08-04T04:12:07","slug":"i-made-a-web-framework","status":"publish","type":"post","link":"https:\/\/tucumandevelopers.com\/index.php\/2026\/08\/04\/i-made-a-web-framework\/","title":{"rendered":"I made a web framework"},"content":{"rendered":"<div>\n<div><\/header>\n<div data-article-id=\"4308172\" id=\"article-body\">\n<p>Hi everyone! I made an SSR web framework on NPM named <strong>Authtics Host<\/strong> (or <strong>HostJS<\/strong>)<\/p>\n<h2> <a name=\"about\" href=\"#about\"> <\/a> About <\/h2>\n<p>Based on tests, it starts the server in <strong>under 1<\/strong> second. For a user to see the page, it takes <strong>1-4<\/strong> seconds.<\/p>\n<p>It also has a <strong>Developer Panel<\/strong>, which has controls to control the website <strong><em>(e.g., Restart, Shutdown and Pause Users)<\/em><\/strong> with <strong>DAT<\/strong> (<strong>Developer Access Token<\/strong>) authorization for the Developer Panel.<\/p>\n<p>The framework&#8217;s Developer Panel has <strong>console<\/strong> and <strong>network<\/strong> tabs, where devs can see: what the page is receiving, sending or what logs it&#8217;s placing in the console. Better than importing a package and setting it up on mobile.<\/p>\n<h2> <a name=\"3-reasons-why-i-made-this\" href=\"#3-reasons-why-i-made-this\"> <\/a> 3 Reasons why I made this <\/h2>\n<ul>\n<li>Most frameworks start in 2-5+ seconds<\/li>\n<li>There isn&#8217;t any console or network tab for mobile<\/li>\n<li>If there&#8217;s a developer panel in another framework, it might not be mobile-friendly<\/li>\n<\/ul>\n<h2> <a name=\"package\" href=\"#package\"> <\/a> Package <\/h2>\n<p>The NPM package is at: <a href=\"https:\/\/npmjs.com\/package\/@bananacool467\/authtics-host\" target=\"_blank\" rel=\"noopener noreferrer\">@bananacool467\/authtics-host<\/a><\/p>\n<h2> <a name=\"code-snippet\" href=\"#code-snippet\"> <\/a> Code snippet <\/h2>\n<p>For starting the server:<br \/> (Backend script) <\/p>\n<div>\n<pre><code><span>import<\/span> <span>{<\/span> <span>App<\/span> <span>}<\/span> <span>from<\/span> <span>\"<\/span><span>@bananacool467\/authtics-host<\/span><span>\"<\/span><span>;<\/span> <span>const<\/span> <span>app<\/span> <span>=<\/span> <span>new<\/span> <span>App<\/span><span>();<\/span> <\/code><\/pre>\n<div>\n<\/p><\/div>\n<\/p><\/div>\n<p>(Bash script) <\/p>\n<div>\n<pre><code>node <span>--experimental-strip-types<\/span> index.ts <\/code><\/pre>\n<div>\n<\/p><\/div>\n<\/p><\/div>\n<h2> <a name=\"how-i-got-it-to-start-in-under-1-second\" href=\"#how-i-got-it-to-start-in-under-1-second\"> <\/a> How I got it to start in under 1 second <\/h2>\n<p>What I did was make it do fast stuff, when it starts, it:<\/p>\n<ul>\n<li>Loads modules (node:fs, node:http, jiti)<\/li>\n<li>Then it loads the jiti config file<\/li>\n<li>Then it starts the server with the config<\/li>\n<\/ul><\/div>\n<\/article>\n<p> <!-- Bottom content skipped via SKIP_BOTTOM_CONTENT config --> <\/div>\n<p> <\/main> <\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>Fuente: <a href=\"https:\/\/dev.to\/banana_cool\/i-made-a-web-framework-2obn\">Art\u00edculo original<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi everyone! I made an SSR web framework on NPM named Authtics Host (or HostJS) About Based on tests, it starts the server in under 1 second. For a user to see the page, it takes 1-4 seconds. It also has a Developer Panel, which has controls to control the website (e.g., Restart, Shutdown and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2648,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[41],"tags":[],"class_list":["post-4063","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devto"],"jetpack_publicize_connections":[],"_links":{"self":[{"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/posts\/4063","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/comments?post=4063"}],"version-history":[{"count":0,"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/posts\/4063\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/media\/2648"}],"wp:attachment":[{"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/media?parent=4063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/categories?post=4063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/tags?post=4063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}