Собери что-то настоящее
Проекты
Нешаблонные проекты, которые прокачивают изученное. Выбери один, доведи до конца, затем подними до сеньорского уровня.
Показано: 51 · запускаемых стартеров: 26
Архитектура B2B-платформы заказов и биллинга
Спроектируй архитектуру B2B-платформы заказов и биллинга от начала до конца: выдели ограниченные контексты из проблемного пространства, назначь каждому структурный стиль (слоёный, гексагональный или чистый/луковый), реши, где оправданы CQRS, event sourcing и event-driven саги, выбери между модульным монолитом и набором сервисов, явно избегая ловушки распределённого монолита, и обоснуй каждое значимое решение Architecture Decision Record, подкреплённым измеримой фитнес-функцией.
architecture-patternsОткрыть проект →Очередь задач at-least-once
Собери долговечную очередь задач на Postgres с visibility timeout и идемпотентными консьюмерами, чтобы упавший воркер не терял задачу.
● ЗапускаемыйqueuesdistributedОткрыть проект →Лаборатория «от разведки до устранения» в авторизованном окружении
Подними намеренно уязвимую цель, которой ты владеешь — заведомо «сломанное» приложение в локальном контейнере или CTF-машину на своём компьютере, — и проведи против неё полноценную наступательную работу от начала до конца, в рамках, которые ты сам себе утвердил. Ты проводишь разведку машины, выбираешь один класс уязвимости, доказываешь его рабочим эксплойтом в лаборатории, а затем разворачиваешься на 180 градусов и пишешь исправление и правило обнаружения. Цель не в том, чтобы «вскрыть машину», а в том, чтобы прожить весь цикл, который проходит настоящая работа: рамки, доказательства, влияние, устранение — на цели, где никто не пострадает.
security-offensivesecurity-defensivesecurity-foundationsОткрыть проект →Фильтр Блума
Собери пространственно-эффективное вероятностное множество, отвечающее на запросы членства за O(1) с настраиваемой вероятностью ложных срабатываний, — и разберись, почему ложных отрицаний в нём быть не может принципиально.
● Запускаемыйdata-engineeringbackendОткрыть проект →Лаборатория cache stampede
Воспроизведи thundering-herd промах кэша под нагрузкой, затем убей его через single-flight и пересчёт с ранним истечением.
● ЗапускаемыйcachingОткрыть проект →Прерыватель цепи
Собери прерыватель цепи, который прекращает долбить падающую зависимость, безопасно прощупывает её в состоянии half-open и автоматически восстанавливается — именно этот паттерн не даёт каскаду микросервисов превратить один плохой узел в полный простой.
● ЗапускаемыйbackenddistributedОткрыть проект →Лаборатория харденинга облака
Возьми облачный аккаунт, которым владеешь сам, и проведи его от состояния «работает» к состоянию «защищаемо». Ты измеришь реальную текущую posture, ужмёшь IAM до least privilege, не сломав приложение, закроешь сеть и секреты и докажешь каждое изменение диффом «до/после». Это и есть суть работы по облачной безопасности: не добавлять фичи, а убирать постоянный доступ и тихие мисконфигурации, которыми воспользовался бы атакующий.
security-cloudsecurity-foundationssecurity-defensiveОткрыть проект →Совместные курсоры
Показать живой курсор и выделение каждого подключённого пользователя в общем документе, без конфликтов, через WebSocket.
networkingfrontendreactbrowserdistributedqueuesperformanceobservabilityОткрыть проект →Палитра команд
Палитра команд ⌘K с нечётким ранжированием, асинхронными источниками действий и полным клавиатурным управлением (стрелки, Enter, Escape, области видимости) — интерактивный слой, который нужен каждому профессиональному инструменту.
● ЗапускаемыйfrontendОткрыть проект →Кольцо consistent hashing
Собери кольцо на виртуальных узлах, которое перераспределяет минимальный набор ключей при появлении или уходе узла — базовый примитив за Dynamo, Cassandra и каждым шардированным кэшем, который должен пережить ротацию узлов без полного перебалансирования.
● ЗапускаемыйdistributedbackendОткрыть проект →Сервис фич-флагов
Собери небольшой сервис флагов с правилами таргетинга, процентными раскатками и типизированным SDK, который вычисляет флаги на клиенте из закешированного набора правил.
backendapisОткрыть проект →Конкурентный сервис ингеста на Go
Собери конкурентный воркер ингеста/фан-аута на Go — а затем эксплуатируй его: ограничь работу, примени backpressure, сделай вызовы downstream устойчивыми к отказам, выкати в минимальном контейнере и разбери инцидент с утечкой горутин, пока он не съел твою память.
gobackendperformanceobservabilitydeploymentОткрыть проект →Сервис RAG с опорой на источники
Демо RAG, отвечающее по корпусу, собирается легко; сервис RAG, которому ты доверишь живых пользователей, — нет. Сложность не в поиске, а в опоре на источники: заставить модель говорить только то, что подтверждает найденный текст, прикреплять цитаты, которые читатель может проверить, и доказать на eval-наборе, что ответы не уплывают в уверенную выдумку. Ты соберёшь весь цикл — нарезка, эмбеддинги, хранилище, retrieval top-k, опора, цитаты, оценка — и нащупаешь, где именно он течёт.
ai-llmbackenddatabasesobservabilityОткрыть проект →Защищённый домашний стек
Разверни self-hosted стек медиасервера и домашнего сервера на nas01.example, где пять сервисов делят сетевое пространство имён одного VPN-контейнера — kill-switch обрывает весь трафик в момент разрыва туннеля, список split-tunnel сохраняет LAN-доступ, а три кольца доступа (localhost / LAN 10.0.0.0/24 / mesh-VPN 100.64.0.30) держат нужные двери открытыми для нужных людей. Усиль хост: SSH только по ключу, fail2ban, автоматические обновления безопасности; напиши скрипт ротирующего резервного копирования с шифрованием age; и уходи зная, что стек уходит в тень при любом сбое.
dockernetworkingsecurity-defensivecliОткрыть проект →Лаборатория профилирования горячего пути
Возьми заведомо медленный кусок JavaScript и преврати его в управляемый эксперимент. Ты соберёшь микробенчмарк, которому действительно можно верить, отпрофилируешь горячий путь так, чтобы суметь назвать, что именно делает движок, и применишь оптимизации с учётом устройства движка — мономорфизм, устранение мегаморфных точек вызова, сокращение аллокаций — доказывая каждый выигрыш цифрами, а не ощущениями. Это вся дисциплина работы над производительностью в миниатюре: измерь, выдвини гипотезу о движке, измени одну вещь, измерь снова.
js-enginenodetypescriptОткрыть проект →Кодирование Хаффмана
Собери lossless-компрессор с нуля: постройте оптимальное дерево prefix-free кодов снизу вверх, выведи битовые строки и докажи, что round-trip точен, а результат короче кодирования фиксированной шириной.
● Запускаемыйalgorithmsdata-engineeringОткрыть проект →Идемпотентный ETL-конвейер
Конвейеры не падают аккуратно — они падают в три часа ночи, на середине загрузки, и кто-то их перезапускает. Этот проект учит одному свойству, которое отличает любительский скрипт от настоящей дата-инженерии: прогон, который можно повторить сколько угодно раз и всё равно получить ровно одну копию каждой строки. Ты построишь пакетную загрузку, идемпотентный load, watermark для инкрементальных выгрузок и проверки качества данных, которые останавливают мусор, прежде чем он отравит всё ниже по течению.
data-engineeringbackenddatabasessql-postgresОткрыть проект →Планировщик задач
Планировщик задач cron + backoff с доставкой at-least-once, идемпотентными обработчиками и visibility timeout — чтобы ни одна задача не терялась молча, даже при краше воркера на середине выполнения.
backendqueuesОткрыть проект →JSON-парсер с нуля
Напиши рекурсивно-нисходящий парсер JSON по спецификации — токенизатор, диспетчер значений, обработчик escape-последовательностей, декодер чисел — и наблюдай, как каждый крайний случай RFC 8259 превращается в конкретный путь в коде.
● ЗапускаемыйalgorithmstypescriptОткрыть проект →LRU-кэш
Собери LRU-кэш с вытеснением за O(1) на связке хешмапы и двусвязного списка — та самая задача, которая показывает, почему вытеснение из кэша сложнее, чем кажется.
● ЗапускаемыйbackendcachingОткрыть проект →Сервис, которому доверяет systemd
Скрипт, который запускается, может написать кто угодно. Задача — превратить его в сервис, который операционная система будет поддерживать живым, разумно перезапускать, честно логировать и зажмёт в угол, если он начнёт сбоить. Ты проведёшь небольшой демон от «работает, пока я держу терминал открытым» до настоящего systemd-юнита — запускаемого при загрузке, под надзором PID 1, с логами в journald и ограниченным радиусом поражения. Это и есть разница между кодом и сервисом.
linuxОткрыть проект →Мини-CRUD API
Собери свой первый настоящий бэкенд: крошечный HTTP API, который создаёт, читает, обновляет и удаляет заметки — на SQLite, чтобы данные пережили перезапуск. Ты пройдёшь путь от сервера в одну строку с «hello» до небольшого сервиса, который проверяет ввод и хранит строки, — честно, шаг за шагом.
● ЗапускаемыйnodebackenddatabasesОткрыть проект →Nest-сервис в продакшен-форме
NestJS вознаграждает за структуру и наказывает за её отсутствие. Собери сервис так, как его выкатила бы команда: feature-модули с настоящими границами, DTO, валидирующие на краю, guards и interceptors, которые держат сквозные заботы, типизированный config, в котором не опечатаешься, и e2e-набор, поднимающий всё приложение целиком. Это и есть разница между «знаю декораторы Nest» и «понимаю, зачем они существуют».
nestbackendnodeОткрыть проект →Next.js-приложение в продакшен
Собери мультитенантное контент-приложение на App Router — а потом эксплуатируй его: закрой авторизацию и секреты, наслои кэши, реши каждый выбор edge-vs-node и разберись с инцидентом, когда один тенант отравляет общую ISR-страницу.
nextjsfrontendsecurityobservabilityperformanceОткрыть проект →Числовой инструментарий
Собери небольшую библиотеку, на которую втайне опирается любая численная программа: векторы, матрицы, решатель линейных систем и описательную статистику — написанные тобой и проверенные на ответах, которые ты можешь подтвердить вручную. Здесь алгебра, которую ты выучил, перестаёт быть домашним заданием и становится кодом, который вызывает другой код. Ты на собственном опыте поймёшь, почему арифметика с плавающей точкой немного врёт, почему решить Ax = b сложнее, чем подсказывает учебник, и как доказать, что твои числа верны.
● ЗапускаемыйmathalgorithmsОткрыть проект →Мини OAuth 2.0 + PKCE логин
Реализуй поток authorization-code + PKCE целиком против реального провайдера, чтобы понять каждый редирект и токен, а не доверять библиотеке.
securityapisОткрыть проект →Офлайн-синхронизация PWA
Notes PWA с офлайн-приоритетом: локальная очередь записей (IndexedDB), которая синхронизируется при переподключении через last-writer-wins, service worker для кеширования ресурсов и background sync для пропущенных записей.
frontendbrowserОткрыть проект →Движок поиска маршрутов
Четыре алгоритма поиска — одна общая задача: добраться из A в B по взвешенной сетке. Ты построишь BFS, DFS, Dijkstra и A* на одной модели графа, а затем запустишь их бок о бок и увидишь, как они расходятся: DFS бросается в тупик, BFS равномерно растекается, Dijkstra ползёт наружу по стоимости, A* тянется к цели. Именно здесь раздел про алгоритмы перестаёт быть набором фактов и становится инструментами, между которыми ты выбираешь осознанно.
● Запускаемыйalgorithmsbase-csОткрыть проект →Личная страница-портфолио
Собери одностраничный сайт о себе на чистом HTML, CSS и капле JavaScript — без фреймворка, без сборки, просто файлы, которые открываются в браузере. В итоге у тебя будет что показать, и ты по-настоящему поймёшь каждую строчку, потому что написал её сам.
frontendbrowserОткрыть проект →Загрузка через presigned URL
Прямая загрузка в хранилище через presigned URL с ограничениями размера и content-type и webhook завершения, проверяющим, что объект действительно прибыл, — чтобы API-сервер никогда не касался байт файлов.
backendapissecurityОткрыть проект →Асинхронный Python-сервис: собрать и эксплуатировать
Собери асинхронный FastAPI-сервис приёма, который валидирует, прогоняет через пайплайн и выдерживает нагрузку, — а потом эксплуатируй его: упакуй, контейнеризуй с корректным поведением PID-1 и разберись с инцидентом, когда проглоченный CancelledError тихо протекает задачами, пока event loop не начинает голодать.
pythonbackendperformanceobservabilitydeploymentОткрыть проект →Визуализатор планов запросов
Вставь EXPLAIN (ANALYZE, FORMAT JSON) и отрисуй дерево плана с таймингом по узлам и ошибкой оценки строк, чтобы плохой join был виден сразу.
databasesОткрыть проект →Распределённый rate limiter
Собери token-bucket лимитер, который держится поперёк многих инстансов приложения за счёт счётчика в Redis, а не в памяти процесса.
● ЗапускаемыйapisbackendОткрыть проект →React-фича под нагрузкой
Выкати одну настоящую production-фичу на React — живой совместный дашборд активности — а потом эксплуатируй её: оптимистичные правки, стриминговые обновления, бюджет на кадр, полную доступность и разбор инцидента, когда render-шторм замораживает вкладку.
reactfrontendperformanceobservabilityОткрыть проект →Движок регулярных выражений
Собери движок регулярных выражений с нуля через конструкцию Томпсона и симуляцию подмножества состояний — тот же метод, что делает grep и re2 иммунными к катастрофическому обратному ходу.
● Запускаемыйalgorithmsjs-engineОткрыть проект →Оптимизатор отчётной схемы
Отчётность — это место, где база либо оправдывает себя, либо нет: запросы широкие, таблицы большие, а «тормозит» — самый частый баг в продакшен-аналитике. Ты смоделируешь домен продаж и событий, напишешь честные медленные версии запросов для дашборда, а затем ускоришь их индексами и материализованными представлениями — и прочитаешь EXPLAIN ANALYZE, чтобы доказать ускорение, а не гадать о нём. Это сердце трека: превратить расплывчатое «отчёт подтормаживает» в измеренное, обоснованное изменение плана.
sql-postgresdatabasesdata-engineeringОткрыть проект →Мини-сигналы
Собери реактивную библиотеку сигналов примерно в 100 строк (signal/computed/effect) с автоматическим отслеживанием зависимостей и безглючными батч-обновлениями — та же модель, что лежит в основе Solid, Preact Signals и Vue 3.
● ЗапускаемыйfrontendОткрыть проект →Список с пропусками
Реализуй вероятностную упорядоченную структуру данных, которая обеспечивает O(log n) поиск, вставку и удаление без балансировочной бухгалтерии деревьев — только слоистые «экспресс-полосы» через отсортированный связный список.
● ЗапускаемыйalgorithmsdatabasesОткрыть проект →Досье по проектированию системы
Возьми одну крупную систему — сократитель URL, который должен обслуживать миллиарды редиректов, — и напиши проектный документ, который staff-инженер защищал бы на ревью. Никакого работающего кода: результат — это строгий текст, числа и диаграммы. Ты пройдёшь путь от расплывчатого «сделай короткие ссылки» к очерченным требованиям, прикидочной модели нагрузки, конкретной модели данных и API, к тому единственному узкому месту, которое реально ломается под нагрузкой, и к честной карте того, чем ты пожертвовал ради его устранения.
system-design-casessystem-designОткрыть проект →Текстовый diff — алгоритм Майерса
Реализуй алгоритм diff Майерса с нуля: вычисли наибольшую общую подпоследовательность, построй edit script обратным ходом, докажи минимальность и применяй патчи так, чтобы любой round-trip был побайтово точным.
● Запускаемыйalgorithmsengineering-practiceОткрыть проект →Моделирование угроз и закаливание небольшого приложения
Возьми небольшое приложение, которым ты полностью владеешь, и прогони его через цикл, в котором живёт настоящий инженер по безопасности: сначала разберись, как атакующий реально его сломает, а затем закрой эти пути один за другим. Ты построишь дерево атаки против собственного сервиса, а потом починишь аутентификацию, авторизацию, обращение с секретами, заголовки безопасности и валидацию ввода — и запишешь, какое исправление убивает какую ветку дерева. Это и есть всё ремесло защитной безопасности в миниатюре: не чек-лист, а цепочка от угрозы к мере, которую ты сможешь защитить вслух.
security-foundationssecuritysecurity-defensiveОткрыть проект →Трёхзвенное приложение на AWS через IaC
Подними настоящую трёхзвенную систему на AWS — балансировщик спереди, вычислительный слой посередине, управляемый Postgres за ним и S3 для объектов — целиком из кода, который можно прогнать заново. Суть не в том, чтобы один раз прокликать консоль; суть в том, чтобы описать всю топологию, её IAM и сетевые границы как Terraform (или CDK), который можно передать коллеге, снести и пересоздать байт в байт. Это тот проект, где «инфраструктура» перестаёт быть кучей консолей и становится артефактом, который можно ревьюить.
awsdockersecurity-cloudОткрыть проект →Крошечная стековая виртуальная машина
Собери машину, которая исполняет программы. Ты определишь небольшой набор инструкций в виде байт-кода, напишешь ассемблер, превращающий читаемые мнемоники в байты, и напишешь цикл интерпретатора, который по одной достаёт, декодирует и исполняет их. К концу ты разберёшь по косточкам весь путь от строки исходника до работающей программы — потому что каждый его слой написал сам.
● Запускаемыйbase-csalgorithmsОткрыть проект →Планировщик сборки на топологической сортировке
Собери планировщик задач на основе DAG — как Make или CI-пайплайн — который упорядочивает задачи по зависимостям, обнаруживает циклы до дедлока и определяет, какие задачи можно выполнять параллельно.
● Запускаемыйalgorithmsengineering-practiceОткрыть проект →Движок автодополнения на основе trie
Собери префиксное дерево для ранжированного автодополнения — вставляй слова с весами, проходи каждый префикс за O(длина_префикса + результаты) и детерминированно разрешай ничьи без базы данных.
● ЗапускаемыйalgorithmsfrontendОткрыть проект →Прувер по таблицам истинности
Преврати логику, которую ты изучал на бумаге, в работающий движок: распарси формулу пропозициональной логики в дерево, обойди все наборы значений и построй её таблицу истинности, а затем реши, тавтология ли она, выполнима ли и эквивалентна ли другой формуле. Логика — это место, где строгость становится механической, и написать машину, которая проверяет рассуждение, — самый верный способ понять, почему рассуждение верно. В итоге у тебя будет маленький, но честный проверяльщик теорем, которому ты доверяешь, потому что собрал каждый его шаг сам.
● ЗапускаемыйlogicalgorithmsОткрыть проект →Типобезопасный SDK для API
Собери клиент, которому другие инженеры действительно будут доверять: типизированный SDK поверх настоящего HTTP API, где неправильное поле, пропущенный вариант и ответ, соврамший о своей форме, ловит компилятор — а не падение в проде. Ты смоделируешь домен через размеченные объединения и дженерики, проверишь каждый ответ на границе и дашь выводу типов донести точные типы до места вызова, не оставив ни одного `any`, которым прикрывают дыры.
● ЗапускаемыйtypescriptapisbackendОткрыть проект →Union-Find (система непересекающихся множеств)
Построй структуру непересекающихся множеств от наивного массива родителей до почти константного амортизированного времени — и прими на ней алгоритм Краскала для поиска минимального остовного дерева.
● ЗапускаемыйalgorithmsdistributedОткрыть проект →URL-сокращатель под нагрузкой
Собери URL-сокращатель, который выдерживает настоящий трафик, — а потом эксплуатируй его: задеплой, наблюдай и разберись с инцидентом, когда одна горячая ссылка плавит твой кэш.
● Запускаемыйsystem-designapisdatabasesbackendcachingsecurityengineering-practiceci-cddeploymentobservabilityperformanceОткрыть проект →Виртуальная таблица данных
Отрисуй и плавно прокручивай 100 тыс. строк на 60fps с windowing-виртуализацией, залипающими заголовками и полной клавиатурной навигацией — без библиотек, только математика.
● ЗапускаемыйfrontendperformanceОткрыть проект →Краш-устойчивое key-value хранилище с WAL
Собери крошечное дисковое KV-хранилище, которое переживает kill -9 на середине записи, дописывая в write-ahead log до изменения основного файла.
● ЗапускаемыйdatabasesdistributedОткрыть проект →