Laraue Blog — .NET, Nuxt, Telegram Bots and AI Workflow

Real code, real decisions, real tradeoffs. We write about what we build — .NET libraries, Telegram bots, AI integrations, and the architecture mistakes worth learning from.

JWT in an HttpOnly cookie instead of localStorage — cookie authentication in ASP.NET Core and Nuxt
Part 24 of the series about building a Telegram task tracker in a tiny team. How the web app token moved from localStorage to an HttpOnly cookie: how ASP.NET Core reads a JWT from a cookie, what the Nuxt frontend needed for it, how to set up CORS, and how we made the project easier to run locally.
Read →
How we rewrote the frontend — a Nuxt architecture with explicit dependencies, Vitest tests and rules for AI agents
Part 23 of the series about building a Telegram task tracker in a tiny team. Why the Boards UI had to be rewritten, how the new frontend architecture works with every page declaring its dependencies explicitly, how that helps Vitest tests, and why the repository has a file of rules for AI agents.
Read →
We built a markdown CMS backend in .NET, then dropped it for SSR in Nuxt
Why we deleted our own markdown-to-API backend and moved the blog into the Nuxt app — the frontend/backend sync problem, the things the system did not support, and what got simpler after the move.
Read →
Telegram Login Widget vs Mini App auth in .NET — two validation schemes, one JWT
Part 13 of building a Telegram task tracker in a tiny team. How to add Telegram Login Widget authentication to a .NET and Nuxt web app next to the Mini App's: linking the domain in BotFather, validating the widget data (a different secret from init data), rejecting outdated data by auth_date, and issuing the same JWT.
Read →
Telegram Mini App authentication in .NET end to end — initData validation, JWT issuing and the Nuxt frontend
Part 8 of building a Telegram task tracker in a tiny team. How to authenticate a Telegram Mini App user in .NET and Nuxt: validating the initData hash with HMAC-SHA256, rejecting outdated data by auth_date, issuing and using a JWT bearer, reading the user from HttpContext, and why CORS matters.
Read →
Deploying a Nuxt Telegram Mini App. Setting up HTTPS on nginx with Let's Encrypt. A new mini app via BotFather
Part 7 of building a Telegram task tracker in a tiny team. How to deploy a Nuxt Telegram Mini App behind nginx with HTTPS: a subdomain, the nginx configuration, the first Let's Encrypt certificate and automatic renewal with certbot, registering the app in BotFather, local testing through ngrok, and what to do when the Mini App shows "Welcome to nginx!".
Read →
Choosing a pet project stack for a tiny team — .NET, PostgreSQL, Nuxt, and why we prefer boring technologies
Part 4 of building a Telegram task tracker in a tiny team. The reasons behind .NET 10, PostgreSQL 18, Nuxt 4 and Vue 3. A bit about the MongoDB-to-Postgres migration in a past project that taught us to prefer boring, stable technologies.
Read →