In the AI Agents Era, Why Waste Time Building a Framework?…
    Neura MarketNeura Market/DeepSeek
    ChatGPTChatGPTClaudeClaudeGeminiGeminiCursorCursorGrokGrokPerplexityPerplexityDeepSeekDeepSeek
    CoPilotCoPilotStable DiffusionStable DiffusionMidjourneyMidjourney
    View All Directories
    OverviewRulesPromptsMCPsAgentsGamesBlogVideosGuidesCoursesCommunityTrending
    DeepSeekBlogIn the AI Agents Era, Why Waste Time Building a Framework?
    Back to Blog
    In the AI Agents Era, Why Waste Time Building a Framework?
    typescript

    In the AI Agents Era, Why Waste Time Building a Framework?

    Slee Woo March 11, 2026
    0 views

    Not about the result. About the zen of solving your own annoyances one weekend at a time


    title: In the AI Agents Era, Why Waste Time Building a Framework? published: true description: Not about the result. About the zen of solving your own annoyances one weekend at a time tags: typescript, javascript, node, webdev

    There is no answer to that question. Because the question is about the result - a pragmatically calculated, measurable, expected result.

    But building is about the process.

    It's about that zen. That quiet delight when you finally solve something that's been annoying you for years. Maybe it annoys only you. Maybe you're solving a problem that doesn't exist for anyone else. But now it's solved, and you get your couple minutes of glory.

    Now you can ditch all those validation libs - each with its own syntax, its own limitations - and just write TypeScript that gets validated at runtime:

    export default defineRoute(({ POST }) => [
      POST<{
        json: {
          email: TRefine<string, { format: "email" }>;
          age: TRefine<number, { minimum: 18 }>;
        }
      }>(async (ctx) => {
        const { email, age } = ctx.validated.json;
        // validated before reaching here - no lib syntax, just TypeScript
      }),
    ]);
    

    And the breeze seems here to stay. But no - another annoyance starts to rise from the depths.

    After your 100th route, looking at a file-based routing tree is like a nightmare. What are all these files? They belong to what? Which is the master (handler), which is the servant (helper)?

    And the answer comes in the form of a question: why not organize routes as directories, with a handler file inside? Wait, but that's a lot of folders!

    Ok, let's sketch how it would look compared to the actual mess...

    Ten minutes later: holy structure. What the order!

    api/
      users/
        [id]/
          index.ts      ← handler for /api/users/:id
          helpers.ts    ← clearly not a route
    

    A couple of weekends of spare time later: another annoyance is behind. Another minute of glory.

    So, is the breeze here forever? For a couple of hours perhaps, but...

    Why the heck are routes limited to monolithic segments like posts/:id? How do you cover simple paths like posts.json or posts/1.json in a single route? Should you create a separate route for each? That's crazy!

    Time for a new zen. Turns out path-to-regexp v8 is finally state-of-the-art in routing - so flexible, so delightful to integrate. And here it is, the new Power Syntax for routes:

    book{-:id}-info           ➜ /book-info or /book-123-info
    locale{-:lang{-:country}} ➜ /locale, /locale-en, /locale-en-US
    api/{v:version}/users     ➜ /api/users or /api/v2/users
    

    So far so good.

    Now, finally, a comfortable weekend! Or not? Wait - forgot to wire auth middleware into the latest routes. A couple of Neovim strokes and we're good.

    A couple of Neovim strokes later: wait, how could I forget about auth middleware, it's essential! And how is it that in the 21st century you still have to manually wire middleware into each route? That's nonsense, that's anti-progress!

    One wasted weekend later: who said stylesheets can be cascading but middleware cannot? It's that easy - create a use.ts in any folder and all underlying routes automatically wire the exported middleware. No imports. No repetition.

    api/
      admin/
        use.ts          ← auth runs for every route under /admin
        users/
          index.ts      ← inherits automatically
          [id]/
            index.ts    ← inherits automatically
    

    No more wasted weekends because someone forgot to wire something. Now they'll be wasted for far more reasonable reasons.

    And one more annoyance has been harming the breeze for years. Whatever tricks or hacks tried to get a clean, type-safe, validated round-trip from client to server - none fully satisfies.

    Then a perfectly legal question hits: once there are typed validation targets on the server, why not use them to generate typed clients? Wait, even better - TypeBox runs perfectly in the browser, so why not use the same validation routines on the client?

    import fetchClients from "_/front/fetch";
    
    // fully typed, validated client-side before the request is even sent
    const user = await fetchClients["users/[id]"].GET([123]);
    

    A couple of weekends later: so productive now with type-safe, client-side validated fetch clients!

    Time for some rest, finally. Wait - a customer asks for an OpenAPI spec for their API. Ok, let's quickly wrap a script that gets all routes and generates the spec...

    Multiple "quickly wrap a script" iterations later: how can such a simple task need so much manual work? No way, there has to be an automated solution. And another zen is on the road - taking the AST-parsed routes with their params, payloads, and responses, and gluing them together into an automated OpenAPI 3.1 spec generator.

    And that zen doesn't come alone. It's accompanied by the sincere wow of customers who discover they got detailed OpenAPI for free.

    And that's pretty much a lot - much more than any pragmatically calculated result expected from an apparently pointless effort.

    Because the real result is the sum of all those micro-achievements that push you forward.

    And no - the breeze isn't supposed to arrive once and stay forever. It lives in the movement, not the stillness.

    Tags

    typescriptjavascriptnodewebdev

    Comments

    More Blog

    View all
    Five Gemma-4 models, one accelerator: what porting E2B 31B to AWS Inferentia2 taught megemma

    Five Gemma-4 models, one accelerator: what porting E2B 31B to AWS Inferentia2 taught me

    I ported the whole Gemma-4 family — E2B, E4B, 12B, 31B, and the 26B-A4B MoE — to run on...

    X
    xbill
    Hey DEV, I'm Tobore. Let's actually connect.community

    Hey DEV, I'm Tobore. Let's actually connect.

    Hey DEV, I'm Tobore. Let's actually connect. I've been on here for a while now, mostly writing and...

    L
    Laurina Ayarah
    I burned through thousands of AI tokens. Then a friend did it for freeai

    I burned through thousands of AI tokens. Then a friend did it for free

    (yep, kinda clickbait, just for the funsies 😊) At the beginning of the year, I relaunched my...

    P
    Paulo Henrique
    Claude might be saturating your machineai

    Claude might be saturating your machine

    My laptop was sitting idle with the fan at full tilt. Nothing was running that I knew of. The culprit...

    S
    Sidhant Panda
    Automated GitHub Code Reviews Using Google Geminigithubactions

    Automated GitHub Code Reviews Using Google Gemini

    I Built a Thing! TL;DR — Google Gemini-based Pull Request reviews and Issue Triaging for...

    D
    Darren "Dazbo" Lester
    What is an "agentic harness," actually?ai

    What is an "agentic harness," actually?

    I've been hearing the word "harness" thrown around a lot lately. I assumed it just meant "the IDE" or...

    T
    Tilde A. Thurium

    Stay up to date

    Get the latest DeepSeek prompts, rules, and resources delivered to your inbox weekly.

    Neura Market LogoNeura Market

    Discover the best AI prompts, plugins, and resources for DeepSeek and more.

    Content Types

    • Rules
    • Prompts
    • MCPs
    • Agents
    • Guides

    Platforms

    • ChatGPT Directory
    • Claude Directory
    • Gemini Directory
    • Cursor Directory
    • Grok Directory
    • Perplexity Directory
    • DeepSeek Directory
    • CoPilot Directory
    • Stable Diffusion Directory
    • Midjourney Directory
    • All Directories

    Resources

    • Blog
    • Documentation
    • Help Center
    • Marketplace

    Legal

    • Privacy Policy
    • Terms of Service

    © 2026 Neura Market. All rights reserved.

    |

    Not affiliated with any AI platform vendors.

    Neura Market

    Custom AI Systems & Services

    Our team of experienced AI builders will help build custom AI systems, workflows, and solutions for your business.

    Request custom work

    Ready-made automations for this

    Workflows from the Neura Market marketplace related to this DeepSeek resource

    • Automate Blog Content Creation with Notion MCP, DeepSeek AI, and WordPressn8n · $9.99 · Related topic
    • Deploy a Customizable AI Chatbot with DeepSeek Integration on Your Websiten8n · $4.99 · Related topic
    • Automate Your Website Building with N8N: Unsubscribe Workflowmake · $6.62 · Related topic
    • Generate AI Videos from Scripts with DeepSeek, Synthesia, and Together.ain8n · $24.99 · Related topic
    Browse all workflows