Skip to content

(DRAFT) Feature (mix task): Add a LiveView generator to scaffold the code by Domain, Resources and Actions on the Web layer  #6

@Exadra37

Description

@Exadra37

Mix Task to generate the LiveView Web folder structure organized by Domain, Resource and Actions

Github Sponsor: https://github.com/sponsors/Exadra37

Warning

→ Not sure if LiveView allows me to easily split the code into one module per action on a Domain Resource.
→ Requires some investigation. Maybe I should build the website to sell the templates while developing this generator 🤔

Why?

To enable developers to write Clean Code in a Clean Software Architecture that respects the Single Responsibility Principle.

The traditional approach in software development tends to group all actions for a resource under the same module, which violates the Single Responsibility Principle because the module has more than one reason to change, as many as the number of actions on the resource.

What?

What to expect from this task is that when the developer executes the mix scribe.gen.live ... command in the terminal, the result is a folder structure where a module is created for each action of a LiveViewr resource in a domain at lib/my_app_web/. This respects the Single Responsibility Principle because each module only has one reason to change: the web logic for the single action it is responsible for.

This generator will also invoke mix scribe.gen.domain (issue #4) to generate the Domain, Resource and Actions for the core business logic.

When?

The developer should use this generator whenever they need to create a new feature consumed by a LiveView app via Live endpoints.

Acceptance Criteria's

Let's base the acceptance criteria's on a developer tasked with building an Online Shop.

TODO: Define the acceptance criteria's

Metadata

Metadata

Assignees

Labels

draftFor issues that are being defined, thus not ready to work on

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions