# `MishkaBlog.Dev.Generator`
[🔗](https://github.com/mishka-group/mishka_blog/blob/v0.0.1/lib/mishka_blog/dev/generator.ex#L5)

Generator for MishkaBlog resources.
- Test functions (no prefix): simple, deterministic — used by factory and tests.
- Dev functions (dev_ prefix): realistic, rich data — used by dev seeds.

# `auto_posting`

# `blog_post`

# `blogger`

# `blogger_follower`

# `collection`

# `comment`

# `comment_vote`

# `dev_auto_posting`

# `dev_blog_post`

A realistic English blog post whose lifecycle fields agree with its status: published posts carry a
`published_at` in the last 18 months, drafts carry neither date, and scheduled posts carry only a
`scheduled_publish_at` 31-45 days out. `:archived` is deliberately absent from the status pool —
that label is a separate axis from the `archived_at` soft delete and is written explicitly by the
seeds, never drawn at random.

A COVER IS PASSED IN, never invented here. This drew one from two hardcoded paths under
`/images/`, which exist in the host application and in no other project, so the same generator
wrote a working cover in one repository and a 404 in the next. The seeds hand over a path from the
site's own media library — see `MishkaBlog.Dev.Seeds` — and `nil` is the common case a post list
still has to look right without.

# `dev_blogger`

# `dev_collection`

# `dev_comment`

A realistic comment. Moderation status is weighted the way a live queue looks — mostly approved with
a thin tail of pending, spam and flagged rows — and pinning stays rare so the pinned marker keeps its
meaning.

# `dev_tag`

# `dev_team`

# `generate`

# `generate_many`

# `post_blogger`

# `post_bookmark`

# `post_collection`

# `post_rating`

# `post_tag`

# `post_view`

# `tag`

# `team`

# `team_follower`

# `team_member`

# `team_permission`

# `user_agent`

A plausible browser user agent, used by the seeds when writing post-view rows.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
