Серия 1. Как всё начиналось. Долгий путь к собственному инструменту

1997 год – формирование коллекции

Сначала это были просто видеокассеты с любимыми фильмами — без особой системы, без структуры, без мысли о будущем.

Со временем их становилось всё больше. К началу нулевых, на пике своего размера, коллекция насчитывала около 450 видеокассет. И в какой-то момент возник вполне естественный вопрос: всё это нужно как-то систематизировать, завести хотя бы минимальный учёт.

Самым очевидным и доступным инструментом стал MS Excel. Никакой сложной логики — обычный список, в котором можно было зафиксировать хотя бы сам факт наличия фильма.

Конец девяностых — начало нулевых. Переход на DVD

С переходом на DVD коллекция продолжила расти.

Простой список в Excel уже не устраивал. Он выполнял свою функцию, но выглядел слишком примитивно. Хотелось, чтобы представление коллекции стало визуальным, чтобы фильмы можно было не только учитывать, но и видеть.

Появляются Excel-таблицы с изображениями, более сложной структурой, связями внутри листов и между ними. Коллекция постепенно обрастает деталями, а вместе с ней усложняется и её учёт.

Базовый список по-прежнему сохраняется.
Базовый список по-прежнему сохраняется.

Количество таких таблиц растёт. И довольно быстро проявляется ограничение времени: компьютеры того периода оказываются недостаточно мощными для работы с большими файлами. Таблицы загружаются медленно, работать с ними становится неудобно.

В результате появляются отдельные файлы — по жанрам, по годам. Это решение позволяет хоть как-то сохранить работоспособность системы, но одновременно делает её всё более раздробленной.

Середина нулевых. Поиск других решений

К середине нулевых коллекция продолжала расти. Количество фильмов перевалило за 1000, а число Excel-таблиц достигло нескольких десятков. Управлять этим «зоопарком» становилось всё сложнее — система переставала быть удобной, и становилось ясно, что нужно искать другой подход.

В какой-то момент возникает вполне логичная мысль: а не использовать ли базу данных? Что-нибудь вроде MS Access или другого похожего решения. Однако дов��льно быстро приходит другое понимание — возможно, существуют специализированные программы, изначально предназначенные для коллекционеров.

Начинается изучение обзорных статей и сравнений. В итоге выбор падает на Movie Collector (разработчик – Collectorz.com), который на тот момент выглядит наиболее удачным вариантом.

Он привлекает профессиональным дизайном, хорошей поддержкой и широким набором сохраняемых данных. Но, пожалуй, самой интересной особенностью становится наличие разных шаблонов для оформления карточек дисков и фильмов.

Шаблоны оказываются разными: какие-то с явно устаревшим интерфейсом, какие-то вполне современными и визуально приятными. Особенно важно другое — компания-разработчик активно развивает продукт, внедряет новые функции и выпускает новые, более современные шаблоны. Это создаёт ощущение живого, развивающегося решения, на которое можно опереться.

Конец нулевых. Рост базы и возвращение Excel

К концу нулевых количество фильмов, внесённых в базу Movie Collector, достигает 2000 и продолжает расти.

Когда коллекция достигает таких размеров, появляется потребность не просто хранить данные, а анализировать их. Понимать, что уже есть, а чего не хватает.

И здесь снова на сцену выходит MS Excel.

Мне, как и любому коллекционеру, важно иметь чёткое представление о собственной коллекции. Мир кино огромен, и мне он интересен целиком. Немое кино двадцатых, «золотой век» Голливуда тридцатых, советское кино, японское кино, фантастика, мюзиклы, анимация — мне интересно всё.

Чтобы не потеряться в этом многообразии, я выбираю определённый жанр или временной отрезок и какое-то время работаю с ним, периодически меняя фокус. Такой подход помогает сохранять осмысленность коллекционирования и не превращать его в бесконечное накопление.

Появляются новые таблицы со списками. Жанровые таблицы. Периодические таблицы.

Пример «жанровой» таблицы.
Пример «жанровой» таблицы.

Начало двадцатых. Перегруз, дублирование, тупик

К началу двадцатых коллекция продолжает расти.
В базе Movie Collector — больше 4400 фильмов, а фактически в коллекции — уже больше 5000.

Растёт и количество вспомогательных таблиц. И вместе с этим всё отчётливее возникает ощущение неудовлетворённости тем, как устроен процесс ввода данных.

Типичный сценарий выглядит так: сначала новый фильм вносится в Movie Collector, затем те же данные приходится заносить в одну таблицу, потом в другую. Один и тот же набор информации многократно дублируется в разных местах. Это начинает вызывать острый дискомфорт — и из-за потери времени, и из-за ощущения бессмысленной механической работы.

Карточка фильма в Movie Collector.
Карточка фильма в Movie Collector.

К этому добавляется ещё одна проблема. Компания-разработчик Movie Collector прекращает развитие настольного приложения и вместо этого фокусируется на продвижении своего онлайн-сервиса CLZ. Ну что же — веяние времени.

Формально переход возможен. Базу данных можно конвертировать и продолжить работу уже в новом сервисе. Но, глядя на него, я понимаю, что по сути ничего принципиально не меняется. Дизайн пользовательского интерфейса остаётся прежним, новые шаблоны давно не появляются, а функции, которые добавляет разработчик, для меня не представляют практической ценности.

В этот момент становится ясно: существующие решения больше не закрывают мои задачи.

Финал. Конец первой серии

Что делать?

Логичный следующий шаг — посмотреть, существуют ли другие решения. Возможно, есть компании, которые предлагают что-то подходящее.

Увы, ничего найти не удалось. Letterboxd — это социальная сеть. Остальные варианты — небольшие, полумёртвые проекты с устаревшим интерфейсом и ограниченными возможностями.

В итоге сервис CLZ остаётся, по сути, единственным и лучшим из того, что представлено на рынке. Но и он больше не решает мои задачи.

Вывод напрашивается сам собой: а что если разработать собственное приложение? 

Серия 2. Возвращение в программирование. Разработка собственного приложения

Камбэк

Коротко о себе. По образованию я инженер-программист, начинал ещё в начале девяностых.

В середине девяностых я ушёл из программирования. Однако из сферы IT не исчез: работал с компьютерным железом, занимался продажами и закупками. Технологии оставались рядом, но уже в другой роли.

И вот, спустя много лет, возникает вопрос: а можно ли вообще вернуться в программирование после такого перерыва?

Тех языков, на которых я писал свои первые программы, по сути, уже нет. Pascal, ассемблер, скрипты для баз данных dBase… Формально они, конечно, существуют. Но использовать их для разработки современного приложения невозможно.

В какой-то момент сомнения упираются в простую мысль: «волков бояться — в лес не ходить». Значит, надо посмотреть, на чём сегодня пишет новое поколение — зуммеры, или как их там.

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

Дальше — выбор языка программирования.
Сначала — ностальгический вариант, C++.
Затем — более рациональный, Python и JavaScript/TypeScript .

В итоге обучение оформляется в системный процесс. В течение двух лет — онлайн-курсы Яндекс Практикума. Специализации: Python-разработчик (расширенный) и Frontend-разработчик.

Выбор программного стека

Со временем стало понятно, что без чёткого выбора основного программного стека двигаться дальше невозможно.

Часть технологий определилась естественным образом — в процессе обучения на курсах. Что-то пришло позже, уже на этапе практики и самостоятельных экспериментов. В итоге сложился стек, с которым оказалось комфортно работать именно в рамках этого проекта.

Frontend.

Для клиентской части я остановился на следующем наборе технологий:

  • TypeScript

  • Next.js 15

  • React 19

  • Prisma / PostgreSQL

  • Tailwind CSS

  • shadcn/ui

  • Zustand

Этот стек позволял строить достаточно сложный интерфейс, при этом сохраняя контроль над структурой данных и состоянием приложения.

Backend.

Серверная часть была реализована на:

  • Python

  • FastAPI

  • PostgreSQL

  • SQLAlchemy

  • Alembic

  • Pydantic

Такой набор хорошо ложился на задачу работы со сложной моделью данных и позволял достаточно быстро развивать API без излишней архитектурной нагрузки.

Отдельной задачей стало развёртывание и настройка серверной инфраструктуры.

Для этого я выбрал Timeweb.cloud — не реклама, а просто как факт. На тот момент этот вариант оказался наиболее понятным и удобным для самостоятельного развёртывания и дальнейшей поддержки проекта.

Первые шаги. Процесс разработки

Изначальная концепция была предельно простой: приложение для себя.
По сути — персональный сайт, который одновременно является базой данных моей коллекции.

Но довольно быстро возникает логичный вопрос. Это ведь сайт. Он находится в интернете. Зачем его закрывать? Почему бы не дать возможность другим людям зайти и посмотреть на коллекцию? Возможно, даже предоставить какие-то интерактивные функции.

Однако почти сразу появляется и встречная мысль: а зачем им это? Насколько другому человеку вообще интересно смотреть на чужую коллекцию? У людей разные вкусы, люди смотрят разные фильмы…

И всё же уже на раннем этапе разработки, при создании админ-панели, когда начинает что-то получаться, приходит другое понимание. А что если реализовать не просто сайт с коллекцией, а полноценное приложение для коллекционеров?

В таком случае сразу возникает ключевой вопрос — разделение данных. Каждый коллекционер должен иметь возможность работать со своей коллекцией, причём хранимой на сервере.

Я рассмотрел несколько вариантов и несколько подходов к решению этой задачи. В конечном счёте выбор пал на использование схем PostgreSQL (Postgres schemas), как на наиболее подходящее решение в рамках выбранной архитектуры.

Результат. Что получилось в итоге

В итоге приложение оформилось как система, состоящая из трёх крупных частей.

Первая и, по сути, фундаментальная — база данных

Основная идея заключалась в том, чтобы предоставить коллекционеру значительную свободу действий. У разных людей могут быть совершенно разные подходы к организации собственной коллекции. Кому-то важно зафиксировать максимум возможных данных, кому-то — наоборот, достаточно минимального набора.

Коллекция может вестись на разных языках — на одном или сразу на нескольких. Один коллекционер захочет погрузиться глубоко и внести большое количество информации, собранной из популярных источников: IMDb, Кинопоиска, Wikipedia и других. Другой, напротив, ограничится базовыми сведениями и сделает акцент на визуальной составляющей.

Моя реализация базы данных — это попытка найти компромисс между свободой и правилами. С одной стороны, она не загоняет пользователя в жёсткие рамки заранее заданной модели. С другой — сохраняет структуру и порядок, без которых любая коллекция со временем превращается в хаос.

База данных.
База данных.

Вторая. Визуализация: страницы фильмов и персон

Страницы фильмов и персон. Здесь для меня ключевая идея — компактность.

Моя цель — свести прокрутку к минимуму. Вся информация должна помещаться на один экран, а переключение между разделами осуществляться с помощью вкладок.

Когда-то, во время обучения программированию, меня учили простому принципу: код хорошей функции или процедуры должен умещаться на экране монитора — или хотя бы на одном листе бумаги. Похоже, сегодня об этом принципе давно забыли.

В чём, на мой взгляд, основная проблема большинства существующих ресурсов? Страница фильма там — это, как правило, бесконечная прокрутка. Огромный объём информации, социальные функции — чужие отзывы, мнения, рейтинги, — реклама. В результате, прокручивая страницу всё дальше и дальше, ты в какой-то момент уже забываешь, зачем вообще сюда пришёл.

Дизайн таких страниц подчинён единожды выбранному шаблону — сухому и неинтересному.

Я прекрасно понимаю причины этого подхода: поддержка мобильных устройств, ориентация на массовую аудиторию. Но неужели я остался один, кто работает с большим экраном монитора? Кто предпочитает формировать собственное мнение на основе личного, а не чужого, опыта?

Мне хотелось этого избежать. Дать пользователю возможность оформить страницу фильма в соответствии со своим вкусом: выбрать фон, постеры или обложки, фотографии — и при этом не перегружать интерфейс ничем лишним. В итоге страница фильма должна формировать его визуальный образ, а не быть просто контейнером для информации.

Страница фильма.
Страница фильма.

Есть и ещё один важный момент, которого мне всегда не хватало на других ресурсах.

Как там представлены персонажи и актёры, занятые в фильме? Как правило, это список актёров с фотографиями, которые часто не имеют никакого отношения к конкретному фильму. Персонаж может быть результатом компьютерной графики или анимации, а рядом — фотография живого актёра, сделанная неизвестно когда и при каких обстоятельствах.

Мне ближе другой, возможно, более «театральный» подход.

Страница фильма – галерея персонажей.
Страница фильма – галерея персонажей.

Я сделал фокус именно на персонаже — дал коллекционеру возможность добавлять фотографии персонажей конкретного фильма, то есть актёров в роли, а не абстрактные портреты. Из этого, кстати, вытекает приятный бонус: в карточке актёра появляется галерея образов, составленная из сыгранных им ролей.

Третья. Аналитика — важнейший инструмент для коллекционера

В самом начале у меня была мысль сделать что-то похожее на поисковую систему IMDb. Но я вовремя одумался.

В результате был реализован инструмент в виде таблицы — с гибкими возможностями настройки, но при этом компактной и не расползающейся в ширину. Это именно рабочий инструмент, а не попытка скопировать чужую модель.

Таблица позволяет рассматривать коллекцию с самых разных ракурсов, создавая собственные выборки. Фильтрация и сортировка по годам, рейтингу, жанрам, персоналиям и множеству других параметров дают возможность работать с коллекцией осмысленно, а не просто хранить список фильмов.

А если этого оказывается недостаточно — всегда можно экспортировать данные в Excel и продолжить работу там, в привычной среде.

Есть и дополнительная «фишка», которая неожиданно оказалась очень удобной. Создав выборку, можно открыть страницу фильма в новой вкладке браузера и перемещаться по этой выборке с помощью клавиш со стрелками. Такое своеобразное перебирание чёток — медленное и вдумчивое.

Аналитика (Insights). Фильтр по режиссеру, сортировка по Rating/Votes.
Аналитика (Insights). Фильтр по режиссеру, сортировка по Rating/Votes.


Конец фильма. 2026 год

Проект готов.

www.flickollect.ru

Если вы по-настоящему любите кино — не только смотреть его, но и разбирать, осмысливать, проживать — если после просмотра вы готовы потратить два–три часа, а иногда и больше, чтобы оформить страницу фильма и людей, принимавших участие в его создании, изучая их судьбы, время и контекст, в котором они работали…

Тогда, возможно, этот сайт создан именно для вас.

P.S. Планы на будущее

Совершенствование интерфейса.
Повышение стабильности и скорости работы под нагрузкой (была бы нагрузка).
Дать возможность пользоваться сервисом коллекционерам из других стран.