[{"data":1,"prerenderedAt":2447},["ShallowReactive",2],{"header-services-en":3,"glossary-en":866,"glossary-cases-en":1576,"services-list-en":1784,"site-data-en":2072,"glossary-deep-en-crash-report":2314},[4,196,372,540,714],{"id":5,"title":6,"audience":7,"body":17,"description":31,"emoji":32,"extension":33,"faq":34,"includes":68,"lead":77,"meta":78,"navigation":79,"order":80,"path":81,"pricing":82,"seo":112,"serviceType":113,"stack":114,"stackNotes":122,"stem":135,"steps":136,"works":155,"__hash__":195},"services_en\u002Fen\u002Fuslugi\u002Fsajty.md","Websites and online stores",[8,11,14],{"title":9,"text":10},"We sell by phone and chat","We build an online store the owner runs alone: products, prices, stock and orders are edited in an admin panel, and every new order arrives in Telegram.",{"title":12,"text":13},"An old site on an outdated CMS","We move the content to WordPress from a database dump, point old URLs to the new ones with permanent 301 redirects, and fill in titles and descriptions for every page.",{"title":15,"text":16},"You need a page instead of a long chat thread","We build a business-card site or a storefront: who you are, what you do, how the process works, how to get in touch. The page is light, so it opens fast on a phone from an ad link.",{"type":18,"value":19,"toc":27},"minimark",[20,24],[21,22,23],"p",{},"We build websites from scratch, with no site builders or off-the-shelf templates.\nThe stack follows the task: Nuxt and FastAPI with a custom admin panel for stores\nand services, or WordPress with our own theme and no third-party plugins when the\nclient wants a familiar admin. SEO markup, mobile\nlayout and a clear admin panel come standard, so the client changes prices and\ntexts themselves.",[21,25,26],{},"We also handle migrations: moving sites off outdated CMSs while keeping URLs and\nsearch rankings — old links redirect to the new pages.",{"title":28,"searchDepth":29,"depth":29,"links":30},"",2,[],"Turnkey websites on Nuxt with a custom admin panel or on WordPress with our own theme: online stores, storefronts, business cards, CMS migrations.","🌐","md",[35,38,41,44,47,50,53,56,59,62,65],{"q":36,"a":37},"Can I order a website from you?","Yes. We build turnkey websites: landing pages, business cards, catalogs, storefronts and online stores. The stack follows the task: Nuxt with a custom admin panel, or WordPress with our own theme. We are based in Moscow and Chisinau and work with clients remotely.",{"q":39,"a":40},"Do you build on a custom stack or on WordPress?","Both. A store with stock, orders and its own logic is built on Nuxt and FastAPI: it loads fast and the admin panel covers exactly what the owner changes. When a client wants the familiar WordPress admin, we write our own theme with no third-party plugins or page builders, which means fewer updates, fewer vulnerabilities and light pages.",{"q":42,"a":43},"Can you migrate an old site without losing search rankings?","Yes. We move sites off legacy CMSs, for example from Joomla to WordPress: we parse the database dump, carry over texts, the catalog and forms, and map old URLs to new ones with permanent 301 redirects.",{"q":45,"a":46},"How much does SEO and getting into AI assistants' answers cost?","If the site is sound and does not need a rebuild, we set up indexing and visibility turnkey from $160: sitemap, schema.org markup, llms.txt, Yandex Webmaster, Google Search Console and Bing accounts, IndexNow, recrawl requests. The result is a site that appears in Google and Bing and in the answers of ChatGPT, Gemini and Copilot. It takes 2–8 weeks, almost all of it waiting: search engines and assistants refresh their data slowly and nothing speeds that up. If the site needs major rework, we quote it separately.",{"q":48,"a":49},"How much does a website cost?","A specialist's business card site starts at $80, with SEO markup for search and AI assistants at $160. A multi-page Nuxt site or a WordPress showcase starts at $1,000, a site with an admin panel or an online store at $1,400. Migration from an old CMS starts at $250, each extra language adds 5 % to the estimate. The exact figure comes in the proposal after a free audit of the task, the current site and competitors. No hourly billing: the price is fixed for the result.",{"q":51,"a":52},"Will I be able to edit texts and prices myself?","Yes. We build a clear admin panel for the client's tasks from the start: prices and stock are edited in one table, texts with a live preview — no developer needed.",{"q":54,"a":55},"What is better for an online store: Nuxt or WordPress?","It depends on what the store must do. We built a store with sizes, colors, stock and wholesale prices on Nuxt and FastAPI: pages are served as ready HTML, and the admin panel covers exactly what the owner changes. We built a storefront without online payment on WordPress with our own theme, because the client wanted the familiar admin. We make the choice after the audit.",{"q":57,"a":58},"Can a site work without online payment, with orders going through a messenger or VKontakte?","Yes. In the project for an essential-oil brand there is no payment on the site by design: the cart collects the order and passes it to the community bot on VKontakte with a one-time code, and the buyer lands in a chat with the order ready. If the site did not respond or the bot is off, the cart falls back to copying the order text.",{"q":60,"a":61},"How do I make a site that search engines and AI assistants can find?","Pages are served as ready HTML, each has its own title and description, and JSON-LD markup tells robots what is on the page: Product for an item, FAQPage for questions and answers, Person for a specialist's business card. We generate the sitemap and robots.txt from the content and add hreflang for two languages. Our own studio site and a business-card site are built this way.",{"q":63,"a":64},"Who owns the site, and what do I receive?","The code and data stay with the client. At handover you get the site, access, a README written as a technical specification and a CHANGELOG, plus a guide to the admin panel for the owner. Support is free for a month after handover, after that maintenance is by agreement.",{"q":66,"a":67},"How fast can a site be built?","The time depends on the scope: a store with stock and wholesale, a storefront with a cart and a one-page business card are different amounts of work. We state the time after a short free audit, together with the estimate.",[69,70,71,72,73,74,75,76],"An admin panel built around the client's tasks: prices, stock and texts are edited without a developer","SEO markup: page titles and descriptions, JSON-LD, sitemap, robots.txt","Layout for phone and desktop","Permanent 301 redirects from old URLs when moving to a new site","Docker deployment with HTTPS on the client's server or ours","A guide for the site owner, built into the admin panel","README written as a technical specification, and a CHANGELOG","A free month of support after handover; the code and data stay with the client","Turnkey websites: business cards, landing pages, catalogs and multi-page sites",{},true,10,"\u002Fen\u002Fuslugi\u002Fsajty",{"visible":79,"note":83,"items":84},"The audit and the proposal are free. No hourly billing: the price is fixed for the result, the exact figure comes in the proposal after the audit. Support after delivery starts at $100 a month, the first month is free. Timelines are individual and set once the specification is approved.",[85,95,104],{"title":86,"price":87,"unit":88,"description":89,"includes":90,"featured":94},"Business card site","from $80","one page","A simple page for a specialist: who you are, services, contacts.",[91,92,93],"A card with SEO markup for search and AI assistants — from $160","Mobile layout, QR code and vCard","Turnkey SEO and AI-assistant visibility — from $160, 2–8 weeks",false,{"title":96,"price":97,"unit":98,"description":99,"includes":100,"featured":79},"Nuxt or WordPress site","from $1,000","per project","A multi-page Nuxt site without a database or a WordPress showcase with a custom theme.",[101,102,103],"With an admin panel — from $1,400","Each extra language +5 % to the estimate, machine translation","Migration from an old CMS with redirects — from $250",{"title":105,"price":106,"unit":98,"description":107,"includes":108,"featured":94},"Online store","from $1,400","Your own admin panel: the owner manages products, prices, stock and orders; orders arrive in Telegram.",[109,110,111],"Web service with a Telegram cabinet — from $650","Code and data stay on your server","README and CHANGELOG included",{"title":6,"description":31},"Website and online store development",[115,116,117,118,119,120,121],"Nuxt \u002F Vue 3","TypeScript","FastAPI","WordPress","nginx","Docker","SEO",[123,125,127,129,131,133],{"name":115,"text":124},"Pages are built on the server and delivered as ready HTML, so a search robot sees products and texts right away.",{"name":117,"text":126},"A server program that serves the catalog, accepts orders and stores the site settings.",{"name":118,"text":128},"A familiar admin panel and editor for the client, with a theme written for the project.",{"name":119,"text":130},"Serves the site, sets up caching and redirects, and limits the number of requests to the login page.",{"name":120,"text":132},"The site starts the same way on a developer's computer and on the server, and moving to another server does not break the setup.",{"name":121,"text":134},"Titles, descriptions and structured data help search engines and AI assistants understand what a page is about.","en\u002Fuslugi\u002Fsajty",[137,140,143,146,149,152],{"title":138,"text":139},"Request and free audit","You briefly describe the task. We go through it, the current site and competitors. The audit is free, and it gives us the scope of work.",{"title":141,"text":142},"Stack and estimate","Depending on the task we pick Nuxt with a custom admin panel or WordPress with our own theme, then state the scope and the price.",{"title":144,"text":145},"Design and layout","We build the pages for phone and desktop, following the client's brand book if there is one. The client reviews the result on a test address.",{"title":147,"text":148},"Admin panel, content and SEO","We set up management around what the owner changes, fill in the catalog and texts, and add titles, descriptions and structured data. In a migration we move the content and build the redirect map.",{"title":150,"text":151},"Launch","We deploy the site in Docker with HTTPS and check it on a phone and against the acceptance criteria from the README.",{"title":153,"text":154},"Handover and support","We hand over the code, access, documentation and the owner's guide. The first month of support is free, after that maintenance is by agreement.",[156,161,166,171,176,181,186,191],{"id":157,"title":158,"text":159,"term":28,"price":28,"case":160},"sajty-01","Online store with an admin panel","A store on Nuxt and FastAPI: a catalog with colors and sizes, stock per size, a cart and wholesale prices. The owner manages products, prices and orders alone, and the server recalculates the order total at checkout. It ends with a working store on a server and order notifications in Telegram.","internet-magazin-rubashek",{"id":162,"title":163,"text":164,"term":28,"price":28,"case":165},"sajty-02","WordPress storefront with ordering through VKontakte","A catalog with pack sizes, retail and wholesale prices, and a cart kept on the buyer's device. The order goes to the community chat on VKontakte with the contents already filled in, and the community bot reads the same catalog from the site. The client edits prices, stock and texts in the admin panel, and the site runs in Russian and English.","dyhanie-povolzhya",{"id":167,"title":168,"text":169,"term":28,"price":28,"case":170},"sajty-03","Migration from Joomla to WordPress","We parse the database dump with scripts and carry over texts, categories, dates, URLs and attachments. We build a map of old URLs and set up 301 redirects, and the import can be re-run without creating duplicates. It ends with a WordPress site and a settings panel the client runs alone.","joomla-to-wordpress",{"id":172,"title":173,"text":174,"term":28,"price":28,"case":175},"sajty-04","Business-card site for a specialist","One page: profile, work process, services, FAQ and contacts. It includes a QR code and a vCard file for saving the contact to a phone, Person and FAQPage markup for search engines, and self-hosted fonts. The specialist's client needs just one link.","valera",{"id":177,"title":178,"text":179,"term":28,"price":28,"case":180},"sajty-05","Multilingual Nuxt site without a database","Pages, case studies and the glossary live in markdown files in git, and a schema validates their structure. Russian and English versions come with hreflang, and the sitemap and structured data are generated from the content. Editing the site means editing a file and rebuilding, and it runs in a single container.","sajt-studii",{"id":182,"title":183,"text":184,"term":28,"price":28,"case":185},"sajty-06","Site and hosting audit with a demo stand of the new site","A technical audit of the site from a backup, a check of hosting and domain, and a set of documents for management. Alongside them we build a working demo stand of the new site, closed from search indexing. The client sees the result before signing a contract.","sajt-muzeya-demo",{"id":187,"title":188,"text":189,"term":28,"price":28,"case":190},"sajty-07","Web service with a Telegram admin","Not just a page but a service around it: a card from a single HTML file, a Python API, PostgreSQL, an admin bot and a web cabinet inside Telegram. It has plans, client roles and invitation codes. The owner creates and edits pages from a phone, without a developer.","unlock",{"id":192,"title":193,"text":194,"term":28,"price":28,"case":180},"sajty-08","SEO and visibility in AI assistants","Turnkey indexing setup: sitemap, schema.org markup, llms.txt files for AI, Yandex Webmaster, Google Search Console and Bing accounts, IndexNow. Pages get into Google and Bing and into the answers of ChatGPT, Gemini and Copilot. Timeline 2–8 weeks: that is how long search engines and assistants take to refresh their data, and it is out of our hands. If the site needs major rework, we quote it separately.","ZJLm1eY2JZRQEzJd6hkdBXGSUmvLwMFIE0FOpUdYVBw",{"id":197,"title":198,"audience":199,"body":209,"description":219,"emoji":220,"extension":33,"faq":221,"includes":252,"lead":261,"meta":262,"navigation":79,"order":263,"path":264,"pricing":265,"seo":290,"serviceType":291,"stack":292,"stackNotes":298,"stem":316,"steps":317,"works":335,"__hash__":371},"services_en\u002Fen\u002Fuslugi\u002Fboty.md","Telegram and VK bots",[200,203,206],{"title":201,"text":202},"Requests and payments get lost in chats","We move request intake, approval and records into a bot with a database. In a ticketing system a request moves through statuses and a resolution deadline; in subscription sales the payment receipt goes to the admins with 'Confirm' and 'Reject' buttons.",{"title":204,"text":205},"Documents and records are processed by hand","We build a bot that only needs a file forwarded to it: a PDF policy, a bank statement, a voice message or a photo of a receipt. It returns a finished file or text, and the result stays in the database.",{"title":207,"text":208},"You need a loyalty card, a queue or visit tracking","We replace paper cards and sign-up lists: a QR card in Telegram with a reward for visits, an electronic queue with reminders, and a list export to Excel.",{"type":18,"value":210,"toc":217},[211,214],[21,212,213],{},"We build Telegram and VK bots for sales, support and accounting — with their\nown database and integration into the client's systems. At 3 a.m. the bot\nreplies just as fast as at noon.",[21,215,216],{},"These are not business-card bots but production with transactions, migrations\nand live users: billing with payment confirmation, ticketing systems, document\nprocessing, accounting. Every bot comes with its own admin panel, logs and\nbackups.",{"title":28,"searchDepth":29,"depth":29,"links":218},[],"Telegram and VK bots with real business logic: sales, support, accounting, billing — with their own database and integration into the client's systems.","🤖",[222,225,228,231,234,237,240,243,246,249],{"q":223,"a":224},"How much does a Telegram or VK bot cost?","A simple bot — broadcasts, FAQ answers, bookings and request intake — starts at $80. A loyalty program or digital queues start at $160. PDF processing, media download and an AI bot via API start at $250. A bot with payments and account management starts at $400, a ticket system with roles and SLA at $800. Support starts at $100 a month, the first month is free. We quote the exact price after a short free review of the task; there is no hourly billing.",{"q":226,"a":227},"Can you build a bot that tracks finances from bank statements?","Yes, we already run one: it accepts PDF bank statements, detects the bank and account itself, never double-counts overlapping periods and separates transfers between your own accounts from income and expenses. See the “Finance Assistant” case.",{"q":229,"a":230},"Will the bot run on your server or ours?","Whichever suits you. Usually we deploy on the client's server — code and data stay with you. We can also take it under our maintenance with monitoring and backups.",{"q":232,"a":233},"What if Telegram gets blocked?","For critical scenarios we build a backup channel on VK: the same bot, the same data. That's how access delivery works in our VPN service — if Telegram is unreachable, the config arrives via VK.",{"q":235,"a":236},"Can the bot be connected to our system over API?","Yes, a bot talks to other systems over API, that is, through a set of addresses by which one program asks another to perform an action. In our projects this is how the Marzban panel (creating users and extending subscriptions), a chat service's internal API and Google Drive for backups are connected. What to connect to your system, we work out during the free audit.",{"q":238,"a":239},"How can a bot take payments if there is no card acquiring?","The bot shows bank-transfer details, the customer sends a receipt screenshot, and the admins receive it with 'Confirm' and 'Reject' buttons. A safeguard stops two admins from confirming the same payment twice. If you need an automatic payment system, we discuss connecting it separately during the audit.",{"q":241,"a":242},"How do I build an AI bot that transcribes voice messages?","The audio goes to the Google Gemini model together with an instruction in a single request, with no separate speech-recognition step. Before sending, FFmpeg checks the recording and recompresses a heavy file. The audio is deleted right after processing, and if there is no speech in the recording, the bot says so outright.",{"q":244,"a":245},"How can employee and manager rights be separated in a bot?","The role is stored in the database and injected into every request, so a person never sees another role's menu. The ticketing system has four roles: employee, administrator, manager and owner. The manager gets reports and a dashboard but does not see the requests themselves.",{"q":247,"a":248},"Who owns the bot's code and data?","The code and data stay with the client. We deliver the project with documentation: a README written as a technical specification and a CHANGELOG. After delivery there is a month of free support, then maintenance by agreement.",{"q":250,"a":251},"How long does it take to build a bot?","It depends on the scope: the number of roles, integrations and scenarios. We name the timeline after a short free audit, once it is clear what exactly has to be built.",[253,254,255,256,257,258,259,260],"A Telegram bot with button menus, roles and access rights","A database suited to the task: PostgreSQL, MariaDB or SQLite, tables created on start","An admin panel inside the bot: statistics, users, broadcasts, logs","Integrations with external systems over API: a panel, a service, an AI model, cloud storage","Docker Compose deployment on your server or ours; the bot version is written to the log on start","Database backups where the database holds the client's data","Documentation: a README written as a technical specification and a CHANGELOG","One month of free support after delivery, then maintenance by agreement","Sales and support that never sleep",{},20,"\u002Fen\u002Fuslugi\u002Fboty",{"visible":79,"note":83,"items":266},[267,274,281],{"title":268,"price":87,"unit":98,"description":269,"includes":270,"featured":94},"Simple bot","Broadcasts, FAQ answers, bookings and request intake.",[271,272,273],"Loyalty program and digital queues — from $160","PDF processing, media download, AI bot via API — from $250","Backup channel in VK",{"title":275,"price":276,"unit":98,"description":277,"includes":278,"featured":79},"Bot with payments and roles","from $400","Subscription sales with payments, account management, button-based admin panel.",[279,280,110],"Ticket system and service desk — from $800","Database and integrations with CRM and payment providers",{"title":282,"price":283,"unit":284,"description":285,"includes":286,"featured":94},"Support","from $100","per month","Monitoring, backups, small fixes and library updates.",[287,288,289],"First month after delivery is free","Feature requests are quoted separately","Bot activity report on request",{"title":198,"description":219},"Telegram and VK bot development",[293,294,295,296,297,120],"Python","aiogram 3","VK API","PostgreSQL","MariaDB",[299,302,305,308,311,314],{"name":300,"text":301},"Python and aiogram 3","An asynchronous bot answers many people at once while other requests are still being processed.",{"name":303,"text":304},"PostgreSQL, MariaDB, SQLite","A database sized to the task: a ticketing system and record-keeping need a separate database server, while a small club is fine with a single SQLite file.",{"name":306,"text":307},"APScheduler","A scheduler sends reminders, escalations and digests and makes backups on a timetable.",{"name":309,"text":310},"Google Gemini","A neural network transcribes voice messages, reads receipt photos and parses complex text without separate recognition programs.",{"name":312,"text":313},"FFmpeg","It checks a recording's length, compresses large files and splits video into parts so they fit Telegram's limit.",{"name":120,"text":315},"The bot and its database start with one command on any server and do not depend on the machine's settings.","en\u002Fuslugi\u002Fboty",[318,320,323,326,329,332],{"title":138,"text":319},"We go through the task: who uses the bot, which actions it must perform and where the data comes from. You get an estimate based on the scope of work.",{"title":321,"text":322},"Scenarios and roles","We describe the bot's dialogues and the rights of each role: what a customer, an employee, an administrator and a manager see. You get a description against which the finished bot can be checked.",{"title":324,"text":325},"Database and integrations","We design how the data is stored and connect external systems over API. You know where your data will live and what the bot takes from other services.",{"title":327,"text":328},"Bot and admin panel development","We build the bot, a button-based admin panel, broadcasts and logs. You try the working scenarios before the launch on the production server.",{"title":330,"text":331},"Launch in Docker","We deploy the bot on your server or ours and set up the time zone, logs and backups. You get a running service and a README with instructions.",{"title":333,"text":334},"Delivery and support","We hand over the project with documentation and a CHANGELOG and fix any issues free of charge for a month. After that, maintenance by agreement.",[336,341,346,351,356,361,366],{"id":337,"title":338,"text":339,"term":28,"price":28,"case":340},"boty-01","Subscription sales bot with bank-transfer payment","The bot takes a customer from invite-code registration and a trial access to payment. It shows the bank-transfer details (Russian SBP system) and accepts a receipt screenshot, and the admins confirm the payment with a button. The subscription is then extended in the Marzban VPN panel, and the bot reminds the customer 3 days and 1 day before expiry. A person verifies the payment; this project has no automatic card acquiring.","bot-prodazhi-podpisok",{"id":342,"title":343,"text":344,"term":28,"price":28,"case":345},"boty-02","Ticketing and service desk in Telegram","An employee files a request in four steps, and the card appears in the IT team's chat and changes status in place. It includes priorities and an SLA (a target time to resolve), closing only after the employee confirms, and a 1–10 rating. Alongside we build equipment tracking, an access registry with password encryption, a knowledge base and a monthly report for management.","help-desk",{"id":347,"title":348,"text":349,"term":28,"price":28,"case":350},"boty-03","PDF document processing by a bot","The bot accepts a PDF, analyses the page and returns a modified file. In our project it places an emergency commissioner's contacts onto an electronic motor-insurance policy while the policy number, personal data and QR code stay untouched, and a separate command checks the result. The document is processed in memory and never saved to disk.","strahovye-pdf",{"id":352,"title":353,"text":354,"term":28,"price":28,"case":355},"boty-04","Loyalty programme and electronic queues","A customer shows a QR code from the bot, an administrator adds a visit with one tap, and on the sixth night the bot unlocks a reward. A pause between accruals and a staff action log protect against abuse. The same approach works for an electronic queue: sign-up with one button, check-in, a notice when the turn is near, and a list export to Excel.","kompyuternyi-klub",{"id":357,"title":358,"text":359,"term":28,"price":28,"case":360},"boty-05","AI bot: speech transcription, statement and receipt parsing","Voice messages, receipt photos and complex text go to the multimodal Google Gemini model, which works with audio and images directly. This is how a voice-to-text bot with three modes and a finance assistant work: the assistant parses PDF statements from four banks and takes expenses as a plain sentence. Gemini keys run as a pool: when one key's quota runs out, the request goes through the next.","finansovyi-assistent",{"id":362,"title":363,"text":364,"term":28,"price":28,"case":365},"boty-06","Media download and processing bot","A user sends a link and the bot returns the file in the same chat: yt-dlp fetches the video, FFmpeg compresses and splits it. Our project covers 12 platforms, quality choice up to 4K, MP3 with cover art, repeat requests from a cache and files up to 2 GB through a local Bot API. A separate bot downloads Hi-Res music and checks by spectrum that the FLAC is genuine.","savebot",{"id":367,"title":368,"text":369,"term":28,"price":28,"case":370},"boty-07","Account sign-in and management bot for a service","The bot links a service account to a person in Telegram and issues a one-time code for passwordless sign-in. The owner approves registration requests with buttons, and changing a name or password is done from the chat. The bot has no database of its own: it calls the service's internal API, so the data lives in one place.","stream-bot","8C0j4_KQ1nm8LTzs5unip2KhyfqXq2gcpewJEo3he-A",{"id":373,"title":374,"audience":375,"body":385,"description":395,"emoji":396,"extension":33,"faq":397,"includes":428,"lead":436,"meta":437,"navigation":79,"order":438,"path":439,"pricing":440,"seo":465,"serviceType":466,"stack":467,"stackNotes":473,"stem":488,"steps":489,"works":506,"__hash__":539},"services_en\u002Fen\u002Fuslugi\u002Favtomatizaciya.md","Automation and document processing",[376,379,382],{"title":377,"text":378},"Leads are copied from a messenger into the CRM by hand","Requests arrive in a Telegram bot, and then someone copies them into the CRM and a spreadsheet. We build an n8n chain where the request is split into fields and lands in Bitrix24 and Google Sheets on its own.",{"title":380,"text":381},"You need to know about an event in another service right away","Around holidays, Wildberries delivery slots are taken within minutes, and a manager notices a deal status change only when they open the CRM. We poll the API or receive webhooks and send a Telegram message immediately.",{"title":383,"text":384},"Calculations and documents are done by hand","Spreadsheet formulas produce errors that surface only at the cutting stage, and documents get edited in several versions. We move the rules into code: a library calculates by formula, and documents are built from a source file with one command.",{"type":18,"value":386,"toc":393},[387,390],[21,388,389],{},"We set up n8n: linking ERP, marketplaces and CRM into one chain. We sync stock,\nupload orders and catch warehouse delivery slots via the Wildberries and Ozon\nAPIs. Tasks a person used to do by hand now run themselves.",[21,391,392],{},"Where ready-made integrations don't exist, we write our own: monitoring,\nticketing systems, document processing — and embed them into the overall\nscheme.",{"title":28,"searchDepth":29,"depth":29,"links":394},[],"Automation on n8n and custom services: ERP, marketplaces, CRM and Telegram in one chain. Stock sync, orders, warehouse slots on Wildberries and Ozon.","🔄",[398,401,404,407,410,413,416,419,422,425],{"q":399,"a":400},"Can you set up n8n to integrate with Wildberries and Ozon?","Yes, we specialize in integrations with Russian marketplaces: automatic stock sync, order uploads and price updates through the WB and Ozon APIs, running reliably 24\u002F7.",{"q":402,"a":403},"Why n8n instead of Zapier or Make?","n8n lives on your server: no operation limits, data doesn't leave for someone else's cloud, and the service won't switch off due to regional restrictions. Same scenarios — webhooks, schedules, branching — without a monthly fee for every step.",{"q":405,"a":406},"What if n8n has no integration we need?","We write our own node or a separate Python service and plug it into the chain. That's how the Wildberries warehouse slot monitor works — n8n isn't needed there, a custom bot polls the API every 30 seconds.",{"q":408,"a":409},"How do I pass a Telegram bot request into a CRM and a spreadsheet without manual work?","The bot hands the message to n8n. The scenario splits it into fields, creates a record in Bitrix24 and appends a row to Google Sheets. That is how the small-business request automation we built works: no manual copying.",{"q":411,"a":412},"How can a manager learn about a deal status change immediately?","When the status changes, the CRM calls an n8n address, which is called a webhook. The scenario finds the responsible manager and sends them a Telegram message, so they don't need to open the CRM.",{"q":414,"a":415},"Where are n8n scenarios stored and who owns them?","A scenario is exported to a JSON file that can be imported on another server and kept in git. n8n runs on the client's server, keys and tokens are stored in it rather than in the file. Code and data stay with the client.",{"q":417,"a":418},"How do I avoid missing free delivery slots on Wildberries?","The bot polls the API every 30 seconds and sends slots for the chosen warehouses, dates and acceptance coefficients. The message has a direct booking link: from the alert to booking takes about 10 seconds. A person makes the decision.",{"q":420,"a":421},"Can production calculations be automated, for example a cardboard box blank?","Yes. For a packaging manufacturer we built a C++17 library: from inner dimensions and board thickness it calculates the blank for FEFCO 0200, 0201 and 0203 and the layout on a sheet. The formulas are covered by tests. The scoring allowance should be checked against a specific plant's tooling.",{"q":423,"a":424},"Can document preparation for management be automated?","Yes. The source is kept in Markdown in git, and a script builds the .docx for signing in the agreed layout. That is how we built the survey package for a museum complex network: five internal memos and a commercial proposal. Edits go into the source, because a change made in Word is overwritten by the next build.",{"q":426,"a":427},"How much does automation cost and how fast is it done?","Linking two services, webhooks and notifications, self-hosted n8n start at $80 per workflow. Leads from a bot or website into CRM and Google Sheets start at $400. Marketplace slot monitoring starts at $160, engineering calculations for production at $500. The total depends on how many systems must be linked and whether they have an API. We name the price and timeline after a short free audit; there is no hourly billing.",[429,430,431,432,433,434,75,435],"n8n scenarios as JSON files: they can be moved to another server and kept in git","n8n on your own server rather than a cloud plan: no cap on the number of runs","An execution log: for every run you can see whether the request went through","A Telegram bot or alerts with filters tuned to your task","Tests where the project includes calculations: formula and input validation checks","Code and data stay with the client","One month of free support after handover","Less manual routine for your staff",{},30,"\u002Fen\u002Fuslugi\u002Favtomatizaciya",{"visible":79,"note":83,"items":441},[442,450,457],{"title":443,"price":87,"unit":444,"description":445,"includes":446,"featured":94},"Service connections","per workflow","Webhooks and manager notifications, self-hosted n8n, document assembly from Markdown to Word.",[447,448,449],"Wildberries slot monitoring — from $160","Workflows are delivered as files and can live in git","Keys and tokens are stored in n8n, not in the file",{"title":451,"price":276,"unit":98,"description":452,"includes":453,"featured":79},"Leads into CRM","Bot or website → CRM → Google Sheets, no manual copying.",[454,455,456],"Every run is visible in the execution log","n8n on your server: no limits on runs","Scheme agreed before the build",{"title":458,"price":459,"unit":98,"description":460,"includes":461,"featured":94},"Engineering calculations","from $500","Calculation services for production: sheet layouts, nesting, calculators.",[462,463,464],"Result as a service or a spreadsheet","README as a technical specification and CHANGELOG","Free audit before the proposal",{"title":374,"description":395},"Business process automation and integrations",[468,469,470,471,472,293],"n8n","Webhooks","WB API","Ozon API","1C",[474,476,478,480,482,485],{"name":468,"text":475},"An automation builder: steps are assembled from ready-made blocks and triggered by an event, so no separate program is needed for each link.",{"name":469,"text":477},"An address to which a system sends an event by itself: this is how the CRM reports a deal status change without waiting for someone to look.",{"name":470,"text":479},"The Wildberries interface through which the bot gets delivery slots without opening the seller account.",{"name":293,"text":481},"The language for separate services where n8n has no ready node: the slot bot and document building.",{"name":483,"text":484},"Google Sheets","A familiar tracking spreadsheet that also serves as a fallback record of requests if the CRM is unavailable.",{"name":486,"text":487},"C++17","A fast calculation library that embeds into production software with no external dependencies.","en\u002Fuslugi\u002Favtomatizaciya",[490,492,495,498,501,504],{"title":138,"text":491},"We look at where staff copy data by hand and which systems are involved. Before any estimate, you get a list of what can be automated.",{"title":493,"text":494},"Integration check","We find out whether each system has an API or webhooks so it can join the chain. If there is no ready-made node, we plan a separate Python service.",{"title":496,"text":497},"Chain design","We describe what triggers the scenario, which steps follow and where the data ends up. You approve the design before we build.",{"title":499,"text":500},"Build and launch on the server","We build the scenarios in n8n or write a separate service and install it on the client's server. Keys and tokens are stored inside n8n.",{"title":502,"text":503},"Check against real data","We run the chain and verify the result in the execution log: the request arrived, the status changed, the row appeared in the spreadsheet.",{"title":153,"text":505},"We hand over the scenarios as files, a README written as a technical specification and a CHANGELOG. Support is free for a month after handover.",[507,512,516,520,525,530,535],{"id":508,"title":509,"text":510,"term":28,"price":28,"case":511},"avtomatizaciya-01","Telegram bot requests into CRM and Google Sheets","An n8n scenario takes a message from the bot, splits it into fields, creates a record in Bitrix24 and appends a row to a spreadsheet. Every run is visible in the execution log. The result is a request with no manual copying.","n8n-crm",{"id":513,"title":514,"text":515,"term":28,"price":28,"case":511},"avtomatizaciya-02","Manager alerts and payment system webhooks","When a deal status changes, the CRM calls an n8n address by itself, and the scenario finds the responsible manager and messages them in Telegram. Payment system events arrive at the same node and are recorded without manual reconciliation.",{"id":517,"title":518,"text":519,"term":28,"price":28,"case":511},"avtomatizaciya-03","Self-hosted n8n on the client's server","We install n8n on your server instead of a cloud plan: there is no cap on the number of runs, only the server's capacity. Scenarios are exported as JSON files, moved between servers and kept in git. Keys and tokens live inside n8n, not in the scenario file.",{"id":521,"title":522,"text":523,"term":28,"price":28,"case":524},"avtomatizaciya-04","Wildberries delivery slot monitoring","A Telegram bot polls the Wildberries API every 30 seconds and sends free slots for the chosen warehouses, dates and acceptance coefficients. The message contains a direct booking link. The bot runs on a server around the clock.","wb-monitoring",{"id":526,"title":527,"text":528,"term":28,"price":28,"case":529},"avtomatizaciya-05","Box blank and sheet layout calculation (FEFCO)","We move formulas out of spreadsheets into code: a C++17 library calculates a cardboard box blank for FEFCO styles, volumes and the layout of blanks on a corrugated sheet. Invalid input is rejected with a message, and the formulas are covered by tests. The library has no dependencies and embeds into production software.","box-calc",{"id":531,"title":532,"text":533,"term":28,"price":28,"case":534},"avtomatizaciya-06","LAN and CCTV survey with a document package","We describe the local network, video surveillance and remote access: every fact has a stated source, and anything unconfirmed goes into separate lists for on-site checking. The output is a report, internal memos and a commercial proposal with work stages.","obsledovanie-seti-muzeya",{"id":536,"title":537,"text":538,"term":28,"price":28,"case":534},"avtomatizaciya-07","Building Word documents from Markdown","The document source lives in Markdown in git, and a Python script builds the .docx for signing in the agreed layout: A4, Times New Roman 12. Edits go into the source, so the change history is preserved. Passwords and keys never reach the repository.","ADtMdNRk957oLiov6fIjkcLVB5C38Ow4GS5wc2z7f0E",{"id":541,"title":542,"audience":543,"body":553,"description":563,"emoji":564,"extension":33,"faq":565,"includes":599,"lead":608,"meta":609,"navigation":79,"order":610,"path":611,"pricing":612,"seo":639,"serviceType":640,"stack":641,"stackNotes":648,"stem":665,"steps":666,"works":683,"__hash__":713},"services_en\u002Fen\u002Fuslugi\u002Finfrastruktura.md","Infrastructure and networks",[544,547,550],{"title":545,"text":546},"The team lost access to work services","Because of regional restrictions Canva, Notion, Jira and AI tools stopped opening, and public workarounds break the security policy. We deploy a corporate gateway on the company's own servers: traffic is encrypted and access is split by role.",{"title":548,"text":549},"Websites and services share one server and get in each other's way","Editing one site can take down a neighboring service, and certificates are renewed by hand. We separate them into containers and docker networks behind a single entry nginx.",{"title":551,"text":552},"A VPN gets cut on the path between countries","A direct connection to an exit server abroad is filtered at the moment it is established. We build an entry node in Russia, a permanent tunnel between nodes and an exit node abroad, as in our own VPN service.",{"type":18,"value":554,"toc":561},[555,558],[21,556,557],{},"We move Notion, Zapier and Google Workspace onto the client's own servers — the\ncompany never loses access to its tools overnight, and data never leaves the\nperimeter. We build private VPN networks for teams and services. We set up\nauto-deploy, monitoring and backups — if something breaks, you find out from an\nalert within minutes, not from a customer complaint.",[21,559,560],{},"A separate line of work is censorship circumvention for business: an entry node\nin Russia, an exit node abroad, SNI-based routing and a custom client for\nWindows and Android that picks a live entry point by itself.",{"title":28,"searchDepth":29,"depth":29,"links":562},[],"Self-hosted infrastructure, private VPN networks for the team, auto-deploy, monitoring and backups. Data never leaves the company perimeter.","🐳",[566,569,572,575,578,581,584,587,590,593,596],{"q":567,"a":568},"How much does a server or VPN setup cost?","A corporate gateway or your own mail on the domain starts at $80, connection guides for staff at $50, a VPN route with entry and exit in different countries at $150. A server for websites on Docker and nginx with backups starts at $160, support at $100 a month. Your own voice, chat and streaming server starts at $650, a service built for load with its own client at $2,500. The exact figure comes in the proposal after a free audit; there is no hourly billing.",{"q":570,"a":571},"What is self-hosted and why does it matter?","It's a private cloud server owned only by the client: nobody can restrict access, shut down the service or peek at the data. Full control instead of someone else's “cloud” — but also full responsibility for setup and maintenance, which is usually what we do.",{"q":573,"a":574},"Do I need my own server for self-hosted solutions?","Not necessarily physical hardware — a VPS from a Russian or foreign provider works fine. We'll help you pick the right option for your budget and task, and set everything up turnkey.",{"q":576,"a":577},"How long does it take to set up a VPN network for a team?","A basic WireGuard setup for a team of up to 10 takes 1-2 days. Complex configurations (several sites, censorship circumvention, a custom client) take up to 5 business days, including instructions and team training.",{"q":579,"a":580},"Do you provide support after the project is delivered?","Yes. After handover — a month of free support. Then you can subscribe to ongoing maintenance: monitoring, updates, backups, fast response to issues.",{"q":582,"a":583},"How do I host several websites on one server so they don't interfere with each other?","One entry nginx accepts all requests, terminates TLS and routes them to the sites. Each site lives in its own container and its own docker network, so the sites cannot see each other. Databases are attached only to the internal networks of their own projects.",{"q":585,"a":586},"How do I restore a team's access to Canva, Notion, Jira and AI tools without public VPNs?","We deploy a corporate gateway on the company's servers: Xray and nginx run on Linux, traffic is encrypted and access is split by role. An employee connects in one click. Corporate data stays inside the perimeter instead of passing through public services.",{"q":588,"a":589},"Can I run mail on my own domain instead of at the host?","Yes. docker-mailserver with Postfix, Dovecot, Rspamd and fail2ban handles receiving and sending, and you read mail in Roundcube or any client. DNS records are required: MX, SPF, DKIM, DMARC and a PTR reverse record. On our own server the host blocks outgoing mail ports: receiving works, while outgoing messages wait in the queue until the route is opened.",{"q":591,"a":592},"What can be done if a VPN is blocked on the path from Russia abroad?","Measurements on 20 August 2026 showed 35–60% of TCP handshakes to our exit server were lost while ping had no loss. We replaced a connection per client with one permanent frp tunnel and split the domains into traffic, subscriptions and admin. The limit of the scheme: if all domains point to one IP address, a block by address takes them all down at once.",{"q":594,"a":595},"Can we run work calls and chats on our own server instead of a cloud messenger?","Yes. We built such a platform: three shared voice channels, calls, groups, screen sharing and chats with a 90-day history. Voice goes directly between participants and is encrypted between browsers, and the stream is delivered over SRT. It all works in the browser with no installation.",{"q":597,"a":598},"How do I avoid losing data on a server failure or being left without HTTPS?","certbot renews Let's Encrypt certificates on a timer, and a hook after renewal makes nginx reload the certificate without a restart. Nightly snapshots cover mail (kept for two weeks) and the database and files of some hosted sites. For the streaming service a separate machine pulls database snapshots and checks that they restore, and the administrator learns about a failure from a Telegram message.",[600,601,602,603,604,605,606,607],"Infrastructure deployed in Docker: an entry nginx, containers and a separate docker network for each service","HTTPS certificates with automatic renewal and expiry checks","Nightly data backups","Container health checks and a Telegram message to the administrator on failure","Role-based access and traffic encryption","Step-by-step connection guides for staff, by platform","Configuration in a git repository; code and data stay with the client","A README written as a technical specification, a CHANGELOG and one month of free support after handover","Self-hosted, private VPN networks, DevOps and monitoring",{},40,"\u002Fen\u002Fuslugi\u002Finfrastruktura",{"visible":79,"note":83,"items":613},[614,622,631],{"title":615,"price":87,"unit":616,"description":617,"includes":618,"featured":94},"Access and mail","per setup","A corporate gateway for staff, your own mail on the domain with DKIM and SPF.",[619,620,621],"Connection guides for staff — from $50","VPN route with entry and exit in different countries — from $150","Settings are documented",{"title":623,"price":624,"unit":625,"description":626,"includes":627,"featured":79},"Server for websites","from $160","per server","Docker, nginx, certificates, backups and monitoring: several sites on one server.",[628,629,630],"Support — from $100 a month","Migration from another host without downtime","Checked after every change",{"title":632,"price":633,"unit":98,"description":634,"includes":635,"featured":94},"Voice, chat, streaming","from $650","A communication server instead of Discord: voice rooms, chats, screen streaming.",[636,637,638],"A service built for load with its own client — from $2,500","Data does not leave for a third-party cloud","Keeps working when public services are blocked",{"title":542,"description":563},"Server, VPN and self-hosted infrastructure setup",[120,642,119,643,644,645,646,647],"Kubernetes","WireGuard","Xray \u002F VLESS","Marzban","Prometheus","Grafana",[649,652,654,657,660,662],{"name":650,"text":651},"Docker Compose","Each service and site runs in its own container and network, so one failure doesn't drag down its neighbors.",{"name":119,"text":653},"A single entry point: it accepts HTTPS, checks access and passes the request to the right service.",{"name":655,"text":656},"certbot","It issues free Let's Encrypt certificates and renews them by itself, with no site downtime.",{"name":658,"text":659},"Xray","A proxy protocol core: it routes and encrypts the traffic of the corporate gateway and the VPN.",{"name":645,"text":661},"A panel where VPN users and subscriptions are created and traffic is tracked.",{"name":663,"text":664},"frp","It keeps a permanent tunnel between nodes where a direct cross-border connection gets cut.","en\u002Fuslugi\u002Finfrastruktura",[667,669,672,675,678,681],{"title":138,"text":668},"We look at what runs now and where, which services are unavailable or get in each other's way, and which data must stay inside the perimeter. Before any estimate, you get a description of the task.",{"title":670,"text":671},"Infrastructure design","We decide which services go on which servers, how to split them into containers and networks, and who gets access with which role.",{"title":673,"text":674},"Deployment in Docker","We install the entry nginx, the service containers and HTTPS certificates with automatic renewal on the client's server or ours.",{"title":676,"text":677},"Access and protection","We set up access roles and traffic encryption, and for mail and SSH login we turn on brute-force protection (fail2ban).",{"title":679,"text":680},"Backups and monitoring","We enable nightly data snapshots, container health checks and alerts to the administrator about failures.",{"title":153,"text":682},"We hand over the configuration in a repository, a README written as a technical specification, a CHANGELOG and connection guides. Support is free for a month after handover.",[684,689,694,698,703,708],{"id":685,"title":686,"text":687,"term":28,"price":28,"case":688},"infrastruktura-01","Corporate gateway for access to work services","The gateway runs on the company's Linux servers: Xray handles routing and encryption, nginx sits at the entrance. Access is split by employee role, and connecting takes one click. Corporate data stays inside the perimeter.","korporativnyi-shlyuz",{"id":690,"title":691,"text":692,"term":28,"price":28,"case":693},"infrastruktura-02","A server for several websites on Docker and nginx","A single entry nginx accepts HTTP and HTTPS and routes requests to the sites. Each site lives in its own container and its own docker network, and Let's Encrypt certificates renew themselves. The configuration is kept in a git repository.","server-saitov",{"id":695,"title":696,"text":697,"term":28,"price":28,"case":693},"infrastruktura-03","Your own mail on your domain","A docker-mailserver container with Postfix, Dovecot, Rspamd and fail2ban receives and sends mail, and you read it in Roundcube or a mail client. We set up the DNS records: MX, SPF, DKIM, DMARC and PTR. Spam is not discarded but placed in the Junk folder.",{"id":699,"title":700,"text":701,"term":28,"price":28,"case":702},"infrastruktura-04","VPN route: an entry node in Russia and an exit abroad","nginx on the entry node splits websites, the panel and the VPN by SNI on one port, and a permanent frp tunnel carries all traffic to the exit server. A separate Marzban node with VLESS Reality runs autonomously. A domain change is one command with no dropped sessions.","vpn-trassa",{"id":704,"title":705,"text":706,"term":28,"price":28,"case":707},"infrastruktura-05","Voice, chat and streaming on your own server","A closed browser-based platform: SRT streaming, viewing over HLS and WebRTC, voice directly between participants (up to 10 people per channel), chats and access roles. Everything runs in Docker Compose, and a 90-day chat history sits in SQLite on your server.","toshastream",{"id":709,"title":710,"text":711,"term":28,"price":28,"case":712},"infrastruktura-06","VPN connection guides for staff and customers","Five static pages: Android, iPhone and iPad, Windows, macOS and Linux. They open in a Telegram Mini App from the bot, so a person with no experience doesn't have to write to support. No build step or server is needed for them.","instrukcii-vpn","JG5zZ3qD4DGXS1eBX08MYQpsX9LAnaRviTFYt-kq6q8",{"id":715,"title":716,"audience":717,"body":727,"description":737,"emoji":738,"extension":33,"faq":739,"includes":764,"lead":771,"meta":772,"navigation":79,"order":773,"path":774,"pricing":775,"seo":800,"serviceType":801,"stack":802,"stackNotes":809,"stem":823,"steps":824,"works":841,"__hash__":865},"services_en\u002Fen\u002Fuslugi\u002Fprilozheniya.md","Android and Windows apps",[718,721,724],{"title":719,"text":720},"Users should not have to deal with settings","We hide the complexity behind one button and sensible defaults: the subscription is entered once, and the app picks a working entry point and updates itself. Our VPN client works this way.",{"title":722,"text":723},"A fleet of Windows 7 machines","We build a separate client on .NET Framework 4.8 that runs on the old Windows and shares the logic with the main version.",{"title":725,"text":726},"You learn about crashes from users, not from the app","We build in over-the-air updates with signature checks and crash reports sent to your own server. The developer sees the crash and the log before a user writes to support.",{"type":18,"value":728,"toc":735},[729,732],[21,730,731],{},"Application development for Windows (including Windows 7 — for clients with an\nolder fleet) and Android. One codebase of logic for all platforms, a native UI\nfor each, over-the-air self-updates and crash reports to the developer — so we\nlearn about a problem before the user does.",[21,733,734],{},"Done so far: a VPN client with a swappable engine for three platforms and an\naudio player with direct sound output to a USB DAC, bypassing the system mixer.",{"title":28,"searchDepth":29,"depth":29,"links":736},[],"Application development for Windows (including Windows 7) and Android: from a VPN client with a swappable engine to an audio player with direct USB DAC output.","🖥️",[740,743,746,749,752,755,758,761],{"q":741,"a":742},"Why Windows 7 — it's been unsupported for years?","Some clients — checkouts, warehouses, manufacturing — run a fleet on Windows 7, and nobody will replace it for one program. We build a separate client on .NET Framework 4.8 that runs there, sharing the logic with the main version.",{"q":744,"a":745},"Do you publish to Google Play and app stores?","Both ways: through stores or bypassing them — APK distribution via a bot link with over-the-air self-updates and a signed release list. For internal corporate apps the second path is usually simpler.",{"q":747,"a":748},"Will the app update itself?","Yes: we build in self-updates with signature verification — on Android the install is silent, on Windows only changed files are downloaded, and on failure the update rolls back.",{"q":750,"a":751},"Can one app be built for Android and Windows at once?","The logic can be shared while the interface is built per platform. In our VPN client, Android is written in Kotlin, Windows 10\u002F11 in C# and WPF, and Windows 7 on .NET Framework 4.8, and the Windows clients share common logic. A common layer sits between the interface and the VPN engine, so the engine can be replaced without rewriting the app.",{"q":753,"a":754},"What happens to traffic if the VPN client or its engine crashes?","On Windows in TUN mode, WFP 'leak protection' filters are active: outgoing traffic outside the tunnel is blocked, and when the engine drops or restarts, programs see 'no internet' rather than the real address. On Android the tunnel stays up until 'Disconnect' is pressed, and the system 'always-on VPN' protects traffic before the app starts: the main screen reminds the user if it is off.",{"q":756,"a":757},"How can we collect crash reports without third-party services?","The app sends the log, version, network state and crash reason with a token to a receiver on your own server. Subscription links, keys, passwords and tokens are masked on the device when the log is written, before sending. If the receiver is unavailable, the VPN client queues reports on disk: up to 20 files and 50 MB.",{"q":759,"a":760},"Can Android play audio to a USB DAC without alteration?","Yes. The OshaPlay player takes over the DAC through the USB Host API and sends audio in isochronous transfers, bypassing the system mixer, which would otherwise resample every track to 48 kHz. Direct output works with UAC2 DACs using adaptive or synchronous transfer, while asynchronous DACs and UAC1 still play through the system.",{"q":762,"a":763},"How much does an app cost and how fast can it be built?","An Android app starts at $2,100. A VPN client for Android and Windows runs from $4,900 to $18,000 and above depending on requirements: server-driven updates, statistics, a Windows 7 client. Store publishing starts at $500. Over-the-air updates and a crash receiver as separate jobs are quoted in the proposal after a free audit. No hourly billing: the price is fixed for the result.",[765,766,767,768,769,770,76],"An app for Android, Windows 10\u002F11 or Windows 7 with a native UI for each platform","Over-the-air self-update with a signed release list","Crash reports and logs sent to your own receiver, with secrets masked on the device","A 'How to use' section and a version history inside the app","Installation from a file: an APK for Android, an archive with a built-in installer for Windows","A README written as a technical specification, with known limitations, and a CHANGELOG","Desktop and mobile development for the task at hand",{},50,"\u002Fen\u002Fuslugi\u002Fprilozheniya",{"visible":79,"note":83,"items":776},[777,785,793],{"title":778,"price":779,"unit":98,"description":780,"includes":781,"featured":94},"Android app","from $2,100","A native Kotlin app: hardware access, offline data, custom design.",[782,783,784],"Crash and log receiver — quoted after the audit","Over-the-air updates — quoted after the audit","Source code is handed to the client",{"title":786,"price":787,"unit":98,"description":788,"includes":789,"featured":79},"VPN client Android + Windows","$4,900 – $18,000","The price depends on requirements: server-driven updates, statistics, a Windows 7 client.",[790,791,792],"Two engines and endpoint switching without restart","Crash reports and logs to your server","Signed builds, over-the-air updates",{"title":794,"price":459,"unit":795,"description":796,"includes":797,"featured":94},"Store publishing","per app","RuStore and Google Play: signing, build, store page, moderation replies.",[798,799,628],"One-click CI build","Screenshots and descriptions prepared",{"title":716,"description":737},"Android and Windows application development",[803,804,805,806,807,808],"Kotlin","Jetpack Compose","C# \u002F .NET 10","WPF",".NET Framework 4.8","C++ (NDK)",[810,813,816,818,820],{"name":811,"text":812},"Kotlin and Jetpack Compose","The basis of our Android apps: an adaptive interface that follows the system theme.",{"name":814,"text":815},"C# \u002F .NET 10 and WPF","The basis of the Windows 10\u002F11 client: native windows and the engine launched as a separate process.",{"name":807,"text":817},"Lets us build a client that runs on Windows 7, where newer .NET versions do not start.",{"name":808,"text":819},"Where timing and precision matter, such as the audio stream to a USB DAC, the code is written in C++ for Android.",{"name":821,"text":822},"Xray and sing-box","Swappable VPN engines: the client talks to them through a thin layer, so one engine can be replaced with another.","en\u002Fuslugi\u002Fprilozheniya",[825,827,830,833,836,839],{"title":138,"text":826},"You describe the task: platforms, devices, what already exists. We go through it and state the scope of work.",{"title":828,"text":829},"Platforms and architecture","We decide which logic is shared and what is separate on each platform, and which constraints apply, for example an old Windows or a specific DAC.",{"title":831,"text":832},"Development on real devices","We build the app and check it beyond the emulator. Test builds and logs come from real phones and computers.",{"title":834,"text":835},"Testing at the client","Test builds are installed from a file. Tester mode sends crash and anomaly reports, and we fix bugs from them.",{"title":837,"text":838},"Release and distribution","We prepare the APK and the Windows installer, sign the release list and turn on self-update.",{"title":153,"text":840},"We hand over the code, documentation and access to the report receiver. The first month of support is free, after that maintenance is by agreement.",[842,847,852,856,860],{"id":843,"title":844,"text":845,"term":28,"price":28,"case":846},"prilozheniya-01","Android audio player with USB DAC output","A player for a personal library that talks to a USB DAC directly over USB Audio Class, bypassing the Android system mixer, and delivers the track bit-perfect. It has its own resampler, a Hi-Res fake check based on the spectrum, playlists, search across four sources and an audiobook section. It ends with an APK that then updates itself.","oshaplay",{"id":848,"title":849,"text":850,"term":28,"price":28,"case":851},"prilozheniya-02","VPN client for Android and Windows","An app with one 'Connect' button: the subscription is entered once, the entry point is chosen by a race, the client switches by itself when the connection drops, and Russian sites go direct. The Xray or sing-box engine is plugged in through a thin layer, so it can be replaced. The client is currently in testing with users.","vpn-klient",{"id":853,"title":854,"text":855,"term":28,"price":28,"case":851},"prilozheniya-03","Windows 7 client","A separate build on .NET Framework 4.8 and WinForms that shares its logic with the main client. Windows 7 has no TUN, so it works through the system proxy, with sing-box as the engine. It was built and run on Windows 11 and has not yet been tested on a real Windows 7.",{"id":857,"title":858,"text":859,"term":28,"price":28,"case":851},"prilozheniya-04","Over-the-air app self-update","The release list is signed with a key, and the public key is built into the app: a forged list is rejected. Android downloads the APK for its own architecture, Windows downloads only changed files and rolls the replacement back on failure. There is a tester channel and a regular one.",{"id":861,"title":862,"text":863,"term":28,"price":28,"case":864},"prilozheniya-05","Crash and log report receiver","A small Python service in Docker on your server, where the app sends the log, version, network state and crash reason with a token. Secrets are masked on the device before sending, and if the connection is lost the report waits in a queue on disk. It ends with a script the developer uses to read the reports.","oshaplay-diag","iwAyqAoo7sDhBBEBTEBvDLJ3CBhBs9Lz7AwUs7F_4XE",{"id":867,"extension":868,"groups":869,"meta":1573,"stem":1574,"__hash__":1575},"glossary_en\u002Fen\u002Fglossary.json","json",[870,955,977,1078,1133,1227,1309,1341,1359,1401,1432,1484,1511],{"group":871,"terms":872},"Business terms",[873,879,884,890,895,900,905,910,915,920,925,930,935,940,945,950],{"id":874,"title":875,"what":876,"how":877,"howLabel":878},"crm","CRM","Software for tracking customers and deals — who reached out, what stage the deal is at, who should call and when. A replacement for the Excel sheet that sooner or later falls apart.","We connect bots and automation to it through its API — requests from the website and Telegram land in the CRM straight away, no manual copying.","How we use it",{"id":880,"title":881,"what":882,"how":883,"howLabel":878},"saas","SaaS","\"Software as a service\" — a product you use by subscription in the browser, with no installation and no server of your own (Zapier, Notion, most CRMs).","We often offer a self-hosted alternative to a SaaS product when a client wants to stop depending on someone else's platform and pricing.",{"id":885,"title":886,"what":887,"how":888,"howLabel":889},"webhook","Webhook","An automatic notification one service sends to another when something happens — \"payment received\" or \"new order\" — instead of asking \"anything new?\" every minute.","The backbone of most of our n8n automations: a marketplace order triggers the chain of actions immediately rather than waiting for someone to start it by hand.","How we apply it",{"id":891,"title":892,"what":893,"how":894,"howLabel":878},"deploy","Production \u002F Deploy","Production is the live version of a service that real people use (as opposed to a test one). Deploying is the process of shipping a new version of the code to the server.","We deploy through CI\u002FCD — automatically, with no manual file copying and no risk of shipping the wrong version.",{"id":896,"title":897,"what":898,"how":899,"howLabel":878},"hosting","Hosting and domain","Hosting is the server where your website physically lives. A domain is its address on the internet (for example, devunit-lab.ru), registered separately and renewed every year.","We help choose both for the task at hand and move websites between hosts with no downtime and no lost search rankings.",{"id":901,"title":902,"what":903,"how":904,"howLabel":878},"backup","Backup","A spare copy of your data that saves the day when the server breaks, files get deleted by mistake or ransomware encrypts everything.","We set up automatic backups with rotation (old copies delete themselves) — we never rely on \"I'll do it by hand later\".",{"id":906,"title":907,"what":908,"how":909,"howLabel":878},"dns","DNS","The \"phone book\" of the internet — it turns a readable site name (devunit-lab.ru) into the numeric server address the request actually goes to.","We configure DNS records when moving a site or setting up email on a domain — without it, the right address simply leads nowhere.",{"id":911,"title":912,"what":913,"how":914,"howLabel":878},"ssh","SSH","A secure way to connect to a server remotely and manage it through commands — how servers are administered without physical access.","Our main channel to client servers and our own — by key, not by password; it is far safer.",{"id":916,"title":917,"what":918,"how":919,"howLabel":889},"sla","SLA","A written commitment on response and recovery times — for example, \"we answer within an hour and fix within a day\". It protects both sides from vague expectations.","We write it into the support contract after handover — specific deadlines, not \"as soon as we can\".",{"id":921,"title":922,"what":923,"how":924,"howLabel":878},"nda","NDA","A non-disclosure agreement — a legal obligation not to reveal project details and client data to third parties.","We sign one on request — which is why some case studies in the portfolio show no company name, only the substance and the stack.",{"id":926,"title":927,"what":928,"how":929,"howLabel":889},"ltv","LTV","Customer lifetime value — how much money a customer brings the company on average over the whole relationship, not from a single purchase.","A metric we grow with loyalty programmes and automatic customer win-back — keeping an existing customer is cheaper than acquiring a new one.",{"id":931,"title":932,"what":933,"how":934,"howLabel":878},"tz","Technical specification","A document stating exactly what we build, what the client receives and how to check it is done. Without it the \"I thought that was included\" argument is inevitable.","We write the specification after a free audit and set timelines once it is approved. The same document becomes the project README on delivery.",{"id":936,"title":937,"what":938,"how":939,"howLabel":878},"kp","Proposal (quote)","A letter with the scope, price and timeline for a specific task. Prices on our site are starting prices; the exact figure comes in the proposal after the audit.","The proposal is free. No hourly billing: the price is fixed for the result, and payment is usually by stage.",{"id":941,"title":942,"what":943,"how":944,"howLabel":878},"mvp","MVP","The minimum working version of a product: only what is impossible to launch without. It tests the idea on real customers in weeks rather than months and grows from their feedback.","The studio's own products started as MVPs: the VPN service with a bot, the player, the laser tag system. We suggest the same to clients: launch small, measure, extend.",{"id":946,"title":947,"what":948,"how":949,"howLabel":878},"maintenance","Maintenance (support plan)","A monthly fee for keeping a site, bot or server running: updates, backups, monitoring, small fixes. Cheaper than repairing after a failure.","The first month after delivery is free, then from $100 a month. This is what makes keeping everything on your own server possible without hiring a sysadmin.",{"id":951,"title":952,"what":953,"how":954,"howLabel":878},"git","Git and repositories","A system that stores every version of the code and lets you roll back to any of them. A repository is a project folder under its control, usually on GitHub, private.","Every studio project is a private repository with a README written as a specification and a CHANGELOG. On delivery we hand access to the client: the code is theirs.",{"group":956,"terms":957},"General terms",[958,963,968,972],{"id":959,"title":960,"what":961,"how":962,"howLabel":878},"self-hosted","Self-hosted","In plain words — your own private cloud server where you are the only owner, rather than a third-party service like Zapier or Make. Nobody can restrict your access, raise the price retroactively or shut the service down one morning.","We deploy your automation, bots and internal services on it. The downside: full control means full responsibility — the server needs maintenance, updates and monitoring. Usually we take care of that 🙂",{"id":964,"title":965,"what":966,"how":967,"howLabel":878},"api","API","The way one program asks another for data or actions — for example, your website asks Telegram to send a message, or a marketplace for order data.","If a service (CRM, warehouse, marketplace, bank) has an API, we plug it into your automation directly — no manual work and no copying data by hand.",{"id":969,"title":198,"what":970,"how":971,"howLabel":889},"telegram-bots","A program inside Telegram or VK that can answer customers, take requests, notify about orders or keep records — with no human involved, 24\u002F7.","We build bots on the official Telegram Bot API and the VK community API, with inline buttons and command menus instead of bulky keyboards. We connect them to your CRM, warehouse or payments. Prices are on the “Bots” service page.",{"id":973,"title":974,"what":975,"how":976,"howLabel":878},"websites","Websites","A website is a page or a set of pages on the internet that tell people about your business, take requests or sell goods. Unlike a social media account or a marketplace listing, a website is fully yours: the address, the design and the data belong to you, not the platform.","We build websites end to end — from a simple one-page landing with a single goal (a request, a sale, a booking) to an online store with its own admin panel. Unlike site builders (Tilda, Wix and the like), there is no monthly platform rent, no third-party limits, and any automation can be built in — a chat bot, request intake or a warehouse integration.",{"group":978,"terms":979},"Backend & AI",[980,985,990,995,1000,1005,1010,1014,1019,1024,1029,1034,1039,1044,1049,1054,1059,1064,1068,1073],{"id":981,"title":982,"what":983,"how":984,"howLabel":878},"python","Python (FastAPI, Django)","One of the most widespread programming languages — used for simple scripts and large backends alike (the server side: the part users don't see directly, but which handles data and logic).","Our main language for bots and backends. FastAPI is a fast, modern framework (a ready-made toolkit so nothing is written from scratch) for APIs; Django is the \"heavier\" option for complex admin panels and business logic.",{"id":986,"title":987,"what":988,"how":989,"howLabel":889},"go","Go","A compiled programming language from Google — as fast as C++, but noticeably simpler to develop in, with excellent built-in support for parallel work.","For services where performance under load matters — for example, media servers streaming video to many viewers at once.",{"id":991,"title":992,"what":993,"how":994,"howLabel":878},"cpp","C++","A low-level programming language with direct hardware access — maximum performance at the cost of more complex development.","Firmware for microcontrollers (ESP32) and calculations where microseconds count. We keep behaviour identical to the Python version through a shared protocol and automatic cross-checks in CI.",{"id":996,"title":997,"what":998,"how":999,"howLabel":878},"nodejs","Node.js (Express, NestJS)","A runtime that lets JavaScript run on the server instead of in the browser.","We reach for it when a project needs to handle many simultaneous connections quickly — for example, chats or real-time webhooks.",{"id":1001,"title":1002,"what":1003,"how":1004,"howLabel":878},"google-ai-api","Google AI API (Gemini)","Programmatic access to Google's neural networks (the Gemini model family) — your code can \"ask\" the AI something and get an answer automatically.","The AI assistant in the chat on this website runs on it — it answers visitors' questions and gathers the basics about their task before a call with you.",{"id":1006,"title":1007,"what":1008,"how":1009,"howLabel":878},"sqlalchemy","SQLAlchemy and Alembic (database access and migrations)","SQLAlchemy is the library a Python program uses to work with a database without hand-writing SQL for every step. Alembic is its companion for migrations: it changes the table structure step by step without losing the data already collected.","The IT help desk bot has 20 tables and 16 Alembic migrations, and the online store applies its migrations automatically when the API starts. Taking a ticket locks the row in the database, so two administrators cannot take the same one.",{"id":1011,"title":1011,"what":1012,"how":1013,"howLabel":878},"aiohttp","A Python library for network calls that do not block: a bot talks to other services' APIs and keeps answering people at the same time. It works both as a client and as a small web server.","The subscription-sales bot calls the Marzban panel API with it, the «Дыхание Поволжья» community bot reads the catalogue from the website, and the UNLOCK card service serves card settings and receives the recipients' replies.",{"id":1015,"title":1016,"what":1017,"how":1018,"howLabel":878},"apscheduler","APScheduler (scheduled jobs)","A scheduler inside a Python program: it runs actions at the right time — a reminder at 9 a.m., a check every minute, a report on the 1st. Unlike cron, it lives inside the bot and sees its data.","It sends birthday and subscription-expiry reminders, escalations and the monthly report in the help desk, and marks no-shows in the electronic queue. The time zone is always set explicitly to Europe\u002FMoscow.",{"id":1020,"title":1021,"what":1022,"how":1023,"howLabel":878},"aiosqlite","aiosqlite (non-blocking SQLite)","Asynchronous access to an SQLite database from Python: a query to the database file does not stall the bot while it answers other people.","In the birthday bot, the gaming-club loyalty card and the voice transcription bot the whole database is one SQLite file, and aiosqlite reads and writes it without holding up message handling. A backup is a copy of the file.",{"id":1025,"title":1026,"what":1027,"how":1028,"howLabel":878},"pymupdf-pdfplumber","PyMuPDF and pdfplumber (working with PDF)","Python libraries for PDF. pdfplumber carefully extracts text and tables; PyMuPDF can also change a page: erase and draw blocks without touching the rest.","pdfplumber reads the PDF statements of four banks in the finance assistant. PyMuPDF stamps an accident commissioner's contacts onto an electronic car insurance policy: the form number, the data and the QR code stay untouched, and the file grows from 380 to 520 KB rather than to 6.5 MB.",{"id":1030,"title":1031,"what":1032,"how":1033,"howLabel":878},"python-docx-openpyxl","python-docx and openpyxl (Word and Excel files)","Python libraries that build real .docx and .xlsx files with formatting, tables and sheets. People open them in the Word or Excel they know and never notice that a program made the file.","python-docx builds documents for signature from Markdown in the accepted layout (A4, Times New Roman 12) — that is how the network survey set for a museum complex is produced. openpyxl exports the electronic queue to Excel for the lecturer and the finance assistant's operations to XLSX.",{"id":1035,"title":1036,"what":1037,"how":1038,"howLabel":878},"pillow","Pillow (image processing)","A Python library for images: open, rotate, shrink, save in another format, draw on top.","In the gaming-club loyalty card it works with qrcode to draw the client's personal QR code, which the administrator scans to credit a visit.",{"id":1040,"title":1041,"what":1042,"how":1043,"howLabel":878},"qr-codes","qrcode and segno (QR codes)","Python libraries that turn a link or text into a QR code. A phone scans it with the camera and opens the right thing at once: a bot, a client profile, a page.","qrcode produces the QR card of a gaming-club client: the code opens the bot with the client's number, and for anyone else the link gives nothing. segno draws the QR code on the accident commissioner's card on an insurance policy.",{"id":1045,"title":1046,"what":1047,"how":1048,"howLabel":878},"numpy","numpy (fast numerical computing)","A Python library for calculations over large arrays of numbers: what ordinary code would take minutes to compute, numpy does in a fraction of a second.","In ToshaMusic numpy breaks a fragment of a track down by frequency (FFT) and finds the spectral cut-off. That is how the bot catches a FLAC rebuilt from an MP3 and a CD master stretched to 24-bit \u002F 192 kHz.",{"id":1050,"title":1051,"what":1052,"how":1053,"howLabel":878},"cmake-ctest","CMake and CTest (builds and tests)","CMake builds a C++ program with one command on Linux, macOS and Windows, and CTest runs its tests. For the client this means the code builds on more than the developer's machine and the formulas are checked.","The FEFCO box die-line library for a packaging manufacturer is built with CMake and plugs into production software as an ordinary library. Tests for the formulas, nesting and input validation run through CTest.",{"id":1055,"title":1056,"what":1057,"how":1058,"howLabel":878},"rest-api","REST API","The most common way to build an API: every entity has its own address, and actions are ordinary HTTP requests to get, create or change it. The answer usually comes in JSON.","The online store's REST API is written in FastAPI: catalogue, orders, site settings. The Tech Poly VPN bot drives the Marzban panel through its REST API and keeps money, terms and discounts itself.",{"id":1060,"title":1061,"what":1062,"how":1063,"howLabel":878},"websocket","WebSocket","A persistent connection between a browser or app and a server over which data flows both ways without new requests. Chats, live updates and some VPN tunnels need it.","On the VPN route, the entry node in Russia proxies the VLESS WebSocket tunnel; a path without the Upgrade header answers 404, like a page that does not exist. A WS+TLS entry point is what the Windows 7 client uses.",{"id":868,"title":1065,"what":1066,"how":1067,"howLabel":878},"JSON","A text data format almost every program understands: services pass orders and statuses to each other in it, and settings and exports live in files a person can read.","n8n workflows are exported as JSON files and kept in git, the subscription-sales bot makes its backup as a JSON dump, and the help desk PC program writes a computer's passport into a JSON report.",{"id":1069,"title":1070,"what":1071,"how":1072,"howLabel":878},"rate-limit","Rate limiting","A rule of \"no more than N requests per period\". It protects a site or bot from password guessing and spam, and an integration from being banned by someone else's service for calling it too often.","After the move from Joomla, the WordPress login page accepts at most 20 requests a minute, the brief on the studio site at most three submissions per 10 minutes from one address, and the electronic queue one request per 0.5 seconds. ToshaMusic caps parallel downloads so the streaming account does not get banned.",{"id":1074,"title":1075,"what":1076,"how":1077,"howLabel":878},"idempotency","Idempotency","A property of an operation: running it again does not change the result. Confirm pressed twice, a repeated webhook, the same file uploaded again — no duplicate appears.","In Tech Poly VPN a payment is confirmed under a row lock in the database: the second administrator sees who already processed the request, and the subscription is not extended twice. The Joomla import can be re-run without duplicates, and uploading the same statement to the finance assistant again changes nothing.",{"group":1079,"terms":1080},"Servers & OS",[1081,1086,1091,1096,1099,1104,1109,1114,1118,1123,1128],{"id":1082,"title":1083,"what":1084,"how":1085,"howLabel":878},"ubuntu","Ubuntu and Linux","One of the most widespread Linux-based operating systems — free, stable, with a long support cycle for server releases (LTS).","The standard OS for our servers — Docker containers, bots and VPN nodes run on it.",{"id":1087,"title":1088,"what":1089,"how":1090,"howLabel":889},"windows-server","Windows Server","The server edition of Windows from Microsoft. Office infrastructure usually lives on it: employee accounts (Active Directory), accounting systems, shared folders and remote desktops (RDP).","We set it up and maintain it when a business already runs on Windows: access rights, backups, secure remote login through VPN instead of RDP exposed to the internet.",{"id":1092,"title":1093,"what":1094,"how":1095,"howLabel":889},"kali-linux","Kali Linux","A specialised Linux distribution with preinstalled tools for security testing (penetration testing).","For network audits and checking our own infrastructure for vulnerabilities before handing a project over.",{"id":119,"title":119,"what":1097,"how":1098,"howLabel":878},"A web server and reverse proxy — the part that accepts incoming requests and decides which service handles them.","As the entry point of almost every project: it serves static files, proxies requests to the right containers and checks access before a request goes any further.",{"id":1100,"title":120,"what":1101,"how":1102,"howLabel":1103},"docker","A \"box\" for a program. Any program needs an environment to run: the right library versions, settings, helper files. Docker packs the program and that whole environment into one box — a container. The box can be moved to any server and will work there exactly as it did with us: nothing needs reinstalling or reconfiguring by hand. Much like a shipping container: any port crane can lift it, no matter what's inside.","Moving to another server takes hours, not weeks; one program can't break another on the same server; if something crashes, the container restarts itself. In almost every project the bot, the database and the website live in separate containers. Compose is the \"manifest\" of all a project's boxes so they start with one command; Swarm spreads them across several servers.","Why it matters for business",{"id":1105,"title":1106,"what":1107,"how":1108,"howLabel":878},"kubernetes","Kubernetes (K3s, Helm)","A system that looks after Docker containers on its own: restarts crashed ones, balances load, scales with traffic.","For projects where load spikes or downtime is critical. K3s is a lightweight version for small servers; Helm is a way to roll out ready-made configurations quickly.",{"id":1110,"title":1111,"what":1112,"how":1113,"howLabel":878},"mail-server","Your own mail on the domain (Postfix, docker-mailserver, DKIM)","A mail server on your own VPS: addresses like name@your-domain with no monthly fee per mailbox. DKIM, SPF and DMARC are DNS records without which mail lands in spam.","We install Postfix and Dovecot or Mailcow in containers, set up the records and check deliverability to Gmail and Outlook. Important mail can be forwarded to Telegram.",{"id":1115,"title":650,"what":1116,"how":1117,"howLabel":878},"docker-compose","A file describing which containers make up a project (site, database, bot) and how they connect. One command brings everything up, identically on any server.","Every studio project is a folder with docker-compose.yml and .env on the server. Moving to another server means copying the folder and running one command.",{"id":1119,"title":1120,"what":1121,"how":1122,"howLabel":878},"voice-server","Your own voice and chat server","A replacement for Discord or Zoom on your own server: voice rooms, chats, screen streaming. Keeps working when public services are blocked, and data never leaves for a third-party cloud.","Our own \"Peregovorka\": voice over WebRTC, chats and streaming with a custom client. We also deploy ready solutions: Mumble, Matrix, Jitsi, depending on the task.",{"id":1124,"title":1125,"what":1126,"how":1127,"howLabel":878},"cron","Cron and task scheduling","The server's built-in alarm clock: run a backup at night, check slots every five minutes, clean old files weekly. Works with no human involved.","Database and site backups, monitoring, bot broadcasts. Container time is always set to the client's timezone so \"3 a.m.\" means 3 a.m. locally.",{"id":1129,"title":1130,"what":1131,"how":1132,"howLabel":878},"roundcube","Roundcube (webmail)","A web interface for mail: messages on your own domain are read in a browser, like a familiar mail service, with nothing to install.","It runs next to docker-mailserver on the studio's web server. Mail can be read in Roundcube or in any mail client, and new messages also arrive in a service Telegram chat.",{"group":1134,"terms":1135},"Web & CMS",[1136,1140,1145,1149,1154,1158,1163,1168,1173,1178,1183,1188,1193,1198,1203,1207,1212,1217,1222],{"id":1137,"title":118,"what":1138,"how":1139,"howLabel":878},"wordpress","The world's most popular content management system (CMS) — lets you edit content without a developer, through an admin panel in the browser.","We build showcases and sites with a familiar admin panel on it, but with a custom theme and no third-party plugins or builders: fewer updates and vulnerabilities, light pages. The “Dykhanie Povolzhya” showcase is built this way. We also migrate and maintain existing sites: three sites moved from the outdated Joomla 3.10 to WordPress, keeping the catalogue, forms and search rankings.",{"id":1141,"title":1142,"what":1143,"how":1144,"howLabel":889},"html-css-js","HTML, CSS and JavaScript","The basic technologies of any web page: HTML is the structure, CSS the styling, JavaScript the interactivity.","For landing pages and small business sites without a CMS — when load speed matters most and there is no need for an admin panel to edit content regularly.",{"id":1146,"title":121,"what":1147,"how":1148,"howLabel":878},"seo","A set of measures so that people find your website in search (Google, Yandex) for the right queries, without paid ads.","Semantic markup, Schema.org structured data, a sitemap and correct meta tags — built in during development, not patched afterwards.",{"id":1150,"title":1151,"what":1152,"how":1153,"howLabel":878},"nuxt","Nuxt (Vue)","A toolkit for building fast websites: pages are served as ready HTML, so they open instantly and are fully readable by search engines. Vue is the interface language inside it.","The studio site and an online store with an admin panel are built on Nuxt. Content lives in files in git or in a database, the design is custom, with no builder templates.",{"id":1155,"title":117,"what":1156,"how":1157,"howLabel":878},"fastapi","A fast way to write a server side in Python: order intake, cart calculation, an admin panel. Works the same with websites and with bots.","The online store server, the crash-report receiver for apps, APIs for Telegram cabinets. Runs in a container next to the site.",{"id":1159,"title":1160,"what":1161,"how":1162,"howLabel":878},"ssr","SSR and static (SSG)","Two ways of serving pages. SSR: the server builds the page on every request, handy for stores with live stock. Static: pages are built in advance and stored as files, the server has almost nothing to do and nothing to hack.","The studio's Russian site runs as SSR in one container; the international one is built to static files on a server in Moldova. One project, two build modes.",{"id":1164,"title":1165,"what":1166,"how":1167,"howLabel":878},"vps","VPS (virtual private server)","Your own slice of a data-centre server with full access: install what you like, pay a fixed monthly fee (from $5–15). Unlike \"website hosting\" it can hold a site, a bot, a database and mail at once.","All studio projects live on VPS: sites, bots, n8n, VPN nodes. One properly configured server comfortably runs several sites in containers.",{"id":1169,"title":1170,"what":1171,"how":1172,"howLabel":878},"domain","Domain and DNS records","The domain is the site address (devunit-lab.business). DNS records say which server it points to, where to receive mail and who may send mail on its behalf. The domain is always registered to the client, never to the contractor.","We check the domain is owned by the client and set up A, MX, SPF, DKIM, DMARC records and the verification records for search-engine dashboards.",{"id":1174,"title":1175,"what":1176,"how":1177,"howLabel":878},"ssl","HTTPS and certificates (SSL\u002FTLS, certbot)","The padlock in the address bar. It encrypts what a visitor types on the site and confirms the site is genuine. Without it browsers say \"not secure\" and search engines rank lower.","Let's Encrypt certificates are issued and renewed automatically on the edge nginx; nobody has to remember them.",{"id":1179,"title":1180,"what":1181,"how":1182,"howLabel":878},"website-builder","Website builder","A service where a site is assembled from ready blocks and lives on the service's servers for a monthly fee (Wix, Squarespace, Tilda and the like). Quick to start, but the site cannot be taken away and features are capped by the plan.","We do not use them. We build sites on the client's own server: code and data belong to the client, and the only fee is the VPS. Why — in the article \"Your own server or a website builder\".",{"id":1184,"title":1185,"what":1186,"how":1187,"howLabel":878},"cms","CMS and admin panel","A system through which the owner changes texts, prices and products without a developer. WordPress is the best-known ready CMS; a custom admin panel is written separately and does exactly what is needed.","For showcases we install WordPress with a custom theme; for stores with stock we write a FastAPI panel: prices and availability are edited in one table, orders arrive in Telegram.",{"id":1189,"title":1190,"what":1191,"how":1192,"howLabel":878},"cdn","CDN","A worldwide network of servers that serves site images and files from the point nearest the visitor. Needed when visitors are spread across countries or traffic is high; a small site usually does fine with one server.","We connect one when needed for international sites; for Russian sites a server in Russia and light pages matter more.",{"id":1194,"title":1195,"what":1196,"how":1197,"howLabel":878},"php","PHP","The language WordPress and most of its themes and plugins are written in. Not the trendiest, but every host and every web developer understands it.","We write custom WordPress themes in PHP without third-party builders: pages stay light, with fewer updates and vulnerabilities.",{"id":1199,"title":1200,"what":1201,"how":1202,"howLabel":878},"markdown","Markdown","A simple way to mark up text: a hash for a heading, asterisks for bold, a dash for a list. The file is readable without any software, and the site turns it into a page.","Pages, case studies and articles of the studio site live in markdown files in git: editing the site means editing a text file. From the same files we build documentation in Word.",{"id":1204,"title":116,"what":1205,"how":1206,"howLabel":878},"typescript","JavaScript with strict types: errors show up at build time, not in a visitor's browser. The standard for Nuxt and Vue sites.","The studio site and the online store are written in it: types check that a product or case card is filled in correctly before the deploy.",{"id":1208,"title":1209,"what":1210,"how":1211,"howLabel":878},"canvas","Canvas (browser graphics)","An area of a web page where a script draws graphics itself: animations, charts, 3D scenes. It needs no external libraries, but has to be done carefully so a phone is not overloaded.","On Valery Afanasiev's business-card site a 3D scanner is drawn on canvas 2D: up to 560 points per part, at most 30 frames per second, drawing only while it is visible, and a single static frame in data-saver mode.",{"id":1213,"title":1214,"what":1215,"how":1216,"howLabel":878},"csp","CSP (Content-Security-Policy)","A site header that tells the browser where fonts, scripts and images may be loaded from. The browser blocks everything else: foreign code cannot be slipped into the page, and the page does not call other people's servers.","On the demo stand for a museum complex website the default-src 'self' policy forbids every external address: fonts, images and the map snapshot are on our own server, and the number of external loads can be checked right in the viewer's browser.",{"id":1218,"title":1219,"what":1220,"how":1221,"howLabel":878},"i18n","Multilingual sites (i18n, @nuxtjs\u002Fi18n)","How a site works in several languages: each version has its own URL, the language is detected from the browser, and search engines understand that it is one page in different languages, not duplicates.","The studio site on Nuxt: Russian with no prefix, English at \u002Fen. The @nuxtjs\u002Fi18n module detects the language on the first visit and remembers the choice in a cookie, every page has hreflang, and the English texts live in a separate folder with the same file names.",{"id":1223,"title":1224,"what":1225,"how":1226,"howLabel":878},"cookie","Cookie","A small record a site leaves in the browser: remember the language, keep you signed in, count visits. Analytics counters on our sites switch on only after the visitor agrees, hence the cookie notice.","On the studio site a cookie stores the chosen language, the online store's admin panel has its own session cookie on a separate subdomain, and on the «Дыхание Поволжья» site analytics loads only after consent. The video downloader bot uses a cookies.txt file for restricted YouTube videos.",{"group":1228,"terms":1229},"Automation & VPN",[1230,1233,1238,1242,1247,1252,1256,1261,1266,1271,1275,1280,1285,1290,1295,1300,1305],{"id":468,"title":468,"what":1231,"how":1232,"howLabel":878},"An automation builder: it connects services to each other (CRM, spreadsheets, messengers, warehouse) without writing code from scratch for every link.","We deploy it self-hosted — on your server, not in someone else's cloud — and build chains like \"website request → Telegram notification → spreadsheet row\" on it.",{"id":1234,"title":1235,"what":1236,"how":1237,"howLabel":889},"vpn","VPN","A secure private \"tunnel\" over the internet: it connects your devices and servers as if they were on one local network, even when they are physically in different cities.","We build private VPN networks for secure access to work services and for bypassing blocks — with no public exposure of your infrastructure to the internet.",{"id":1239,"title":643,"what":1240,"how":1241,"howLabel":878},"wireguard","A modern VPN protocol — fast, simple to configure and light on server resources.","Our default choice for most private VPN networks unless there is a reason to pick something else.",{"id":1243,"title":1244,"what":1245,"how":1246,"howLabel":878},"tailscale","Tailscale","A ready-made layer on top of WireGuard that removes manual key and route management — all devices find each other in a single mesh network.","When many devices need connecting quickly without a dedicated VPN administrator — the team just installs the app and connects.",{"id":1248,"title":1249,"what":1250,"how":1251,"howLabel":889},"openvpn","OpenVPN","An older but time-tested VPN protocol.","We use it when a client needs compatibility with legacy corporate equipment or internal policies.",{"id":1253,"title":644,"what":1254,"how":1255,"howLabel":878},"xray","A protocol and tool for bypassing internet blocks — it disguises VPN traffic as ordinary encrypted web traffic (HTTPS), so it is much harder to block by its \"fingerprint\".","For clients for whom a regular VPN is no longer enough — we build an \"entry node in Russia → exit node in the EU\" scheme with a permanent tunnel and route health monitoring.",{"id":1257,"title":1258,"what":1259,"how":1260,"howLabel":889},"frpc","frp \u002F frpc","A tool for forwarding ports through an intermediate server — it lets you reach a device behind NAT or a home router without opening dangerous \"holes\" to the internet directly.","For a permanent tunnel between a node in Russia and a standalone server abroad — traffic exits through a trusted point instead of being exposed on every node separately.",{"id":1262,"title":1263,"what":1264,"how":1265,"howLabel":878},"split-tunneling","Split tunneling","A VPN mode where only part of the traffic goes through the secure channel and the rest goes direct. Games and local sites stay fast, blocked services open.","In the OshaVPN client local sites, games and anti-cheat go direct, everything else through the VPN. For gaming cafés we set up a private VPN with the same rules on every machine.",{"id":1267,"title":1268,"what":1269,"how":1270,"howLabel":878},"vless-reality","VLESS and Reality","A modern way to disguise a VPN connection as ordinary HTTPS traffic to a well-known site, so it cannot be told apart and blocked. A protocol of the Xray core.","On the studio's VPN routes the entry node accepts VLESS with Reality or WebSocket+TLS and the exit node is abroad. The client picks a live entry point itself.",{"id":1272,"title":1272,"what":1273,"how":1274,"howLabel":878},"sing-box","The second engine of a VPN client, an alternative to Xray: the same protocols, a different implementation. Two engines let the client switch when one has problems.","In OshaVPN both engines are connected through a thin layer, so an engine can be swapped without rewriting the app. On Windows 7 only sing-box works.",{"id":1276,"title":1277,"what":1278,"how":1279,"howLabel":878},"marketplace-api","Marketplace APIs (Wildberries, Ozon)","Programmatic access to a seller account: stock, prices, orders, delivery slots. Through it a bot or workflow does what a manager would do by hand in the dashboard.","Wildberries delivery-slot monitoring with Telegram alerts, stock and price sync, order import. Runs around the clock on the client's server.",{"id":1281,"title":1282,"what":1283,"how":1284,"howLabel":878},"bitrix24-amocrm","Bitrix24 and amoCRM","The two most widespread CRMs in Russia. Both have APIs and webhooks, so leads from a site or a bot land in them without manual copying, and a deal status change can trigger notifications.","An n8n workflow takes a lead from a bot, creates a deal in the CRM and appends a row to Google Sheets; on a status change the CRM itself messages the manager in Telegram.",{"id":1286,"title":1287,"what":1288,"how":1289,"howLabel":878},"marzban","Marzban and Remnawave (VPN panels)","Control panels for a VPN service: users, subscriptions, traffic limits, entry nodes. The client gets one subscription link, and the panel serves it the current settings.","Our VPN services run on them: the sales bot creates a user in the panel, and the OshaVPN client reads the subscription and picks a live entry point itself.",{"id":1291,"title":1292,"what":1293,"how":1294,"howLabel":878},"1c","1C (1C:Enterprise)","The most widespread accounting system in Russia: bookkeeping, warehouse, sales, payroll. Stock and orders usually live in it, so integrations often start there.","In automation projects we connect 1C with marketplaces and a CRM in one chain: stock, orders, prices. In the IT help desk, the PC program also lists the 1C databases on every computer.",{"id":1296,"title":1297,"what":1298,"how":1299,"howLabel":878},"cloudflare-warp","Cloudflare WARP","A free encrypted route to the internet through the Cloudflare network. For a server it is a way to send part of the traffic so the hosting provider sees only a connection to Cloudflare.","On the VPN node in the Netherlands, torrents and 44 AI-service domains exit through WARP: the hosting provider sees only an encrypted connection to Cloudflare, while ordinary web traffic goes direct, with no captchas.",{"id":1301,"title":1302,"what":1303,"how":1304,"howLabel":878},"fefco","FEFCO (box style catalogue)","The European catalogue of standard corrugated-board box designs: each has its own code — 0201, 0203 and so on. A shared language between the packaging customer, the technologist and the program.","For a cardboard packaging manufacturer we built a die-line library for styles 0200, 0201 and 0203 with blank nesting on a sheet, and restored a catalogue of 325 FEFCO designs with drawings, search and a filter on its website.",{"id":1306,"title":483,"what":1307,"how":1308,"howLabel":878},"google-sheets","An online spreadsheet people work on together with nothing to install. In a small business it is often the main record, so automation writes there instead of forcing everyone into a CRM.","In lead automation, n8n appends every lead from the Telegram bot as a row in the sheet alongside Bitrix24. The sheet remains a fallback record if the CRM is unavailable.",{"group":1310,"terms":1311},"Databases",[1312,1316,1321,1326,1331,1336],{"id":1313,"title":296,"what":1314,"how":1315,"howLabel":878},"postgresql","A reliable relational database — it stores data in strict, linked tables.","Our main choice for production where data integrity matters: orders, customers, payments.",{"id":1317,"title":1318,"what":1319,"how":1320,"howLabel":889},"mariadb","MariaDB (MySQL)","A relational database forked from MySQL — fully compatible, but more open and actively developed.","In projects with billing and financial records — where transactional integrity matters: a double charge must be impossible even when several admins work at once.",{"id":1322,"title":1323,"what":1324,"how":1325,"howLabel":878},"mongodb","MongoDB","A NoSQL database that stores data as flexible documents rather than rigid tables.","We use it when the data structure changes often or isn't fully defined up front — no need to rework tables with every change.",{"id":1327,"title":1328,"what":1329,"how":1330,"howLabel":878},"redis","Redis","An ultra-fast data store that lives in the server's memory.","For caching (so the main database isn't hit on every request) and task queues — for example, sending messages in the background.",{"id":1332,"title":1333,"what":1334,"how":1335,"howLabel":889},"clickhouse","ClickHouse","A database built for analytics and large data volumes — it computes aggregates over millions of rows quickly.","When you need reports and dashboards over large event volumes, not just record storage.",{"id":1337,"title":1338,"what":1339,"how":1340,"howLabel":878},"sqlite","SQLite","A compact database that lives in a single file — no separate database server required.","For small self-hosted services with moderate load where a separate database would be overkill — easier to deploy, easier to back up.",{"group":1342,"terms":1343},"Embedded & IoT",[1344,1349,1354],{"id":1345,"title":1346,"what":1347,"how":1348,"howLabel":878},"esp32","ESP32","An inexpensive microcontroller with Wi-Fi and Bluetooth on board — the basis for smart devices, sensors and other \"smart\" electronics.","Firmware for a client's specific task — for example, a device that counts hits in a game system by itself and keeps working even when the server connection drops.",{"id":1350,"title":1351,"what":1352,"how":1353,"howLabel":889},"mqtt","MQTT","A lightweight messaging protocol for devices with limited resources — designed for IoT, where low load on the communication channel matters.","For communication between devices and a central server in embedded projects — devices publish events, the server receives and processes them.",{"id":1355,"title":1356,"what":1357,"how":1358,"howLabel":878},"lora","LoRa","A long-range, low-power radio protocol — it works where there is no Wi-Fi or mobile network, over distances of several kilometres.","As a backup channel for emergency commands in devices at venues where the regular network is unreliable or absent.",{"group":1360,"terms":1361},"Media & Communications",[1362,1367,1372,1376,1381,1386,1391,1396],{"id":1363,"title":1364,"what":1365,"how":1366,"howLabel":878},"streaming","SRT \u002F HLS \u002F WHEP","Video transport protocols: SRT delivers a stream to the server reliably over an unstable link; HLS and WHEP let viewers watch in the browser with low latency.","We build our own streaming servers — a replacement for solutions that drop the broadcast on a poor link or let anyone in to watch.",{"id":1368,"title":1369,"what":1370,"how":1371,"howLabel":889},"webrtc","WebRTC","A technology for real-time voice and video in the browser, directly between participants, with no page reloads.","For voice inside our own services — for example, mesh voice chat where audio doesn't pass through an intermediate server at all.",{"id":1373,"title":312,"what":1374,"how":1375,"howLabel":878},"ffmpeg","The Swiss army knife for video and audio — it converts, cuts and analyses media files in practically any format.","We check the real parameters of an audio or video stream (not what the description says) and process media in bots' background jobs.",{"id":1377,"title":1378,"what":1379,"how":1380,"howLabel":889},"asterisk","Asterisk (IP telephony)","An open-source software PBX (telephone exchange) — it turns an internet connection into full telephony: calls, queues, forwarding, call recording, with no landline.","For a company's internal communications and customer lines — with custom call-handling scenarios instead of the rigid settings of boxed PBX systems.",{"id":1382,"title":1383,"what":1384,"how":1385,"howLabel":878},"yt-dlp-streamrip","yt-dlp and streamrip (media downloading)","Download engines: yt-dlp fetches video and audio from hundreds of sites (YouTube, TikTok, VK Video), and streamrip fetches music from Qobuz, Deezer and Tidal. A bot hands them a link and gets a file back.","The video downloader bot runs on yt-dlp: 12 platforms, quality up to 4K, and Vimeo and Coub were added with no platform-specific code. In ToshaMusic, streamrip downloads Hi-Res with a cap on parallel downloads, so the streaming account does not get banned.",{"id":1387,"title":1388,"what":1389,"how":1390,"howLabel":878},"mutagen","mutagen (audio file tags)","A Python library for reading and writing audio tags: artist, album, cover art and, for FLAC, the real bit depth.","In ToshaMusic it refines the FLAC bit depth when ffprobe reports the container's 32 bits instead of the real 24. The file name and tags are built from measured parameters only.",{"id":1392,"title":1393,"what":1394,"how":1395,"howLabel":878},"mediamtx","MediaMTX (media server)","A streaming server: it receives the stream from the streamer's PC and hands it to viewers in different forms — to a browser, to VLC, with under a second of latency or in a way that survives a mobile network.","In Peregovorka, MediaMTX takes the stream in over SRT and delivers it over HLS, WHEP and RTSP. The server does not re-encode video: the streamer's graphics card encodes both qualities, so a powerful machine is not needed.",{"id":1397,"title":1398,"what":1399,"how":1400,"howLabel":878},"coturn","coturn (TURN server)","A relay for browser calls: when two participants cannot connect directly because of a router or the network, the audio goes through a TURN server. It cannot decrypt the conversation.","Peregovorka runs its own coturn next to the WebRTC voice: credentials are temporary and live for an hour, and the secret never leaves the server.",{"group":1402,"terms":1403},"Monitoring & CI\u002FCD",[1404,1408,1412,1417,1422,1427],{"id":1405,"title":647,"what":1406,"how":1407,"howLabel":889},"grafana","Dashboards with real-time charts of server and service health.","To see the load, the error count and whether everything is alive — on one screen, without logging into every server separately.",{"id":1409,"title":646,"what":1410,"how":1411,"howLabel":878},"prometheus","A metrics collection system — it gathers numbers about how servers and services are doing.","It feeds Grafana with data and can send an alert itself when something goes wrong — before the client notices.",{"id":1413,"title":1414,"what":1415,"how":1416,"howLabel":878},"cicd","CI\u002FCD (GitLab CI, GitHub Actions)","An automatic pipeline: as soon as code changes, it is checked and shipped to the server on its own — no manual steps.","In almost every project — faster releases, less risk of forgetting or breaking something by hand during deployment.",{"id":1418,"title":1419,"what":1420,"how":1421,"howLabel":878},"health-check","Health check","A regular automatic check that a service is alive and answering: not just that the process runs, but that the database reads and the page opens. It is what restarts a container and alerts the administrator.","In Peregovorka the chat answers \u002Fhealthz by reading from and writing to the database, and a watchdog restarts a stuck container at most three times an hour. The finance assistant is checked from outside every 5 minutes: containers, database, the \"bot is alive\" mark and the dashboard address.",{"id":1423,"title":1424,"what":1425,"how":1426,"howLabel":878},"secrets-env","Secrets and .env","Bot tokens, database passwords and API keys are kept apart from the code: in a .env file on the server or inside the service itself. The code can then be shown or handed over without exposing access.","Gemini keys and bot tokens are set in .env, and in n8n workflows the keys live in n8n itself, not in the workflow file. Our apps mask subscription links, keys and tokens on the device before a log is sent to the developer.",{"id":1428,"title":1429,"what":1430,"how":1431,"howLabel":878},"rollback","Rollback","A return to the previous working state when a new version or an operation goes wrong: an app update, a deploy, a payment, a database change.","The OshaVPN updater on Windows rolls back the file replacement if it fails. In Tech Poly VPN, if the Marzban panel does not answer after a payment, the request goes back to pending and the discount is not burned. Where there are no migrations, as in the finance assistant, a version is rolled back from a database copy.",{"group":1433,"terms":1434},"Search & AI",[1435,1440,1445,1450,1454,1459,1464,1469,1474,1479],{"id":1436,"title":1437,"what":1438,"how":1439,"howLabel":878},"indexing","Indexing","The process in which a search engine (Google, Bing, Yandex) finds a page, reads it and stores it in its database. Until a page is in that database, it appears neither in search nor in AI assistants' answers.","After every deploy the site itself tells Bing and Yandex which pages changed (IndexNow), and we submit important addresses for recrawl in the webmaster tools by hand. Bing picks a page up in 1–3 days, Google in 1–3 weeks.",{"id":1441,"title":1442,"what":1443,"how":1444,"howLabel":878},"sitemap","Sitemap (sitemap.xml)","A file listing every address on the site that search engines read. It tells them which pages exist and in which languages, so nothing gets missed.","The sitemap is built automatically from the site content: a new case study, article or glossary term lands in it by itself. Product screenshots go in too, for image search.",{"id":1446,"title":1447,"what":1448,"how":1449,"howLabel":878},"robots-txt","robots.txt","A small file at the site root that tells robots what they may and may not read. One wrong line in it can accidentally hide the whole site from search.","Our robots.txt opens the site to all search engines and AI bots (GPTBot, ClaudeBot, Bingbot and others), closing only service addresses. In staging mode one variable hides the site from indexing.",{"id":1451,"title":1451,"what":1452,"how":1453,"howLabel":878},"hreflang","A tag in the page code saying \"the same page in another language lives over there\". Thanks to it a search engine shows Russian users the Russian version and English speakers the English one, and does not treat them as duplicates.","Every page on the studio's Russian and international sites knows its pair: \u002Fuslugi\u002Fboty ↔ \u002Fservices\u002Fbots. The pairs are declared both in the page code and in the sitemap.",{"id":1455,"title":1456,"what":1457,"how":1458,"howLabel":878},"json-ld","Structured data (JSON-LD, schema.org)","A block of data on the page invisible to visitors that spells out what the page is: a service with a price, an article with an author, a question with an answer, an organisation with an address. Search engines and AI read it directly, with no guessing.","Every page of the site carries its own markup: Service and Offer with prices on services, Article on case studies and posts, FAQPage on questions, DefinedTerm on glossary terms, BreadcrumbList on breadcrumbs, Organization on the home page. This is what lets an assistant answer \"a bot from $80\" with a link.",{"id":1460,"title":1461,"what":1462,"how":1463,"howLabel":878},"llms-txt","llms.txt","A file for AI assistants: a short description of the site and a list of pages in plain text, so a model can read the gist in one request without parsing design and menus. A sitemap, but for AI.","Both studio sites serve \u002Fllms.txt (a catalogue) and \u002Fllms-full.txt (all services with prices, case studies, articles and questions). Both are generated from content automatically; nothing to edit by hand.",{"id":1465,"title":1466,"what":1467,"how":1468,"howLabel":878},"indexnow","IndexNow","A protocol by which a site itself tells search engines \"these pages changed\" without waiting for a crawl. Supported by Bing (which ChatGPT and Copilot search through), Yandex and others; Google does not support it.","Submission is built into the deploy scripts: at the end of every deploy all sitemap addresses go to api.indexnow.org and to Yandex. Nothing to click separately.",{"id":1470,"title":1471,"what":1472,"how":1473,"howLabel":878},"ai-search","AI search and assistant answers","A mode where a question is answered not by a list of links but by an assistant: ChatGPT with search, Gemini, Google AI Overview, Copilot, Perplexity. The assistant takes the answer from a regular search index, so the same pages get in as in search, only later.","We prepare pages for such answers: questions and answers in the client's words, prices and timelines in structured data, llms.txt, an About page with facts. Showing up in answers takes 2–8 weeks after indexing, and nothing speeds that up.",{"id":1475,"title":1476,"what":1477,"how":1478,"howLabel":878},"webmaster-tools","Webmaster tools (Search Console, Bing Webmaster, Yandex Webmaster)","Free search-engine dashboards where the owner verifies the site, submits the sitemap, asks for pages to be recrawled and sees which queries show the site and which pages dropped out.","Both studio sites are verified in all three. After a major change we submit the changed addresses for recrawl; once a month we check queries and errors. The procedure is written down so the owner can do it alone.",{"id":1480,"title":1481,"what":1482,"how":1483,"howLabel":878},"llm","Language model (LLM)","A program that understands and writes text: ChatGPT, Gemini, Claude, DeepSeek. On its own it knows nothing about your site until it reads it through search or by link.","We use them in bots through APIs: voice transcription, parsing bank statements and receipts, a site chat consultant with facts from the price list. The model answers only from what is in the prompt so it does not invent prices.",{"group":1485,"terms":1486},"Bots & Telegram",[1487,1491,1496,1501,1506],{"id":1488,"title":1488,"what":1489,"how":1490,"howLabel":878},"aiogram","A Python library for Telegram bots. It handles incoming messages, buttons and flows; the bot itself, its database and integrations are written on top of it.","The base of all our Telegram bots: subscription sales, the ticket system, the finance assistant. The bot runs in a container on the client's server.",{"id":1492,"title":1493,"what":1494,"how":1495,"howLabel":878},"telegram-mini-app","Telegram Mini App","A full web page that opens inside Telegram from a bot button: a catalogue, a cabinet, a form. The user is already signed in, nothing to install.","We build cabinets inside Telegram: plans, client roles, invitation codes. Example: the web service with a Telegram cabinet from the UNLOCK case.",{"id":1497,"title":1498,"what":1499,"how":1500,"howLabel":878},"telegram-login","Telegram Login","A way to sign in to a site or service with one \"Log in with Telegram\" button, no password or registration. The service receives a verified user account.","We use it on service cabinets and on VPN access delivery: the user is recognised by Telegram, and the config and subscription are tied to them.",{"id":1502,"title":1503,"what":1504,"how":1505,"howLabel":878},"sbp","SBP (Russian instant payments)","Payment by QR code or link from a phone through the bank, without a card and with a low merchant fee. Suited to subscriptions and one-off payments in bots.","Our subscription-sales bot accepts SBP payments, extends access by itself and keeps the books, with no manual reconciliation.",{"id":1507,"title":1508,"what":1509,"how":1510,"howLabel":878},"vk-bots","VK bots","The same bot, but in a VK community: it answers messages, takes orders, hands out files. Needed as the main channel for a VK audience and as a backup when Telegram is unavailable.","We build VK bots on a shared database with Telegram: one dataset, two entrances. That is how access delivery in the VPN service and ordering in the \"Dykhanie Povolzhya\" showcase work.",{"group":1512,"terms":1513},"Apps",[1514,1519,1524,1529,1534,1539,1543,1548,1553,1558,1563,1568],{"id":1515,"title":1516,"what":1517,"how":1518,"howLabel":878},"kotlin","Kotlin (Android)","The main language of Android apps. A native Kotlin app runs faster and more reliably than a \"wrapper\" around a website and has access to all the phone hardware.","The OshaPlay audio player with USB DAC output and the OshaVPN client are written in Kotlin. Builds are signed and update over the air.",{"id":1520,"title":1521,"what":1522,"how":1523,"howLabel":878},"dotnet",".NET, WinForms and WPF (Windows)","Microsoft's platform for Windows programs. A .NET Framework 4.8 app runs even on Windows 7 with nothing extra installed.","The OshaVPN client for Windows 7 is built on .NET Framework 4.8 and WinForms with logic shared with the main client.",{"id":1525,"title":1526,"what":1527,"how":1528,"howLabel":878},"ota-update","Over-the-air updates (OTA)","The app checks by itself whether a new version is out, downloads and installs it, so the user never hunts for a file. The version list is signed with a key so it cannot be spoofed.","OshaVPN checks hourly: Android downloads an APK for its architecture, Windows downloads only changed files and rolls back on failure. There is a tester channel.",{"id":1530,"title":1531,"what":1532,"how":1533,"howLabel":878},"crash-report","Crash reports","When an app crashes or cannot connect, it sends a log, its version and the network state to the developer's server. The developer sees the problem before the user writes in.","Our own Python receiver in Docker on the client's server: secrets are masked on the device, and when the connection drops the report waits in a queue. No dependence on foreign services.",{"id":1535,"title":1536,"what":1537,"how":1538,"howLabel":878},"app-stores","RuStore and Google Play","Android app stores. RuStore is Russian and free to publish in; Google Play is worldwide with a one-off $25 fee and developer verification. A first install can also be distributed directly as an APK file.","We prepare signing, the build, the store page and moderation replies. For internal apps a direct APK link with over-the-air updates is often enough.",{"id":1540,"title":804,"what":1541,"how":1542,"howLabel":878},"jetpack-compose","The modern way to build Android app interfaces in Kotlin: screens are described in code, and the layout and theme adapt to the phone and the system settings.","The Android interfaces of OshaVPN and the OshaPlay audio player are built with Compose and Material 3: an adaptive layout and a theme that follows the system.",{"id":1544,"title":1545,"what":1546,"how":1547,"howLabel":878},"media3-exoplayer","Media3 \u002F ExoPlayer","Google's library for playing audio and video in Android apps: background playback, a notification with buttons, lock-screen controls.","The OshaPlay player is built on Media3: background playback and the playback service. Our own C++ output to a USB DAC plugs into Media3 as a custom AudioSink, which is why a track reaches the DAC bit for bit.",{"id":1549,"title":1550,"what":1551,"how":1552,"howLabel":878},"libtorrent4j","libtorrent4j (built-in torrent client)","A library that embeds a full torrent client right into an Android app, with no separate program.","In OshaPlay it is the built-in torrent client: whatever is found in the combined search across four sources downloads straight into the library.",{"id":1554,"title":1555,"what":1556,"how":1557,"howLabel":878},"android-ndk","Android NDK (C++ inside an app)","Tools for writing part of an Android app in C++. They are needed where timing and precision matter: audio, video, work with hardware.","In OshaPlay the audio stream to a USB DAC with a ring buffer and our own resampler with distortion below −130 dB are written in C++ through the NDK.",{"id":1559,"title":1560,"what":1561,"how":1562,"howLabel":878},"apk","APK (install from a file)","The install file of an Android app. It can be handed out as a link or from a bot, with no app store: a person downloads the file and installs the app themselves.","OshaVPN and OshaPlay are first installed from an APK link and then update themselves. For the first install we hand out a universal APK, and self-updates then download the build for the specific phone's architecture.",{"id":1564,"title":1565,"what":1566,"how":1567,"howLabel":878},"push-notifications","Push notifications","Notifications that reach a phone or computer even when the app or tab is closed: a new message, a stream starting, an order.","In Peregovorka pushes reach each device without duplicates: while a person reads a chat on one device, the others get nothing. Sound can be muted per conversation.",{"id":1569,"title":1570,"what":1571,"how":1572,"howLabel":878},"deep-link","Deep link (a link to the right place)","A link that opens not just an app or a bot but a specific screen with the right data: a client profile, a subscription, an order.","A gaming-club client's QR card is a link that opens the bot with the client's number. An oshavpn:\u002F\u002F link from the bot adds the subscription to the VPN client at once, and the «Дыхание Поволжья» cart opens the VKontakte community chat with the order code.",{},"en\u002Fglossary","s2r9_-cuuQYAyfwfWqQKgBmOXd3BjfN4NrqPIlKkW6k",[1577,1587,1594,1601,1612,1618,1625,1630,1636,1641,1646,1653,1660,1667,1673,1681,1687,1692,1698,1705,1713,1719,1725,1732,1739,1749,1756,1761,1767,1773,1779],{"path":1578,"title":1579,"emoji":1580,"stack":1581,"direction":1586,"own":79},"\u002Fen\u002Fkeysy\u002Ffinansovyi-assistent","Finance Assistant: PDF bank statements to a Telegram budget","💰",[1582,294,117,1583,1584,1585,309,120],"Python 3.13","PostgreSQL 17","SQLAlchemy 2.0","pdfplumber","boty",{"path":1588,"title":1589,"emoji":1590,"stack":1591,"direction":1593,"own":79},"\u002Fen\u002Fkeysy\u002Ftoshastream","Peregovorka (ToshaStream): streaming server and team voice chat","📡",[987,1592,1364,1369,1397,1338,119,120],"MediaMTX","infrastruktura",{"path":1595,"title":1596,"emoji":1597,"stack":1598,"direction":1600,"own":79},"\u002Fen\u002Fkeysy\u002Fvpn-klient","OshaVPN: VPN client for Android, Windows 10\u002F11 and Windows 7","📱",[803,804,1599,807,658,1272,645],"C# \u002F .NET 10 (WPF)","prilozheniya",{"path":1602,"title":1603,"emoji":1604,"stack":1605,"direction":1611,"own":94},"\u002Fen\u002Fkeysy\u002Finternet-magazin-rubashek","Online Shirt Store on Nuxt 4 with an Owner Admin Panel","👔",[1606,1607,1608,117,1609,1610,1328,120,119],"Nuxt 4","Vue 3","Tailwind CSS 4","SQLAlchemy 2","MySQL 8","sajty",{"path":1613,"title":1614,"emoji":1615,"stack":1616,"direction":1593,"own":79},"\u002Fen\u002Fkeysy\u002Fvpn-trassa","VPN infrastructure: Russian entry node, European exit","🛰",[119,1617,645,663,1297,655,120,297],"Xray \u002F VLESS Reality",{"path":1619,"title":1620,"emoji":1621,"stack":1622,"direction":1586,"own":94},"\u002Fen\u002Fkeysy\u002Fhelp-desk","Telegram ticketing system for an IT department","🎫",[293,294,1623,1624,297,1328,306,120],"SQLAlchemy","Alembic",{"path":1626,"title":1627,"emoji":1628,"stack":1629,"direction":1600,"own":79},"\u002Fen\u002Fkeysy\u002Foshaplay","OshaPlay: audiophile music player for Android","🎧",[803,804,1545,808,1549,1338],{"path":1631,"title":1632,"emoji":1633,"stack":1634,"direction":1586,"own":79},"\u002Fen\u002Fkeysy\u002Ftech-poly-vpn","Tech Poly VPN: VPN subscription billing in Telegram","🛡",[293,294,297,1635,306,295,120],"Marzban API",{"path":1637,"title":1638,"emoji":1639,"stack":1640,"direction":1611,"own":79},"\u002Fen\u002Fkeysy\u002Funlock","UNLOCK: Interactive Greeting Cards and Advent Calendars","🔓",[293,1011,294,296,120,119],{"path":1642,"title":1643,"emoji":1644,"stack":1645,"direction":1600,"own":79},"\u002Fen\u002Fkeysy\u002Foshaplay-diag","Crash-report receiver for our own apps","🩺",[293,120,119],{"path":1647,"title":1648,"emoji":1649,"stack":1650,"direction":1611,"own":79},"\u002Fen\u002Fkeysy\u002Fsajt-studii","DevUnit Lab: A Bilingual Studio Website on Nuxt 4","🧪",[1606,1651,1607,116,1652,1608,120],"Nuxt Content 3","@nuxtjs\u002Fi18n",{"path":1654,"title":1655,"emoji":1656,"stack":1657,"direction":1586,"own":94},"\u002Fen\u002Fkeysy\u002Fstrahovye-pdf","Branding e-policies (OSAGO) with a Telegram bot","📄",[293,1658,294,1659,1338,120],"PyMuPDF","segno",{"path":1661,"title":1662,"emoji":1663,"stack":1664,"direction":1666,"own":94},"\u002Fen\u002Fkeysy\u002Fwb-monitoring","Telegram bot for Wildberries delivery slots","📦",[293,470,1665],"Telegram API","avtomatizaciya",{"path":1668,"title":1669,"emoji":1670,"stack":1671,"direction":1666,"own":94},"\u002Fen\u002Fkeysy\u002Fn8n-crm","Lead automation on n8n: Telegram, CRM and Google Sheets","🔗",[468,1665,483,1672,469],"Bitrix24",{"path":1674,"title":1675,"emoji":1676,"stack":1677,"direction":1666,"own":94},"\u002Fen\u002Fkeysy\u002Fbox-calc","FEFCO box die-line calculation in C++","📐",[486,1678,1679,1680],"CMake","CTest","FEFCO",{"path":1682,"title":1683,"emoji":1684,"stack":1685,"direction":1611,"own":94},"\u002Fen\u002Fkeysy\u002Fdyhanie-povolzhya","WordPress Showcase Site with Ordering via VKontakte","🌿",[118,1686,297,293,1011,120],"PHP 8.2",{"path":1688,"title":1689,"emoji":1690,"stack":1691,"direction":1586,"own":79},"\u002Fen\u002Fkeysy\u002Fgolos-bot","Golos Bot: Telegram voice messages transcribed to text","🎙",[293,294,309,312,1338,120],{"path":1693,"title":1694,"emoji":1695,"stack":1696,"direction":1593,"own":94},"\u002Fen\u002Fkeysy\u002Fkorporativnyi-shlyuz","Corporate gateway on Xray and nginx for an IT team","🔐",[960,1697,658,119],"Linux",{"path":1699,"title":1700,"emoji":1701,"stack":1702,"direction":1611,"own":94},"\u002Fen\u002Fkeysy\u002Fvalera","Business-Card Site for a 3D Printing Engineer","🖨️",[1703,1704,119,120,121],"HTML \u002F CSS \u002F JS","Canvas",{"path":1706,"title":1707,"emoji":1708,"stack":1709,"direction":1666,"own":94},"\u002Fen\u002Fkeysy\u002Fobsledovanie-seti-muzeya","Network and CCTV survey for a museum complex","📹",[1200,293,1710,1711,1712],"python-docx","Word (docx)","Git",{"path":1714,"title":1715,"emoji":1716,"stack":1717,"direction":1611,"own":94},"\u002Fen\u002Fkeysy\u002Fsajt-muzeya-demo","Museum Website and Hosting Audit with a Demo of the New Site","🏛️",[1703,119,120,1718],"CSP",{"path":1720,"title":1721,"emoji":1722,"stack":1723,"direction":1611,"own":94},"\u002Fen\u002Fkeysy\u002Fjoomla-to-wordpress","Joomla to WordPress Migration Without Losing Rankings","🏭",[293,118,1195,1724,120,119,121],"MySQL",{"path":1726,"title":1727,"emoji":1728,"stack":1729,"direction":1593,"own":79},"\u002Fen\u002Fkeysy\u002Fserver-saitov","A private server for several websites on Docker and nginx","🗄️",[119,650,655,1730,1731,663],"docker-mailserver","Roundcube",{"path":1733,"title":1734,"emoji":1735,"stack":1736,"direction":1586,"own":79},"\u002Fen\u002Fkeysy\u002Ftoshamusic","ToshaMusic: Hi-Res music downloads with quality verification","🎵",[293,294,1623,1737,312,1387,1045,1738,120],"streamrip","Local Bot API",{"path":1740,"title":1741,"emoji":1742,"stack":1743,"direction":1593,"own":79},"\u002Fen\u002Fkeysy\u002Finstrukcii-vpn","VPN setup guides for Android, iPhone and desktop","📖",[1744,1745,1746,1747,1748],"HTML5","CSS","JavaScript","Telegram Web Apps API","GitHub Pages",{"path":1750,"title":1751,"emoji":1752,"stack":1753,"direction":1586,"own":94},"\u002Fen\u002Fkeysy\u002Fkompyuternyi-klub","Loyalty card for a gaming club in Telegram","🎮",[293,294,1338,1020,1754,1755],"qrcode","Pillow",{"path":1757,"title":1758,"emoji":1759,"stack":1760,"direction":1586,"own":79},"\u002Fen\u002Fkeysy\u002Fstream-bot","Streaming service access bot: code login from Telegram","🎟",[293,294,1011,663,120],{"path":1762,"title":1763,"emoji":1764,"stack":1765,"direction":1586,"own":79},"\u002Fen\u002Fkeysy\u002Fsavebot","Downloader Bot: save TikTok and YouTube videos via Telegram","🎬",[293,294,1766,312,1338,1738,120],"yt-dlp",{"path":1768,"title":1769,"emoji":1770,"stack":1771,"direction":1586,"own":94},"\u002Fen\u002Fkeysy\u002Fqueue-bot","Electronic lab-submission queue in Telegram","🎓",[293,294,1623,1624,296,306,1772,120],"openpyxl",{"path":1774,"title":1775,"emoji":1776,"stack":1777,"direction":1586,"own":94},"\u002Fen\u002Fkeysy\u002Fbot-prodazhi-podpisok","Telegram bot for selling VPN subscriptions","🔑",[293,294,297,1635,306,1011,1778],"Google Drive API",{"path":1780,"title":1781,"emoji":1782,"stack":1783,"direction":1586,"own":79},"\u002Fen\u002Fkeysy\u002Fbirthday-bot","Birthday bot: reminders and a gift budget","🎂",[293,294,1338,1020,306,120],[1785,1845,1903,1961,2019],{"id":5,"title":6,"audience":1786,"body":1790,"description":31,"emoji":32,"extension":33,"faq":1798,"includes":1810,"lead":77,"meta":1811,"navigation":79,"order":80,"path":81,"pricing":1812,"seo":1820,"serviceType":113,"stack":1821,"stackNotes":1822,"stem":135,"steps":1829,"works":1836,"__hash__":195},[1787,1788,1789],{"title":9,"text":10},{"title":12,"text":13},{"title":15,"text":16},{"type":18,"value":1791,"toc":1796},[1792,1794],[21,1793,23],{},[21,1795,26],{},{"title":28,"searchDepth":29,"depth":29,"links":1797},[],[1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809],{"q":36,"a":37},{"q":39,"a":40},{"q":42,"a":43},{"q":45,"a":46},{"q":48,"a":49},{"q":51,"a":52},{"q":54,"a":55},{"q":57,"a":58},{"q":60,"a":61},{"q":63,"a":64},{"q":66,"a":67},[69,70,71,72,73,74,75,76],{},{"visible":79,"note":83,"items":1813},[1814,1816,1818],{"title":86,"price":87,"unit":88,"description":89,"includes":1815,"featured":94},[91,92,93],{"title":96,"price":97,"unit":98,"description":99,"includes":1817,"featured":79},[101,102,103],{"title":105,"price":106,"unit":98,"description":107,"includes":1819,"featured":94},[109,110,111],{"title":6,"description":31},[115,116,117,118,119,120,121],[1823,1824,1825,1826,1827,1828],{"name":115,"text":124},{"name":117,"text":126},{"name":118,"text":128},{"name":119,"text":130},{"name":120,"text":132},{"name":121,"text":134},[1830,1831,1832,1833,1834,1835],{"title":138,"text":139},{"title":141,"text":142},{"title":144,"text":145},{"title":147,"text":148},{"title":150,"text":151},{"title":153,"text":154},[1837,1838,1839,1840,1841,1842,1843,1844],{"id":157,"title":158,"text":159,"term":28,"price":28,"case":160},{"id":162,"title":163,"text":164,"term":28,"price":28,"case":165},{"id":167,"title":168,"text":169,"term":28,"price":28,"case":170},{"id":172,"title":173,"text":174,"term":28,"price":28,"case":175},{"id":177,"title":178,"text":179,"term":28,"price":28,"case":180},{"id":182,"title":183,"text":184,"term":28,"price":28,"case":185},{"id":187,"title":188,"text":189,"term":28,"price":28,"case":190},{"id":192,"title":193,"text":194,"term":28,"price":28,"case":180},{"id":197,"title":198,"audience":1846,"body":1850,"description":219,"emoji":220,"extension":33,"faq":1858,"includes":1869,"lead":261,"meta":1870,"navigation":79,"order":263,"path":264,"pricing":1871,"seo":1879,"serviceType":291,"stack":1880,"stackNotes":1881,"stem":316,"steps":1888,"works":1895,"__hash__":371},[1847,1848,1849],{"title":201,"text":202},{"title":204,"text":205},{"title":207,"text":208},{"type":18,"value":1851,"toc":1856},[1852,1854],[21,1853,213],{},[21,1855,216],{},{"title":28,"searchDepth":29,"depth":29,"links":1857},[],[1859,1860,1861,1862,1863,1864,1865,1866,1867,1868],{"q":223,"a":224},{"q":226,"a":227},{"q":229,"a":230},{"q":232,"a":233},{"q":235,"a":236},{"q":238,"a":239},{"q":241,"a":242},{"q":244,"a":245},{"q":247,"a":248},{"q":250,"a":251},[253,254,255,256,257,258,259,260],{},{"visible":79,"note":83,"items":1872},[1873,1875,1877],{"title":268,"price":87,"unit":98,"description":269,"includes":1874,"featured":94},[271,272,273],{"title":275,"price":276,"unit":98,"description":277,"includes":1876,"featured":79},[279,280,110],{"title":282,"price":283,"unit":284,"description":285,"includes":1878,"featured":94},[287,288,289],{"title":198,"description":219},[293,294,295,296,297,120],[1882,1883,1884,1885,1886,1887],{"name":300,"text":301},{"name":303,"text":304},{"name":306,"text":307},{"name":309,"text":310},{"name":312,"text":313},{"name":120,"text":315},[1889,1890,1891,1892,1893,1894],{"title":138,"text":319},{"title":321,"text":322},{"title":324,"text":325},{"title":327,"text":328},{"title":330,"text":331},{"title":333,"text":334},[1896,1897,1898,1899,1900,1901,1902],{"id":337,"title":338,"text":339,"term":28,"price":28,"case":340},{"id":342,"title":343,"text":344,"term":28,"price":28,"case":345},{"id":347,"title":348,"text":349,"term":28,"price":28,"case":350},{"id":352,"title":353,"text":354,"term":28,"price":28,"case":355},{"id":357,"title":358,"text":359,"term":28,"price":28,"case":360},{"id":362,"title":363,"text":364,"term":28,"price":28,"case":365},{"id":367,"title":368,"text":369,"term":28,"price":28,"case":370},{"id":373,"title":374,"audience":1904,"body":1908,"description":395,"emoji":396,"extension":33,"faq":1916,"includes":1927,"lead":436,"meta":1928,"navigation":79,"order":438,"path":439,"pricing":1929,"seo":1937,"serviceType":466,"stack":1938,"stackNotes":1939,"stem":488,"steps":1946,"works":1953,"__hash__":539},[1905,1906,1907],{"title":377,"text":378},{"title":380,"text":381},{"title":383,"text":384},{"type":18,"value":1909,"toc":1914},[1910,1912],[21,1911,389],{},[21,1913,392],{},{"title":28,"searchDepth":29,"depth":29,"links":1915},[],[1917,1918,1919,1920,1921,1922,1923,1924,1925,1926],{"q":399,"a":400},{"q":402,"a":403},{"q":405,"a":406},{"q":408,"a":409},{"q":411,"a":412},{"q":414,"a":415},{"q":417,"a":418},{"q":420,"a":421},{"q":423,"a":424},{"q":426,"a":427},[429,430,431,432,433,434,75,435],{},{"visible":79,"note":83,"items":1930},[1931,1933,1935],{"title":443,"price":87,"unit":444,"description":445,"includes":1932,"featured":94},[447,448,449],{"title":451,"price":276,"unit":98,"description":452,"includes":1934,"featured":79},[454,455,456],{"title":458,"price":459,"unit":98,"description":460,"includes":1936,"featured":94},[462,463,464],{"title":374,"description":395},[468,469,470,471,472,293],[1940,1941,1942,1943,1944,1945],{"name":468,"text":475},{"name":469,"text":477},{"name":470,"text":479},{"name":293,"text":481},{"name":483,"text":484},{"name":486,"text":487},[1947,1948,1949,1950,1951,1952],{"title":138,"text":491},{"title":493,"text":494},{"title":496,"text":497},{"title":499,"text":500},{"title":502,"text":503},{"title":153,"text":505},[1954,1955,1956,1957,1958,1959,1960],{"id":508,"title":509,"text":510,"term":28,"price":28,"case":511},{"id":513,"title":514,"text":515,"term":28,"price":28,"case":511},{"id":517,"title":518,"text":519,"term":28,"price":28,"case":511},{"id":521,"title":522,"text":523,"term":28,"price":28,"case":524},{"id":526,"title":527,"text":528,"term":28,"price":28,"case":529},{"id":531,"title":532,"text":533,"term":28,"price":28,"case":534},{"id":536,"title":537,"text":538,"term":28,"price":28,"case":534},{"id":541,"title":542,"audience":1962,"body":1966,"description":563,"emoji":564,"extension":33,"faq":1974,"includes":1986,"lead":608,"meta":1987,"navigation":79,"order":610,"path":611,"pricing":1988,"seo":1996,"serviceType":640,"stack":1997,"stackNotes":1998,"stem":665,"steps":2005,"works":2012,"__hash__":713},[1963,1964,1965],{"title":545,"text":546},{"title":548,"text":549},{"title":551,"text":552},{"type":18,"value":1967,"toc":1972},[1968,1970],[21,1969,557],{},[21,1971,560],{},{"title":28,"searchDepth":29,"depth":29,"links":1973},[],[1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985],{"q":567,"a":568},{"q":570,"a":571},{"q":573,"a":574},{"q":576,"a":577},{"q":579,"a":580},{"q":582,"a":583},{"q":585,"a":586},{"q":588,"a":589},{"q":591,"a":592},{"q":594,"a":595},{"q":597,"a":598},[600,601,602,603,604,605,606,607],{},{"visible":79,"note":83,"items":1989},[1990,1992,1994],{"title":615,"price":87,"unit":616,"description":617,"includes":1991,"featured":94},[619,620,621],{"title":623,"price":624,"unit":625,"description":626,"includes":1993,"featured":79},[628,629,630],{"title":632,"price":633,"unit":98,"description":634,"includes":1995,"featured":94},[636,637,638],{"title":542,"description":563},[120,642,119,643,644,645,646,647],[1999,2000,2001,2002,2003,2004],{"name":650,"text":651},{"name":119,"text":653},{"name":655,"text":656},{"name":658,"text":659},{"name":645,"text":661},{"name":663,"text":664},[2006,2007,2008,2009,2010,2011],{"title":138,"text":668},{"title":670,"text":671},{"title":673,"text":674},{"title":676,"text":677},{"title":679,"text":680},{"title":153,"text":682},[2013,2014,2015,2016,2017,2018],{"id":685,"title":686,"text":687,"term":28,"price":28,"case":688},{"id":690,"title":691,"text":692,"term":28,"price":28,"case":693},{"id":695,"title":696,"text":697,"term":28,"price":28,"case":693},{"id":699,"title":700,"text":701,"term":28,"price":28,"case":702},{"id":704,"title":705,"text":706,"term":28,"price":28,"case":707},{"id":709,"title":710,"text":711,"term":28,"price":28,"case":712},{"id":715,"title":716,"audience":2020,"body":2024,"description":737,"emoji":738,"extension":33,"faq":2032,"includes":2041,"lead":771,"meta":2042,"navigation":79,"order":773,"path":774,"pricing":2043,"seo":2051,"serviceType":801,"stack":2052,"stackNotes":2053,"stem":823,"steps":2059,"works":2066,"__hash__":865},[2021,2022,2023],{"title":719,"text":720},{"title":722,"text":723},{"title":725,"text":726},{"type":18,"value":2025,"toc":2030},[2026,2028],[21,2027,731],{},[21,2029,734],{},{"title":28,"searchDepth":29,"depth":29,"links":2031},[],[2033,2034,2035,2036,2037,2038,2039,2040],{"q":741,"a":742},{"q":744,"a":745},{"q":747,"a":748},{"q":750,"a":751},{"q":753,"a":754},{"q":756,"a":757},{"q":759,"a":760},{"q":762,"a":763},[765,766,767,768,769,770,76],{},{"visible":79,"note":83,"items":2044},[2045,2047,2049],{"title":778,"price":779,"unit":98,"description":780,"includes":2046,"featured":94},[782,783,784],{"title":786,"price":787,"unit":98,"description":788,"includes":2048,"featured":79},[790,791,792],{"title":794,"price":459,"unit":795,"description":796,"includes":2050,"featured":94},[798,799,628],{"title":716,"description":737},[803,804,805,806,807,808],[2054,2055,2056,2057,2058],{"name":811,"text":812},{"name":814,"text":815},{"name":807,"text":817},{"name":808,"text":819},{"name":821,"text":822},[2060,2061,2062,2063,2064,2065],{"title":138,"text":826},{"title":828,"text":829},{"title":831,"text":832},{"title":834,"text":835},{"title":837,"text":838},{"title":153,"text":840},[2067,2068,2069,2070,2071],{"id":843,"title":844,"text":845,"term":28,"price":28,"case":846},{"id":848,"title":849,"text":850,"term":28,"price":28,"case":851},{"id":853,"title":854,"text":855,"term":28,"price":28,"case":851},{"id":857,"title":858,"text":859,"term":28,"price":28,"case":851},{"id":861,"title":862,"text":863,"term":28,"price":28,"case":864},{"id":2073,"contacts":2074,"extension":2080,"faq":2081,"fits":2094,"meta":2147,"process":2148,"stack":2167,"stats":2293,"stem":2306,"why":2307,"__hash__":2313},"site_en\u002Fen\u002Fsite.yml",{"telegram":2075,"telegramUrl":2076,"email":2077,"github":2078,"githubUrl":2079},"@tosha_DevUnit","https:\u002F\u002Ft.me\u002Ftosha_DevUnit","anton@devunit-lab.ru","github.com\u002FToshaToshiba","https:\u002F\u002Fgithub.com\u002FToshaToshiba","yml",[2082,2084,2086,2088,2091],{"q":570,"a":2083},"It's your own private cloud server, and you're the only owner: nobody can restrict your access, shut down the service or peek at your data. Full control instead of someone else's “cloud” — but also full responsibility for setup and maintenance, which is usually what we do.",{"q":573,"a":2085},"Not necessarily physical hardware — a VPS from any provider you trust works fine. We'll help you pick the right option for your budget and task, and set everything up turnkey.",{"q":579,"a":2087},"Yes. After handover you get a month of free support: bug fixes and consultations. After that you can subscribe to ongoing maintenance — monitoring, updates, backups, fast response to issues.",{"q":2089,"a":2090},"How does the work go and what do you need from us?","A request on Telegram, a short audit call, a work plan with a price range — and only then development. From you we need access to your current systems and a person who makes decisions; we take care of the rest.",{"q":2092,"a":2093},"Can you migrate data from Notion to a self-hosted alternative?","Yes, we migrate to Outline — pages, knowledge bases and images, preserving structure and formatting. It usually takes 3-7 days depending on data volume.",[2095,2098,2101,2104,2107,2111,2114,2117,2120,2123,2126,2129,2132,2135,2138,2141,2144],{"who":2096,"text":2097,"direction":1611,"case":160},"Online stores and retail","You sell by phone and chat, and stock lives in notes. You need a store the owner runs from a phone.",{"who":2099,"text":2100,"direction":1611,"case":165},"Brands and product makers","Ads send people from the street to their phones. You need a light storefront with a catalog and ordering in a familiar messenger.",{"who":2102,"text":2103,"direction":1611,"case":170},"Companies with a legacy website","The site runs on an outdated CMS, updates are risky and search rankings must survive. You need a migration that keeps the URLs.",{"who":2105,"text":2106,"direction":1611,"case":175},"Independent professionals","You need one page instead of long explanations in chat: who you are, what you do and how to reach you.",{"who":2108,"text":2109,"direction":1586,"case":2110},"Subscription services","Payments are confirmed by hand and renewals live in a spreadsheet. You need a bot that takes payment, extends access and reconciles on its own.","tech-poly-vpn",{"who":2112,"text":2113,"direction":1586,"case":345},"Internal IT departments","Requests arrive in DMs and hallways, and some get lost. You need ticket tracking, an asset register and a manager report without a separate system.",{"who":2115,"text":2116,"direction":1586,"case":355},"Clubs, salons and service businesses","You need a loyalty card with no plastic and no app: visits, rewards and records right in Telegram.",{"who":2118,"text":2119,"direction":1586,"case":350},"Agents who work with documents","The same document is edited by hand for every client. You need PDF processing that leaves the data and the signature intact.",{"who":2121,"text":2122,"direction":1666,"case":524},"Marketplace sellers","Delivery slots are gone in minutes, and stock and orders are checked by hand. You need monitoring and automatic alerts.",{"who":2124,"text":2125,"direction":1666,"case":511},"Small businesses taking leads in a messenger","Leads from Telegram are copied into the CRM and a spreadsheet by hand. You need a pipeline where the data moves itself.",{"who":2127,"text":2128,"direction":1666,"case":529},"Manufacturing companies","Calculations are done by hand from tables and standards. You need software that always calculates the same way and is covered by tests.",{"who":2130,"text":2131,"direction":1593,"case":688},"IT companies and distributed teams","Work tools stopped opening and everyone has a different workaround. You need shared access on your own server.",{"who":2133,"text":2134,"direction":1593,"case":693},"Companies with several websites","Sites share a server with other services and get in each other's way. You need a dedicated server with isolation, certificates and backups.",{"who":2136,"text":2137,"direction":1593,"case":851},"Gaming cafés and LAN centers","Games, launchers and Discord must open on every machine without lag. You need a VPN for the venue with split tunneling: games go direct, everything else through a secure channel.",{"who":2139,"text":2140,"direction":1593,"case":707},"Teams that need their own communications","You need voice, chat and streaming on your own server, with roles and closed access, and no third-party cloud.",{"who":2142,"text":2143,"direction":1600,"case":851},"Services that need their own app","A third-party client scares users with settings. You need an app under your own name with one button and self-updates.",{"who":2145,"text":2146,"direction":1600,"case":851},"Companies with a fleet of old PCs","Some machines still run Windows 7 and modern software will not install. You need a separate client for the old system.",{},[2149,2152,2155,2158,2161,2164],{"title":2150,"text":2151},"Request","Briefly describe your task on Telegram or by email — 2-3 minutes, no unnecessary fields.",{"title":2153,"text":2154},"Audit","We hop on a call, review your current infrastructure and bottlenecks — usually 1-3 days.",{"title":2156,"text":2157,"optional":79},"Demo","For larger tasks we can build a working prototype or walk you through a similar case live, before pricing the estimate.",{"title":2159,"text":2160},"Proposal","We send a concrete work plan, timeline and price range — no “it depends”.",{"title":2162,"text":2163},"Implementation","We configure, test and battle-test the solution under your real load, not in theory.",{"title":2165,"text":2166},"Handover & support","We hand it over with documentation and training, then stay in touch under SLA — we don't disappear after payment.",[2168,2187,2199,2210,2225,2241,2256,2270,2281],{"group":978,"icon":2169,"items":2170},"🧠",[2171,2174,2177,2180,2184],{"name":293,"emoji":2172,"note":2173},"🐍","FastAPI, aiogram",{"name":987,"emoji":2175,"note":2176},"🐹","media services",{"name":992,"emoji":2178,"note":2179},"⚡","firmware, calculations",{"name":2181,"emoji":2182,"note":2183},"Node.js","🟢","Nuxt, integrations",{"name":309,"emoji":2185,"note":2186},"✨","AI in bots and automation",{"group":2188,"icon":32,"items":2189},"Web",[2190,2193,2196],{"name":115,"emoji":2191,"note":2192},"💚","server-rendered websites",{"name":116,"emoji":2194,"note":2195},"🔷","typed front and back end",{"name":121,"emoji":2197,"note":2198},"🔍","Schema.org, indexing",{"group":1512,"icon":738,"items":2200},[2201,2203,2207],{"name":803,"emoji":220,"note":2202},"Android, Jetpack Compose",{"name":2204,"emoji":2205,"note":2206},"C# \u002F .NET","🟣","Windows 10\u002F11, WPF",{"name":807,"emoji":2208,"note":2209},"🪟","Windows 7",{"group":2211,"icon":564,"items":2212},"Servers & containers",[2213,2217,2219,2222],{"name":2214,"emoji":2215,"note":2216},"Ubuntu","🐧","server OS",{"name":120,"emoji":564,"note":2218},"Compose",{"name":119,"emoji":2220,"note":2221},"🧭","web server, proxy",{"name":642,"emoji":2223,"note":2224},"☸️","K3s, Helm",{"group":2226,"icon":2227,"items":2228},"Media & communications","🎥",[2229,2231,2234,2237],{"name":1364,"emoji":2227,"note":2230},"low-latency video",{"name":1369,"emoji":2232,"note":2233},"🎙️","real-time voice",{"name":312,"emoji":2235,"note":2236},"🎞️","media processing",{"name":2238,"emoji":2239,"note":2240},"Asterisk","☎️","IP telephony",{"group":1228,"icon":396,"items":2242},[2243,2244,2247,2250,2253],{"name":468,"emoji":396,"note":959},{"name":643,"emoji":2245,"note":2246},"🔒","fast VPN tunnel",{"name":644,"emoji":2248,"note":2249},"🥷","censorship circumvention",{"name":645,"emoji":2251,"note":2252},"🎛️","VPN panel",{"name":663,"emoji":2254,"note":2255},"🚇","tunnels, port forwarding",{"group":1310,"icon":1728,"items":2257},[2258,2261,2264,2267],{"name":296,"emoji":2259,"note":2260},"🐘","primary database",{"name":297,"emoji":2262,"note":2263},"🐬","billing, accounting",{"name":1328,"emoji":2265,"note":2266},"🔴","cache, queues",{"name":1338,"emoji":2268,"note":2269},"🗃️","compact services",{"group":1342,"icon":2271,"items":2272},"🔌",[2273,2276,2278],{"name":1346,"emoji":2274,"note":2275},"📟","custom firmware",{"name":1351,"emoji":1590,"note":2277},"device messaging",{"name":1356,"emoji":2279,"note":2280},"📶","links without Wi-Fi",{"group":1402,"icon":2282,"items":2283},"📈",[2284,2286,2289],{"name":647,"emoji":2282,"note":2285},"dashboards, graphs",{"name":646,"emoji":2287,"note":2288},"🔥","metrics, alerts",{"name":2290,"emoji":2291,"note":2292},"GitHub Actions","🐙","auto-deploy",[2294,2297,2300,2303],{"value":2295,"label":2296},"30+","case studies — from loyalty programs to corporate billing",{"value":2298,"label":2299},"24\u002F7","automation runs without your involvement",{"value":2301,"label":2302},"1 mo","free support after project handover",{"value":2304,"label":2305},"100%","code and data stay with you, not the contractor","en\u002Fsite",[2308,2309,2310,2311,2312],"Engineers, not a lone freelancer who is “sometimes” available","Fast to react — a small team, zero bureaucracy and approvals","We hand over the project with documentation and a month of support","Remote-first: written async updates in English, EU-friendly time zone (GMT+3)","Infrastructure with no single point of failure","KT-UokRfkNAUSDo5Y4CK3e0sK7SX34kdtiLJXLkgP5s",{"id":2315,"title":2316,"body":2317,"cases":2438,"description":2439,"extension":33,"meta":2440,"navigation":79,"path":2441,"related":2442,"seo":2443,"stem":2444,"updated":2445,"__hash__":2446},"glossary_deep_en\u002Fen\u002Fglossary\u002Fcrash-report.md","Crash Report",{"type":18,"value":2318,"toc":2432},[2319,2324,2340,2343,2352,2373,2380,2384,2425,2429],[2320,2321,2323],"h2",{"id":2322},"where-it-helps-a-business","Where it helps a business",[2325,2326,2327,2331,2334,2337],"ul",{},[2328,2329,2330],"li",{},"Users report \"it doesn't work for me\", while the developer needs the log, the version, the network state and the crash reason.",[2328,2332,2333],{},"Reports must not go to third-party services: testers' and customers' data stays with the owner.",[2328,2335,2336],{},"A log may contain keys, subscription links and passwords, and a report must not become a leak.",[2328,2338,2339],{},"You want to learn about a failure before the user writes to support.",[2320,2341,878],{"id":2342},"how-we-use-it",[21,2344,2345,2346,2351],{},"Our apps have two ",[2347,2348,2350],"a",{"href":2349},"\u002Fkeysy\u002Foshaplay-diag","report receivers"," on our own servers: one for the OshaPlay player and one for the VPN client. A receiver is a small Python program in Docker behind nginx; intake requires a token, reports are never served outward, and the developer reads them with a script.",[2325,2353,2354,2361,2367],{},[2328,2355,2356,2360],{},[2357,2358,2359],"strong",{},"The VPN client"," sends four kinds of reports: a crash, a log from the \"Send diagnostics\" button, entry-point probe results and a user message. In tester mode, reports about crashes and anomalies, such as a reconnect loop, an engine failure or a latency jump, go out by themselves.",[2328,2362,2363,2366],{},[2357,2364,2365],{},"OshaPlay"," sends a log of up to 5 MB, the phone model, audio outputs, headphones and the DAC check report every 12 hours, after a crash on the next launch, and immediately on a playback error. Music files are never sent.",[2328,2368,2369,2372],{},[2357,2370,2371],{},"Real-world value."," Phone reports revealed the cause of audio stutter with the screen off on Huawei.",[21,2374,2375,2376,2379],{},"We build report receivers under ",[2347,2377,716],{"href":2378},"\u002Fuslugi\u002Fprilozheniya",".",[2320,2381,2383],{"id":2382},"common-problems","Common problems",[2325,2385,2386,2401,2407,2413,2419],{},[2328,2387,2388,2391,2392,2396,2397,2400],{},[2357,2389,2390],{},"Secrets in the log."," Subscription links, ",[2393,2394,2395],"code",{},"vless:\u002F\u002F"," keys, UUIDs, passwords, tokens and ",[2393,2398,2399],{},"Bearer"," headers are masked on the device when the log is written, not on the server. This was checked on real reports.",[2328,2402,2403,2406],{},[2357,2404,2405],{},"No connection."," The VPN client puts reports into an on-disk queue of up to 20 files and 50 MB and sends them when the receiver is back. Sending never blocks the app.",[2328,2408,2409,2412],{},[2357,2410,2411],{},"Noise."," Automatic reports of one kind go out at most once every 5 minutes. A 413 response discards a report, and a 403 stops sending until the app restarts.",[2328,2414,2415,2418],{},[2357,2416,2417],{},"Server space."," OshaPlay reports are kept for 90 days and up to 800 MB in total.",[2328,2420,2421,2424],{},[2357,2422,2423],{},"Consent."," Tester mode is on by default because all builds are still test builds, and it doubles as consent to send. For a public release it has to be switched off.",[2320,2426,2428],{"id":2427},"when-you-do-not-need-it","When you do not need it",[21,2430,2431],{},"If an app has a dozen users and the developer sits in the same office, the log can be collected by hand. Your own receiver pays off when there are many devices, they are far away, and the data cannot go to a third-party service.",{"title":28,"searchDepth":29,"depth":29,"links":2433},[2434,2435,2436,2437],{"id":2322,"depth":29,"text":2323},{"id":2342,"depth":29,"text":878},{"id":2382,"depth":29,"text":2383},{"id":2427,"depth":29,"text":2428},[864,851,846],"Crash reports sent to your own server, no third-party service: what a report holds, how not to leak secrets, what happens offline, how long to keep them.",{},"\u002Fen\u002Fglossary\u002Fcrash-report",[1525,1423,1100,1515,959,1069],{"description":2439},"en\u002Fglossary\u002Fcrash-report","2026-10-01","Csl1S3coSnGtDWFIRZ05pWk0oaE1z-ercI4aGZ4VnjM",1790875034827]