Генератор мок-данных с персонажами из популярных кинофраншиз

Генератор мок-данных с персонажами из популярных кинофраншиз

Часто в демо интерфейсах продуктов можно увидеть имена John Doe, Jane Smith, Test User и случайные почты вроде test@example.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`. Качество продукта держится на каноничности датасета: правильная профессия, реальный адрес, цитаты, логины персонажа.

Ссылки