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.

DeepSeek API in .NET — an OpenAI-compatible client without an SDK, Ollama for development and AI that tidies up notes
Part 26 of the series about building a Telegram task tracker in a tiny team. How Boards got AI that turns a stream of thoughts from a chat into a neat task: DeepSeek in production, Ollama for local development, our own OpenAI-compatible client on HttpClient and the /aisave command in Telegram.
Read →
A Telegram bot for group chats in .NET — linking a chat to a board and tasks from messages
Part 25 of the series about building a Telegram task tracker in a tiny team. How the Boards bot learned to work in group chats: linking a chat to a board with /link, two message save modes, the admin check, privacy mode and a group turning into a supergroup.
Read →
Telegram as file storage for a web app — uploads through a bot and one attachment model
Part 21 of the series about building a Telegram task tracker in a tiny team. How we let the web app upload images to tasks and store them in Telegram through a bot and brought files from the bot and from the web under one attachment model.
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 →
One card from a Telegram album — handling media groups and edits in a bot, without timeout hacks
Part 12 of building a Telegram task tracker in a tiny team. Telegram delivers an album as a burst of separate messages and an edit as a fresh update — here is how to turn a media group into a single record without the usual timeout accumulator, and how to treat an edit as an update instead of a duplicate.
Read →
Saving media from a Telegram bot — store the preview, stream the original
Part 11 of building a Telegram task tracker in a tiny team. Teaching the capture bot to handle photos and video, and the storage decision behind it — keep small previews on disk, stream full files straight from Telegram on demand without buffering them in memory, using nginx range-request passthrough, instead of re-hosting everything.
Read →
Why users kept choosing Telegram Saved Messages over our bot — and what we changed
Part 10 of building a Telegram task tracker in a tiny team. The story of a product mistake — we added epic and status selection to the bot, but real users kept using Saved Messages — and how we fixed it.
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 →
Clean Telegram bot architecture in .NET — controllers instead of a giant switch
Part 5 of building a Telegram task tracker in a tiny team. A clean .NET Telegram bot with ASP.NET-style controllers and middleware instead of a giant switch, a layered solution structure, and EF Core paired with linq2db on the same models for the queries EF Core handles poorly.
Read →
From Telegram Saved Messages to a real task tracker — defining the user path
Part 3 of building a Telegram task tracker in a tiny team. Why Saved Messages is not convenient for managing tasks, which minimal scenario Laraue Boards started from, and why the user path is defined before development begins.
Read →
Laraue Boards
Laraue Boards is an open source task tracker with Telegram integration. The product site is boards.laraue.com; this page is about the project and how we build it.
Read →
Vocabulary Bot: How a Telegram Quiz Picks the Next Word
How Vocabulary Bot decides what to ask next: new, almost learned and fading words, the three-in-a-row rule, the word list and the source code.
Read →
Laraue.Telegram.NET — Write Telegram Bots Like ASP.NET Controllers in C#
Telegram bot routing in C# without if-else chains. Laraue.Telegram.NET gives .NET 10 bots ASP.NET-style controllers, middleware, authentication, localization and tests. We run our own bots on it.
Read →
Building a Vocabulary Learning Telegram Bot with C# and .NET 10
A technical deep-dive into the architecture of an open-source Telegram vocabulary bot — covering the C# / .NET 10 stack, AI-powered auto-translation pipeline, data model, and local development setup.
Read →