LINUX.ORG.RU

CADBase 0.3.2 — инженерная платформа, теперь полностью открытая

 , , , ,


0

3

CADBase – это цифровая платформа для публикации, хранения, версионирования и обмена 3D-моделями, чертежами и сопроводительной документацией.

Релиз версии 0.3.2 знаменует собой важный рубеж в развитии платформы CADBase: теперь весь код открыт под свободными лицензиями. Серверная часть (cdbs-back), процессы фоновой обработки (cdbs-proc) и миграции для БД (cdbs-migrations) становятся доступными сообществу.

Изначально планировалось публиковать проект сразу в open source, но потом перешли к закрытой разработке с планом открыть код через некоторое время. Исходный код веб-приложения был открыт под лицензией MIT в 2023 году и теперь, в 2026 году, открыты исходные коды всех репозиториев. Пусть и с большой задержкой, но теперь это сделано – хорошая новость.

Что это меняет?

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

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

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

Кратко о лицензировании:

  • Веб-приложение (cdbs-app) — MIT License
  • Серверная часть (cdbs-back, cdbs-proc) — GNU Affero General Public License v3.0
  • Схема базы данных и основные данные (cdbs-migrations) — PostgreSQL License

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

Изменения платформы — версия 0.3.2

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

Обновление веб-интерфейса

Просмотр 3D-моделей

Добавлена поддержка STEP — одного из самых распространённых форматов обмена 3D-моделями в инженерии. Таким образом, просмотрщик CADBase поддерживает 6 форматов: STL, GLTF, GLB, STEP, GCode и IFC.

Горячие клавиши были переработаны: для сброса вида используется H (вместо R), Z для каркасного режима (вместо W) и T для управления трансформационным гизмо.

В полноэкранном режиме клавиши W, E, R переключают режимы гизмо (перемещение/вращение/масштабирование); цифровые клавиши теперь работают так: 1/3/7/0 — виды спереди/слева/сверху/изометрия, 9 — противоположный вид, 2/4/6/8 — повороты камеры, 5 — переключение между перспективной и ортографической проекцией. Слушатели горячих клавиш активируются только при фокусе на просмотрщике (canvas).

Добавлена обработка двойного клика по модели, который устанавливает центр вращения (pivot point) камеры в точку, куда кликнул пользователь. То есть камера, сместив центр вращения, будет вращаться вокруг этой точки.

Чтобы ускорить повторную загрузку недавно просмотренных моделей и снизить нагрузку на сеть, переработана система кэширования: реализован простой in-memory кэш с вытеснением по очереди добавления (удаляется самый старый).

Исправлена проблема с центрированием и автоматическим масштабированием моделей.

Система управления доступом

По запросу одного из пользователей был реализован прототип RBAC — системы управления доступом. Пользователь в итоге пропал так же внезапно, как и появился, но код был написан и добавлен в основную ветку.

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

Реализация пока что является прототипом, так как на стороне сервера и базы данных остались некоторые моменты, которые планируется доделать в будущем. Оперативность завершения будет зависеть от запросов пользователей.

Безопасность пользовательского интерфейса

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

Добавлена санитизация HTML и Markdown, чтобы минимизировать риск XSS-атак через пользовательский контент.

Рассчитываем на обратную связь в части безопасности. Надеемся, что наши пользователи будут сообщать о проблемах нам, а не злым хакерам. Хотя бы ставьте в копию :)

Ключевые изменения под капотом

API Key для интеграций

Теперь разработчики могут подключать свои инструменты к CADBase через API-ключи.

Что это даёт:

  • Можно создавать, обновлять и отзывать ключи через интерфейс пользователя на сайте платформы.
  • Ключи передаются через заголовок X-API-Key (стандартный подход).
  • У каждого ключа есть срок действия и базовый аудит использования в виде даты последней активности.

Дополнения, плагины, импорт/экспорт данных — всё это теперь можно делать без использования пользовательских JWT-сессий.

Управление сессиями и JWT

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

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

Безопасность

Добавлены современные заголовки безопасности:

  • HSTS – принудительное HTTPS.
  • CSP – контроль над загружаемыми ресурсами.
  • X-Content-Type-Options, X-Frame-Options и другие.

Оптимизация кода и обработка ошибок

  • Перешли на всемирное координированное время (UTC) вместо локальной привязки.
  • Теперь используется встроенный механизм Argon2, убрана ручная работа с солью и процесс верификации стал проще и правильнее.
  • Реализована параллельная проверка загруженных файлов в S3-хранилище. Это ускоряет процесс при загрузке нескольких файлов и снижает время простоя.

Сейчас платформа CADBase метит в нишу открытой среды обмена инженерными данными, которая связывает независимых инженеров, конструкторские бюро и производственные предприятия. Это что-то «крафтовое» и на Rust.

Репозитории и зеркала

Разработка на GitLab – https://gitlab.com/cadbase/

Зеркала
Codeberg – https://codeberg.org/mnnxp/
GitHub – https://github.com/mnnxp/


Предыдущие новости о платформе

10.02.22 CADBase — сайт для хранения и обмена чертежами
10.02.23 CADBase — цифровая платформа для обмена 3D-моделями и чертежами
06.11.23 Обновление платформы CADBase для обмена конструкторскими данными
10.02.25 Развитие платформы CADBase за год
19.09.25 CADBase 0.3 — обновление платформы и интеграций

>>> Подробнее о платформе

★

Проверено: hobbit ()
Последнее исправление: unfo (всего исправлений: 9)
Ответ на: комментарий от thesis

Это аббревиатура «Жизненный цикл» (сокращение на англ. LCS).
Кстати, ещё есть глоссарий, вот пояснение по термину Статус ЖЦ:

Показатель текущего этапа жизненного цикла компонента в системе.

margarin ★
() автор топика
Ответ на: комментарий от mega_venik

Спасибо, Капитан Очевидность!

a1ba ★★★★
()
Ответ на: комментарий от demidrol

Поспешил… Принимайте исправление чересчур.

margarin ★
() автор топика
Ответ на: комментарий от thesis

Не то чтобы лучше… Просто занимает меньше места. То есть ограничение из-за мобильной верстки, чтобы не добавлялась лишняя строка. Предпочитаете видеть Статус ЖЦ? Если да, то будет отдельная логика для мобильных.

margarin ★
() автор топика
Ответ на: комментарий от margarin

Я не понимаю ценности этих ЖЦ, СЖЦ, ХЦЖЩ и тому подобного. Если их выкинуть, кто-то пострадает?

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

Раз за ЖЦ в том или ином виде никто не вступился, в ближайших правках заменю термин на Стадия.

margarin ★
() автор топика
Последнее исправление: margarin (всего исправлений: 1)
Ответ на: комментарий от thesis

Если их выкинуть, кто-то пострадает?

Видимо, нет :)

margarin ★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

все эти СР УВЧ не упёрлись

Хрюкостяг!

pihter ★★★★★
()
Ответ на: комментарий от thesis

PLM, «жизненный цикл» и прочее — принятая в отрасли терминология. Все кому надо понимают о чём речь.

Alden ★★★★★
()
Ответ на: комментарий от Alden

Вопрос в распространенности сокращения ЖЦ и в необходимости видеть его в интерфейсе. Ну и существительного перед ним, стадия-статус-этап, что там в русском прижилось. ТС думает остановиться на «стадии», вноси предложения, пока не поздно и я всем всё не испортил.

thesis ★★★★★
()
Ответ на: комментарий от thesis

Когда меня учили, в ГОСТе были «стадия ЖЦИ» и «этап ЖЦИ» :) Стадия — норм

Alden ★★★★★
()
Последнее исправление: Alden (всего исправлений: 2)
Ответ на: комментарий от thesis

Э, нет, дарагой, там куча процессов, которые развиваются параллельно, с разными стадиями.

Кто ISO 12207 читал, тот в цирке не смеётся!

hobbit ★★★★★
()
Ответ на: комментарий от margarin

Раз за ЖЦ в том или ином виде никто не вступился

Я вступлюсь. Есть люди, для которых эта аббревиатура вроде пароля. И её наличие, вполне возможно, позволит вписаться в определённые рынки.

hobbit ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Да смотря кому. Мне, тебе – не упёрлись, точно. А вот кое-кому из кровавого энтерпрайза очень даже упёрлись. Если этот рынок интересен автору…

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Смиренно отползаю, но слово «стадия» (или что там еще) все-таки необходимо. «Подготовка» это ж не ЖЦ, а именно этап ЖЦ.

Я очень люблю господина ЖЦ.

thesis ★★★★★
()
Ответ на: комментарий от hobbit

Отлично! Часто сталкиваюсь именно с «ЖЦ» (операции ЖЦ, стадии ЖЦ и т.п.), но выбор, конечно, за пользователями.

margarin ★
() автор топика
Ответ на: комментарий от hobbit

Конечно. Без каталогов поставщиков основная задумка не имеет ценности. Но проблема курицы и яйца пока не решена. :)

margarin ★
() автор топика
Ответ на: комментарий от thesis

Думаю, исходя из этого обсуждения, термин Стадия ЖЦ можно считать подходящим: и не ребус, и соответствует стандартам.
По мобильной вёрстке — она изменилась, так что теперь Стадия ЖЦ без проблем помещается.

margarin ★
() автор топика
Ответ на: комментарий от Alden

Да, по ЕСКД так и есть, а в ГОСТ Р 58300-2018 встречаются термины стадия ЖЦ и этап ЖЦ.

margarin ★
() автор топика

Благодарю всех за участие! Обновил.

@thesis и @demidrol, спасибо, что указали на мои ошибки.

margarin ★
() автор топика
Ответ на: комментарий от bernd

Это не «прикрутить», а «открыть юрлицо и пройти проверки шлюза». :) Без этого банк не даст эквайринг. Пока на это нет ресурсов, а так идея хорошая.

margarin ★
() автор топика
Ответ на: комментарий от margarin

ну оформить лицо это владельца ресурса головняк. главно сделать удобно чтоб написал в двигле ид и пароль и все заработало из коробки. круто же, не? банк получает процентик, государство получает наложик, владелец ресурса все что осталось после. мож и 3д печать в стране так поднимется.

bernd ★★★★★
()
Ответ на: комментарий от bernd

Круто-то оно круто… Только в этой схеме платформа должна стать оператором платежей (маркетплейсом). В начале пути даже грант выиграли (не получили) с этой концепцией, но потом возникли некоторые трудности и ещё до написания кода от неё пришлось отказаться.

margarin ★
() автор топика
Ответ на: комментарий от margarin

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

bernd ★★★★★
()
Ответ на: комментарий от bernd

То есть запустил платформу на своем vps, ввёл ид и токен - получил магазин?

Для связи клиента и поставщика есть «Заявки», там счёт привязывается в pdf. Изначально делали для металлопроката, там еще калькуляция была (в релиз не вошла из-за специфики). Менее удобно, чем интеграция с банком, зато гибко.

В целом, если кто-то захочет видеть что-то конкретное или ещё лучше реализует интеграцию - я только за.

Пожалуйста, сообщите мне, если я снова не понял Вашу мысль.

margarin ★
() автор топика
Ответ на: комментарий от margarin

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

bernd ★★★★★
()
Ответ на: комментарий от bernd

Отлично. Благодарю за пояснение. Запрос понятен, попробую реализовать. Если есть ещё пожелания - уточните, пожалуйста: типы оплат, валюты и т.д.

Кстати, развернуть платформу можно одной командой через Docker Compose, так что первые «тык-тык» для создания галереи уже работают.

margarin ★
() автор топика
Ответ на: комментарий от bernd

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

margarin ★
() автор топика
Ответ на: комментарий от margarin

ну многие банки держат собственные платежные шлюзы, тот же альфа. можно еще посмотреть yookassa (бывшие яндекс касса). ну принимать хотя бы рубли, мне как самозанятому было бы сложно принимать баксы с пайпала, а если кому надо на западе прикрутит свой шлюз.

глянул инсталлер
вот это геморрой лишний
volumes:
- pgdata:/var/lib/postgresql/data
и в том же месте правильно
volumes:
- ./ssl:/usr/local/apache2/conf/ssl:ro
но лучше не ./, а вот так с размещением всех изменяемых подключаемых файлов в ./data
volumes:
- $PWD/data/pgdata:/var/lib/postgresql/data
- $PWD/data/ssl
а волюмы вообще не нужны, лишняя херня, осложняющая многие действия
volumes:
pgdata:

bernd ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.