Petr Tcoi

+17
с 2018
13 подписчиков
27 подписок

В разработке я очень ценю одну простую вещь: когда результат выполнения функции нельзя трактовать двусмысленно. Не null, не undefined, не “если что-то пошло не так, где-нибудь наверху поймаем исключение”, а нормальный явный результат: success(data) или fault({ code: 'OUTPUT_SCHEMA_ERROR', message: 'Invalid output schema' }). Мне нравится, когда выз…

Когда я запускал GramDeskBot, идея trial period казалась почти очевидной. Это стандартная SaaS-механика: пользователь регистрируется, получает несколько бесплатных дней, пробует продукт и потом решает, платить или нет. На бумаге всё выглядит логично, особенно если продукт новый и нужно снизить барьер входа. Но в реальной разработке оказалось, что t…

Недавно я запустил бета-версию Monavo - Telegram-сервиса для обмена токенов в сети Solana. Сейчас проект работает в режиме публичного тестирования, и основная цель этого этапа - посмотреть, как архитектура Monavo ведёт себя в реальной среде. В этой статье я хочу разобрать, как устроена архитектура Monavo, почему система разделена на edge-API и закр…

11

Я пользуюсь amoCRM каждый день как владелец небольшого бизнеса. У нас небольшой коллектив и несложная структура, но воронки, сделки и задачи все равно требуют внимания. И довольно быстро я заметил, что значительная часть времени уходит не на решения, а на однотипные ручные проверки в CRM.

Каждое утро сценарий был примерно одинаковый. Зайти в…

11

Принцип DRY (Don’t Repeat Yourself) - пожалуй, одно из первых правил, которые мы усваиваем как разработчики. Его идея кажется безупречной: не повторяй код, не дублируй знания, всё, что повторяется, вынеси в общее место.На практике это означает: если кусок логики повторяется в нескольких местах, его нужно сделать общим - в виде функции, класса, моду…

11

Делюсь своим опытом по организации перевода контента на разные языки. Сейчас работаю над многоязычным сайтом со стеком NextJS i18n + MongoDB (Mongoose). На сайте довольно много текста, который изредка обновляется.

Для перевода текстов на проекте используется Google Translate. Поэтому первоначально была создана простая функция для перевода вид…

11

Недавно закончил очередной онлайн-магазин отопительного оборудования. Хочу поделиться стэком технологий, который использовал для него.

Сайт:

11

Делюсь первым опытом работы с библиотекой htmx. Я создал простой сайт, состоящий из главной страницы с первоначальным набором карточек квартир и 5 кнопок, которые выводят отфильтрованные по количеству комнат квартиры.

Стек: Astro + HTMX + Tailwind

22

Оператор `satisfies` указывает TS на то, какой тип переменной мы ожидаем без переопределения ее собственного типа. В некоторых случаях такая возможность оказывается очень полезной. Рассмотрим простой пример, где данный оператор может оказаться полезным.

У нас есть список продуктов `listA` и нужно подготовить объект, ключи которого были бы про…

Одним из преимуществ NextJS является возможность совмещать frontend и backend в рамках одного проекта и использовать общие типы и интерфейсы. К сожалению, серверная часть фреймворка работает в отрыве от фронта, являясь во многом самостоятельным приложением. Поэтому, обеспечение typesafe требует дополнительной работы. В этой статья я поделюсь своим…

11

В этой статье я хочу поделиться своим опытом разработки приложений с применением подхода FSD (Feature-Sliced Design). Здесь не будут рассматривать ее детально, так как на этот счет есть достаточно хороших материалов, начиная с официального сайта (изображения в этой записи взяты именно с него), и заканчивая статьями на Хабре.

22

Выдался удобный случай попробовать создать небольшой сайт с помощью фреймворка AstroJS - магазин радиаторов velarshop.ru (больше просто онлайн-каталог).

В основе работы Astro лежит "островная архитектура": к…