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
Copy file name to clipboardExpand all lines: README.md
+40-15Lines changed: 40 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ Scribes were an elite in ancient societies, highly regarded and holding special
4
4
5
5
The motivation to create the Elixir Scribe tool was to encourage developers to write **Clean Code** in a **Clean Software Architecture**, to enable them to know in seconds all domains, resources, and actions used in a project, while reducing complexity and contributing for less technical debt.
6
6
7
-
The Elixir Scribe tool enables developers craftsmanship and professionalism to reach new levels never imagined before or thought to not be easy to achieve.
7
+
The Elixir Scribe tool enables developers to go from zero to hero in no time, while empowering their craftsmanship and professionalism to reach new levels never imagined before or thought to not be easy to achieve.
8
8
9
9
Don't just be a Developer or Engineer, become a Scribe Developer and Engineer 🚀
10
10
@@ -22,6 +22,8 @@ Don't just be a Developer or Engineer, become a Scribe Developer and Engineer
22
22
*[Documentation](#documentation)
23
23
*[Contributing](#contributing)
24
24
*[Roadmap](#roadmap)
25
+
+[Generators](#elixir-scribe-generators)
26
+
+[Marketplace](#elixir-scribe-marketplace)
25
27
26
28
27
29
## Reduced Complexity Equals to Less Technical Debt
@@ -142,6 +144,7 @@ The main benefits of using the Elixir Scribe Tool to create and maintain Elixir
142
144
* 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.
143
145
* 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.
144
146
* The folder structure is documentation that never lies about what domains (contexts), resources, and actions are available in your project, whether huge or small.
147
+
* Enables easier migration from a monolithic to a micro-services architecture when the need arises.
145
148
146
149
[TOC](#toc)
147
150
@@ -164,6 +167,8 @@ end
164
167
165
168
## Quickstart
166
169
170
+
> **IMPORTANT:** Not merged yet to the main branch.
171
+
167
172
Let's create a fictitious Online Shop to exemplify how to use the Elixir Scribe tool:
168
173
169
174
```
@@ -212,20 +217,33 @@ The Elixir Scribe tool is highly opinionated, therefore I ask you to first [open
212
217
213
218
## Roadmap
214
219
215
-
The roadmap is extensive and due to the continuous high efforts and commitments to develop and maintain everything I may only provide some of the generators to Sponsors and/or as Pro versions that will require a paid license.
220
+
The roadmap is extensive and due to the continuous high efforts and commitments to develop and maintain everything I may only provide some of the features to Sponsors and/or as Pro versions that will require a paid license.
216
221
217
222
### Elixir Scribe Generators
218
223
219
-
-[ ] Mix task: `scribe.gen.domain`
220
-
-[ ] Mix task: `scribe.gen.html`
221
-
-[ ] Mix task: `scribe.gen.live`
222
-
-[ ] Mix task: `scribe.gen.home`
224
+
This generators provide developers with the tools to go from zero to hero in no time, while following a Clean Software Architecture that encourages Clean Code when building their Apps or APIs.
225
+
226
+
#### Typed Contracts
227
+
228
+
-[x]- Typed Contract is a struct with type specs to guarantee data shape correctness at runtime.
229
+
230
+
231
+
#### Mix Tasks
232
+
233
+
-[ ]`scribe.gen.domain`
234
+
-[ ]`scribe.gen.html`
235
+
-[ ]`scribe.gen.live`
236
+
-[ ]`scribe.gen.template`
237
+
* Generates a template to be customized for the project.
238
+
+ The template includes the code generated by all Elixir Scribe generators, e.g. `scribe.gen.*`.
239
+
* The customized template can also be uploaded to the marketplace as freebie or one to be sold under a paid license.
240
+
-[ ]`scribe.gen.home`
223
241
* Removes current default Home page.
224
242
* Adds new Home page with links to each Domain and Resource.
225
243
* Optimizes default HTMl layout and components for a more clean and usable UI:
226
244
+ Table headers in Bold
227
245
+ Highlight links in blue, not in bold (black).
228
-
-[ ]Mix task: `scribe.gen.ci`
246
+
-[ ]`scribe.gen.ci`
229
247
* Generates a CI file for Github or Gitlab with at least the following:
230
248
+`mix format --dry-run --check-formatted`
231
249
+`mix deps.unlock --check-unused`
@@ -235,9 +253,9 @@ The roadmap is extensive and due to the continuous high efforts and commitments
235
253
+`mix credo`
236
254
+`mix doctor`
237
255
+`mix test --cover`
238
-
-[ ]Mix task: `scribe.gen.project`
256
+
-[ ]`scribe.gen.project`
239
257
* Generates all Domains, Resources and Actions from an Elixir Scribe spec module `%ElixirScribe.ProjectSpecs{}`.
240
-
-[ ]Mix task: `scribe.gen.api`
258
+
-[ ]`scribe.gen.api`
241
259
* Adds a dynamic API key (only valid for one request).
242
260
* Adds support for fingerprinting the mobile and web app.
243
261
* Adds support to collect metrics.
@@ -247,22 +265,29 @@ The roadmap is extensive and due to the continuous high efforts and commitments
247
265
+ To control feature flags.
248
266
+ To enable a kill-switch to force upgrade to a new version.
249
267
+ To dynamically conduct experiments with user experience, A/B testing.
250
-
-[ ]Mix task: `scribe.gen.auth`
268
+
-[ ]`scribe.gen.auth`
251
269
* Adds enhanced User Authentication:
252
270
+ fingerprinting of the client enabled by default
253
271
+ enabled by default to all pages, except Home page.
254
-
-[ ]Mix task: `scribe.gen.oauth`
272
+
-[ ]`scribe.gen.oauth`
255
273
* Adds enhanced OAuth for popular providers:
256
274
+ fingerprinting of the client enabled by default
257
275
+ enabled by default to all pages, except Home page.
258
-
-[ ]Mix task: `scribe.gen.native`
276
+
-[ ]`scribe.gen.native`
259
277
* Enables the project to be built for Desktop, Android and Apple.
0 commit comments