Часто в демо интерфейсах продуктов можно увидеть имена John Doe, Jane Smith, Test User и случайные почты вроде test@example.com. И такой же рандомный текст в описании профиля, профессии и интересах.
Я создал генератор мок-данных, который генерирует данные профиля из персонажей популярных кинофраншиз. Во все тяжкие, игра престолов, офис, теория большого взрыва, матрица и другие. Подходит для демо, мокапов, скриншотов интерфейса и сидов баз данных.
Демо: loredata.orchidfiles.com
Функционал
29 киновселенных
Генерация одного профиля и группы профилей
Фильтр по интересам, имени, вселенной, локации
Работает в браузере, node.js и CLI
Все данные находятся в NPM пакете без API запросов
Установка
# library npm install loredata # CLI npm install -g loredata
Пример сгенерированного профиля
import { person } from 'loredata'; const p = person({ universe: 'breaking-bad' }); console.log(p); // Output { firstName: 'Walter', lastName: 'White', username: 'heisenberg', email: 'blue_sky_cook@lospollos.com', quote: 'I am the one who knocks.', profession: 'Chemistry teacher', interests: ['chemistry', 'cooking', 'family'], address: { street: '308 Negra Arroyo Lane', city: 'Albuquerque', state: 'NM' }, symbol: '☢️', universe: 'breaking-bad', universeName: 'Breaking Bad' }
Пример группы профилей
import { group } from 'loredata'; const team = group({ universe: 'game-of-thrones', size: 3 }); console.log(team); // Output [ { firstName: 'Jon', lastName: 'Snow', username: 'lord_commander' }, { firstName: 'Daenerys', lastName: 'Targaryen', username: 'mother_of_dragons' }, { firstName: 'Tyrion', lastName: 'Lannister', username: 'halfman' } ]
Детерминированный вывод
Если вам нужно получать одинаковый результат при каждой генерации, вы можете передать параметр seed:
const p = person({ universe: 'matrix', seed: 42 }); const team = group({ universe: 'matrix', size: 3, seed: 42 });
Подключение на фронтенде
Библиотека также поддерживает работу в браузерной среде через отдельную точку входа, не зависящую от fs или path:
import { loadUniverse, personFromData } from 'loredata/browser'; const universe = await loadUniverse('breaking-bad'); const p = personFromData(universe);
Это работает с Vite, webpack и другими сборщиками фронтенда.
CLI
loredata person --universe breaking-bad loredata person --universe breaking-bad --format json loredata person --interests chemistry,cooking loredata person --interests chemistry,cooking --interests-mode and loredata person --name walter loredata group --universe matrix --size 5 loredata universes
Как устроен проект
TypeScript-монорепо с pnpm. Внутри npm-пакет с библиотекой, CLI и веб-приложение с демо.
Данные лежат в JSON-датасетах: для каждой вселенной отдельные файлы с мета-информацией и персонажами. Чтобы подключить новую вселенную, достаточно добавить data/{id}/meta.json и data/{id}/characters.json. Качество продукта держится на каноничности датасета: правильная профессия, реальный адрес, цитаты, логины персонажа.
muradali
А фотки?
orchidfiles Автор
Фотки персонажей? Консилиум ИИ агентов сошлись во мнении, что это нарушало бы авторские права и возможно репозиторий с гитхаба бы удалили. А у меня нет причин не доверять ИИ агентам. Поэтому за место фоток я просто добавил эмодзи с отсылками к персонажам.
muradali
Ладно, выкрутился )