You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Scribes were elites in ancient societies, highly regarded and holding special social status. They were disciplined and known for their excellent craftsmanship in writing laws, copying documents, and other related tasks.
3
+
Scribes were an elite in ancient societies, highly regarded and holding special social status. They were disciplined and known for their excellent craftsmanship in writing laws, copying documents, and other related tasks.
4
4
5
-
For developers, the Scribe tool aims to help them embody the values of discipline and craftsmanship of the Scribes, enabling them to more easily write clean code in a clean software architecture for enhanced developer experienceand productivity.
5
+
The motivation to create the Scribe tool was to encourage developers to write cleaner code in a more organized software architecture, enabling them to know in seconds all domains (contexts), resources, and actions used in a project, while reducing complexity. This reduction in complexity translates into fewer bugs and makes it easier to add new features and implement bug fixes when they arise. Consequently, this results in less maintenance and technical debt across the lifetime of a project, leading to a more robust and easier-to-work-with codebase. Ultimately, this enhances developer experience, velocity and productivity. This is a win win for both the business and developers.
6
6
7
-
For businesses, the Scribe tool aims to increase velocity by enhancing developers' productivity, reducing technical debt and bugs in the codebase, while allowing features to be added more seamlessly.
7
+
The Scribe tool enables developers craftsmanship and professionalism to reach new levels never imagined before or thought to not be easy to achieve.
8
8
9
-
Both businesses and developers will find that these benefits are visible in the short and long term, but they will appreciate them even more as more features are added and fewer bugs arise due to the overall reduced complexity when compared with less well-structured approaches. This translates into less maintenance and a more robust and easier-to-work-with codebase.
9
+
Don't just be a Developer or Engineer, become a Scribe Developer and Engineer 🚀
10
10
11
-
Some of the benefits of using the Scribe tool to start and maintain an Elixir or Phoenix project:
12
11
13
-
* Know all domains (contexts), resources, and actions used in your project by just looking at the folder structure.
14
-
* Newcomers to the project or anyone returning after a while can easily understand what the project is all about and quickly start working on new features or bugs (folder structure for the win).
15
-
* The single responsibility principle is encouraged by the design of the folder structure, where a clear separation of domains, resources, and actions occurs, encouraging one resource action per module.
16
-
* Helps reduce tech debt due to the separation of concerns encouraged by the folder structure.
17
-
* It's much easier to find where to add a new feature without mixing it with existing code. For example: If it's a new action on a resource, just add one more action folder and the respective module(s) inside it.
18
-
* Quickly find and start debugging a bug because actions aren't entangled in a huge module with several resources for a domain (context). For example, if the bug is about creating a resource on a given domain, it's straightforward to know where to start due to the folder structure.
19
-
* The folder structure is documentation that never lies about what domains (contexts), resources, and actions are available in your project, whether huge or small.
12
+
## Folder Structure
20
13
21
-
The Scribe tool enables developers craftsmanship and professionalism to reach new levels never imagined before or thought to not be easy to achieve.
14
+
Can you grasp, in seconds, all domains, resources, and actions in your current large professional or pet projects?
22
15
23
-
Don't just be a Developer or Engineer, become a Scribe Developer and Engineer 🚀
16
+
With the Elixir Scribe folder structure you will always reply **YES** to the above question.
This is a very simplistic view of a project. Now, imagine reaping the benefits of this folder structure implemented on your extensive codebase, which may now contain dozens, hundreds, or even thousands of resources, each with potentially more actions than the ones exemplified here.
51
+
52
+
Take a moment to compare and contemplate this folder structure with the traditional one used in an Elixir or Phoenix project, which often condenses several resources and all their actions into a single module (the context). Alternatively, in cases where contexts are not used, they may simply consist of large modules with only one resource and all its actions.
53
+
54
+
Can you now understand why Elixir Scribe encourages developers to write cleaner code in a more organized software architecture?
27
55
28
-
The Elixir Scribe tool is highly opinionated, therefore I ask you to first [open a discussion](https://github.com/Exadra37/elixir-scribe/discussions/new?category=ideas) to propose your idea to avoid working and then seeing the PR refused.
56
+
57
+
## Benefits of Using the Elixir Scribe Tool to Create and Maintain Elixir and Phoenix Projects
58
+
59
+
* Know in seconds all domains (contexts), resources, and actions used in your project by just looking at the folder structure. This is priceless for anyone working on the project.
60
+
* Newcomers to the project or anyone returning after a while can easily understand what the project is all about and quickly start working on new features or bugs (folder structure for the win).
61
+
* The single responsibility principle is encouraged by the design of the folder structure, where a clear separation of domains, resources, and actions occurs, encouraging one resource action per module.
62
+
* Helps to reduce tech debt due to the separation of concerns encouraged by the folder structure, which naturally guides developers to not mix new features into an existing module, whether it's a new domain, resource, or just an action on a resource.
63
+
* It's much easier to find where to add a new feature without mixing it with existing code. For example: If it's a new action on a resource, just add one more action folder and the respective module(s) inside it.
64
+
* Quickly find and start debugging a bug because actions aren't entangled in a huge module with several resources for a domain (context). For example, if the bug is about creating a resource on a given domain, it's straightforward to know where to start due to the folder structure.
65
+
* Each resource on a domain has a public API to avoid direct access to the underlying implementation of each resource. This removes cross-domain boundary calls into the internals of each resource implementation, preventing the coupling of domains, which is a significant source of technical debt and complexity in a codebase. The Resource public API MUST be used not only from other domains but also from within the domain itself. This will allow the internals of a resource in a domain to change as needed, provided that we do not affect the public API for it.
66
+
* The folder structure is documentation that never lies about what domains (contexts), resources, and actions are available in your project, whether huge or small.
29
67
30
68
31
69
## Installation
32
70
33
-
If [available in Hex](https://hex.pm/docs/publish), the package can be installed
71
+
The [Elixir Scribe](https://hexdocs.pm/elixir_scribe/api-reference.html) package can be installed
34
72
by adding `elixir_scribe` to your list of dependencies in `mix.exs`:
35
73
36
74
```elixir
@@ -41,6 +79,15 @@ def deps do
41
79
end
42
80
```
43
81
44
-
Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
45
-
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
46
-
be found at <https://hexdocs.pm/elixir_scribe>.
82
+
83
+
## Documentation
84
+
85
+
The docs can be found at <https://hexdocs.pm/elixir_scribe>.
86
+
87
+
Documentation is generated with [ExDoc](https://github.com/elixir-lang/ex_doc).
88
+
89
+
90
+
## Contributing
91
+
92
+
The Elixir Scribe tool is highly opinionated, therefore I ask you to first [open a discussion](https://github.com/Exadra37/elixir-scribe/discussions/new?category=ideas) to propose your idea to avoid working and then seeing the PR refused.
0 commit comments