Skip to content

Move docs folder from the SpineEventEngine.github.io repository #19

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 572 commits into from
Jan 26, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
572 commits
Select commit Hold shift + click to select a range
2fb809c
Improve project structure intro
alexander-yevsyukov Jun 4, 2020
a72e126
Consolidate other project config. text
alexander-yevsyukov Jun 4, 2020
2f0802a
More improvements for the project config text
alexander-yevsyukov Jun 4, 2020
6ed0708
Fix plural
alexander-yevsyukov Jun 4, 2020
7b59927
Its -> it
alexander-yevsyukov Jun 4, 2020
49628ac
Add links to source code and docs
alexander-yevsyukov Jun 4, 2020
0429532
Add missing comma
alexander-yevsyukov Jun 4, 2020
152526a
Improve descriptions of source code dirs
alexander-yevsyukov Jun 4, 2020
de0ab50
Designate note text as such
alexander-yevsyukov Jun 4, 2020
20317c2
Fix wrapping
alexander-yevsyukov Jun 4, 2020
5cac5be
Improve the language, fix grammar
alexander-yevsyukov Jun 4, 2020
98c5674
Fix the sentence flow
alexander-yevsyukov Jun 4, 2020
5b2ad04
Add note on the PM, fix missing comma
alexander-yevsyukov Jun 4, 2020
91c2a9d
Fix language
alexander-yevsyukov Jun 4, 2020
ff707d4
Improve wording
alexander-yevsyukov Jun 4, 2020
fbfe3ec
Add missing comma
alexander-yevsyukov Jun 4, 2020
8b1a527
Improve IDEA note text
alexander-yevsyukov Jun 4, 2020
eba6618
Fix spelling in tool macros
alexander-yevsyukov Jun 4, 2020
96fc6b1
Simplify names and links
alexander-yevsyukov Jun 4, 2020
7f0a038
Make client- and server- side defs more precise
alexander-yevsyukov Jun 4, 2020
a770110
Fix the language
alexander-yevsyukov Jun 4, 2020
436a38c
Update the Spine Architecture Diagram svg and source file
JuliaEvseeva Jun 5, 2020
d6dac96
Temporarily comment out excerpter instructions
alexander-yevsyukov Jun 5, 2020
3a7f190
Merge remote-tracking branch 'origin/update-diagram' into adopt-excer…
alexander-yevsyukov Jun 5, 2020
efa40ac
Improve note layout
alexander-yevsyukov Jun 5, 2020
cde82fe
Remove processing instructions
alexander-yevsyukov Jun 5, 2020
0d536bf
Add top margin for arch. diagram
alexander-yevsyukov Jun 5, 2020
b7153c8
Fix capitalization
alexander-yevsyukov Jun 5, 2020
a447169
Draft structure for the next text chunk
alexander-yevsyukov Jun 5, 2020
3141d43
Improve the text on what Boostrap does
alexander-yevsyukov Jun 5, 2020
2b4bf5a
Move API Reference links inside the `index` page
JuliaEvseeva Jun 5, 2020
db0cf7f
Update links to the `API Reference` page
JuliaEvseeva Jun 5, 2020
d434082
Merge remote-tracking branch 'remotes/origin/master' into push-quick-…
alexander-yevsyukov Jun 5, 2020
c3b4e6d
Add text on context data and commands.proto
alexander-yevsyukov Jun 5, 2020
76a6cf3
Fix and improve language
alexander-yevsyukov Jun 6, 2020
f61186e
Have a sub-dir for Quick Start
alexander-yevsyukov Jun 8, 2020
0e9ddab
Improve data type language
alexander-yevsyukov Jun 9, 2020
0f1f828
Add text for PM data
alexander-yevsyukov Jun 9, 2020
f76ee51
Fix and improve language
alexander-yevsyukov Jun 9, 2020
af70e38
Fix intro text
alexander-yevsyukov Jun 9, 2020
707ebfd
Improve code snippet intro
alexander-yevsyukov Jun 10, 2020
c81d90a
Move the post to the `Guides` section
JuliaEvseeva Jun 11, 2020
002f993
Fix internal links
JuliaEvseeva Jun 11, 2020
6649cb8
Fix the link to the Guides
JuliaEvseeva Jun 17, 2020
0dad81f
Remove the block with the `Defining Aggregate Guide` link
JuliaEvseeva Jun 17, 2020
e47e98d
Fix the link
JuliaEvseeva Jun 17, 2020
5a3ddf7
Add resources overview page with cards
JuliaEvseeva Jun 24, 2020
13458eb
Create `People` page in the resources section
JuliaEvseeva Jun 24, 2020
9e77690
Create the `Books` page layout
JuliaEvseeva Jun 24, 2020
43e3121
Add new books to the list and fix layout
JuliaEvseeva Jun 24, 2020
ac43ed3
Add Books page to the navigation
JuliaEvseeva Jun 24, 2020
a9d283b
Add Blogs page
JuliaEvseeva Jun 24, 2020
4aefaa1
Add Sites page
JuliaEvseeva Jun 24, 2020
388a9d0
Add Libraries and Frameworks page
JuliaEvseeva Jun 24, 2020
f8f4f80
Add proper title name
JuliaEvseeva Jun 24, 2020
b9000cf
Remove extra dots
yuri-sergiichuk Jun 26, 2020
3b67094
Add missing article
yuri-sergiichuk Jun 26, 2020
a2f7f36
Add missing whitespace
yuri-sergiichuk Jun 26, 2020
01ae5df
Add no `id` suffix convention
yuri-sergiichuk Jun 26, 2020
c3c95b5
Reformat text
yuri-sergiichuk Jun 26, 2020
507d594
Add examples
yuri-sergiichuk Jun 26, 2020
2689706
Use the new IDs concept in examples
yuri-sergiichuk Jun 26, 2020
e1491f4
Use new ID notation in protos
yuri-sergiichuk Jun 26, 2020
eca9544
Use singular of `protos`
yuri-sergiichuk Jun 26, 2020
68983df
Add projection example
yuri-sergiichuk Jun 26, 2020
8188aa7
Add non-braking spaces
yuri-sergiichuk Jun 26, 2020
015a975
Use condensed examples
yuri-sergiichuk Jun 26, 2020
8b1b8f6
Group code examples into columns
yuri-sergiichuk Jun 28, 2020
74ee459
fix link URL
JuliaEvseeva Jul 1, 2020
c8b31d5
Fix links
JuliaEvseeva Jul 2, 2020
3bc2546
Remove the sentences with the Model Definition link
JuliaEvseeva Jul 2, 2020
d3391f9
Cleanup code
JuliaEvseeva Jul 2, 2020
d12f00e
Merge remote-tracking branch 'origin/master' into add-reaources-page
JuliaEvseeva Jul 2, 2020
d0ce56c
Change people order and add the link to many more
JuliaEvseeva Jul 2, 2020
967ab9e
Add a new page to the navigation and update the Overview page
JuliaEvseeva Jul 2, 2020
d980179
Update `Sites` page
JuliaEvseeva Jul 2, 2020
d5b64f3
Add the content changes to the Resource pages
JuliaEvseeva Jul 2, 2020
7f0b737
Add a new `Community` page
JuliaEvseeva Jul 2, 2020
ccb27d8
Add a new `Community` page
JuliaEvseeva Jul 2, 2020
70bb175
Merge remote-tracking branch 'origin/add-reaources-page' into add-rea…
JuliaEvseeva Jul 2, 2020
dcb60b1
Fix content
JuliaEvseeva Jul 2, 2020
c1bf2ea
Add image alt attribute
JuliaEvseeva Jul 2, 2020
9d4d798
Update framework links
JuliaEvseeva Jul 2, 2020
304a660
Update punctuation
JuliaEvseeva Jul 2, 2020
a383cdd
Update punctuation
JuliaEvseeva Jul 2, 2020
2c15528
Remove dots from the subtitles and update book description
JuliaEvseeva Jul 2, 2020
5c1c415
Update description
JuliaEvseeva Jul 2, 2020
605cb7b
Add book subtitle
JuliaEvseeva Jul 2, 2020
ae2d088
Make all subtitles as lead and update subtitle for the Overview and C…
JuliaEvseeva Jul 2, 2020
95d0389
Update books subtitle
JuliaEvseeva Jul 2, 2020
2588a30
Update Overview page subtitle
JuliaEvseeva Jul 2, 2020
5981f18
Add resources link to the mobile navigation
JuliaEvseeva Jul 3, 2020
1b2f8b5
Rename `Resources` to `DDD Resources`
JuliaEvseeva Jul 7, 2020
5366b16
Fix the title
yuri-sergiichuk Jul 16, 2020
809dd2e
Add guide stub
yuri-sergiichuk Jul 16, 2020
22418fe
Add EventStorming part
yuri-sergiichuk Jul 16, 2020
dc2d46b
Cleanup
yuri-sergiichuk Jul 16, 2020
9246e29
Add notes about multiple EventStorming sessions
yuri-sergiichuk Jul 17, 2020
3b6d7a7
Add notes about limiting the scope of the development phase
yuri-sergiichuk Jul 17, 2020
ce5c7cd
Add note about having some EventStorming photos.
yuri-sergiichuk Jul 17, 2020
fa11351
Wrap the proverb in quotes
yuri-sergiichuk Jul 17, 2020
08f29eb
Improve wording. Add link titles.
yuri-sergiichuk Jul 17, 2020
8e28d24
Start writing the "Shaping the language" section
yuri-sergiichuk Jul 17, 2020
aee976b
Add more to the "Shaping the language" section and create a stub "Imp…
yuri-sergiichuk Jul 17, 2020
e838e43
Add Scenario fulfillment doc
yuri-sergiichuk Jul 20, 2020
a706af1
Add a note about continuing the dev cycle
yuri-sergiichuk Jul 20, 2020
be4be48
Add TL;DR section
yuri-sergiichuk Jul 20, 2020
1bf3483
Improve wording
yuri-sergiichuk Jul 20, 2020
56ccb45
Try emoji for "elephant"
yuri-sergiichuk Jul 20, 2020
58b9b61
Shorten the lead
yuri-sergiichuk Jul 20, 2020
371c974
Use hand-crafted list items
yuri-sergiichuk Jul 20, 2020
247bcbe
Remove emoji. We do not render them.
yuri-sergiichuk Jul 20, 2020
880ee73
Wrap the development flow into a section
yuri-sergiichuk Jul 20, 2020
1d1068e
Improve wording
yuri-sergiichuk Jul 20, 2020
9b36b1c
Add EventStorming artifacts examples
yuri-sergiichuk Jul 20, 2020
e75c77c
Cleanup grammar glitches
yuri-sergiichuk Jul 20, 2020
a7e7019
Add an example project structure
yuri-sergiichuk Jul 20, 2020
241e8df
Add link to the project structure example
yuri-sergiichuk Jul 20, 2020
c6de1b9
Add link to the BBC guides issue.
yuri-sergiichuk Jul 20, 2020
8bb245a
Embed code of the build and commands
alexander-yevsyukov Jul 22, 2020
53933c4
Embed server-side code samples
alexander-yevsyukov Jul 22, 2020
72794aa
Drop in the new text from the Google Doc.
yuri-sergiichuk Jul 24, 2020
1bbebe0
Improve wording
yuri-sergiichuk Jul 24, 2020
8b44ea9
Externalize links
yuri-sergiichuk Jul 24, 2020
d21a041
Reorder links
yuri-sergiichuk Jul 24, 2020
d45f8c6
Add forward-link to `Picking up a scenario` section
yuri-sergiichuk Jul 24, 2020
77646a9
Add base URL to links.
yuri-sergiichuk Jul 24, 2020
34b8600
Merge branch 'master' into add-project-start-guide
yuri-sergiichuk Jul 24, 2020
3583926
Apply suggestions from the code review
yuri-sergiichuk Jul 27, 2020
5a4ccd4
Cleanup formatting. Add event examples.
yuri-sergiichuk Jul 27, 2020
dc78a37
Rename the image to conform to the EventStorming term
yuri-sergiichuk Jul 27, 2020
bcbdeff
Use full-size image for the EventStorming board
yuri-sergiichuk Jul 27, 2020
a14ceff
Add missing dot
yuri-sergiichuk Jul 27, 2020
a2b133a
Improve wording.
yuri-sergiichuk Jul 27, 2020
50e183f
Fix the BC link
yuri-sergiichuk Jul 27, 2020
5d4bb9b
Add text on handling the command
alexander-yevsyukov Jul 27, 2020
80abd31
Format the `EventBus` note
alexander-yevsyukov Jul 27, 2020
a2b90ab
Fix the language
alexander-yevsyukov Jul 27, 2020
4af6bee
Change the verb for storing console data
alexander-yevsyukov Jul 27, 2020
2968487
Merge pull request #338 from SpineEventEngine/add-project-start-guide
yuri-sergiichuk Jul 27, 2020
6ee2a90
Fix link to Vaughn Vernon within the `people` page
yuri-sergiichuk Jul 27, 2020
4be0f98
Fix entity state naming link
yuri-sergiichuk Jul 27, 2020
9d7e324
Use external link to Vaugn Vernon's website to please the links checker
yuri-sergiichuk Jul 27, 2020
775d565
Add airport example code parts to the article
andreySadomovskiy Jul 30, 2020
b3a6574
Remove previous code examples parts
andreySadomovskiy Jul 30, 2020
2f20715
Add note on Validation library
alexander-yevsyukov Jul 30, 2020
1763e45
Add test for server-side application
alexander-yevsyukov Jul 30, 2020
d5ba614
Update code embedding
alexander-yevsyukov Jul 31, 2020
4fadadc
Embed code examples in the "integration with a 3d party" article
andreySadomovskiy Jul 31, 2020
acb61ee
Add testing intro text
alexander-yevsyukov Jul 31, 2020
1f49a94
Remove spaces in code fenses
alexander-yevsyukov Jul 31, 2020
a67856e
Use `start/end` patterns instead of `fragments`
andreySadomovskiy Jul 31, 2020
b28ef5f
Improve wording, embed code
alexander-yevsyukov Jul 31, 2020
269aad8
Describe event testing
alexander-yevsyukov Jul 31, 2020
35bb1f4
Update code embeddings
alexander-yevsyukov Jul 31, 2020
2958398
Improve text flow
alexander-yevsyukov Jul 31, 2020
17de0b2
Rename all "3d party" to "third-party".
armiol Jul 31, 2020
b88490a
Fix a typo.
armiol Jul 31, 2020
8189dda
Improve the language
alexander-yevsyukov Jul 31, 2020
afa23bc
Improve the language
alexander-yevsyukov Jul 31, 2020
a80b8c2
Merge pull request #350 from SpineEventEngine/hello-hello
alexander-yevsyukov Jul 31, 2020
6d0c4e2
Merge pull request #351 from SpineEventEngine/get-rid-of-flat-parties
armiol Jul 31, 2020
f4aab7d
Improve the language
alexander-yevsyukov Jul 31, 2020
22d70e4
Fix the grammar
alexander-yevsyukov Jul 31, 2020
55327da
Improve text wrapping
alexander-yevsyukov Jul 31, 2020
cc1910f
Improve text flow
alexander-yevsyukov Jul 31, 2020
abeeaf3
Open the client-side code section
alexander-yevsyukov Jul 31, 2020
ad48136
Fix capitalization for the word “Context”
alexander-yevsyukov Jul 31, 2020
c9cb969
Merge pull request #349 from SpineEventEngine/add-airport-project-exa…
andreySadomovskiy Aug 3, 2020
fb8fc28
Merge remote-tracking branch 'remotes/origin/master' into hello-server
alexander-yevsyukov Aug 4, 2020
f3bbddd
Add text on the client code
alexander-yevsyukov Aug 4, 2020
88eed1a
Add text on orchestrating the example
alexander-yevsyukov Aug 5, 2020
10f4d10
Add summary
alexander-yevsyukov Aug 5, 2020
11179c4
Improve language
alexander-yevsyukov Aug 5, 2020
be822f6
Fix and improve language according to PR comments
alexander-yevsyukov Aug 6, 2020
ae52b72
Split description of posting the command on three items
alexander-yevsyukov Aug 6, 2020
29f759a
Fix code embedding
alexander-yevsyukov Aug 6, 2020
06705a8
Simplify text on testing
alexander-yevsyukov Aug 6, 2020
a10a63e
Allow empty lines around embedded code
alexander-yevsyukov Aug 6, 2020
f5e6177
Allow empty line after headers
alexander-yevsyukov Aug 6, 2020
281178f
Improve the language
alexander-yevsyukov Aug 6, 2020
8e2c029
Fix the language
alexander-yevsyukov Aug 6, 2020
f7f96c6
Avoid duplication in the closing paragraph
alexander-yevsyukov Aug 6, 2020
317956d
Simplify the text on entity states
alexander-yevsyukov Aug 6, 2020
d765a7e
Fix Oxford comma
alexander-yevsyukov Aug 6, 2020
2c7eb17
Fix Oxford comma
alexander-yevsyukov Aug 6, 2020
e8adb59
Fix language
alexander-yevsyukov Aug 6, 2020
411b48e
Fix the language
alexander-yevsyukov Aug 6, 2020
470d92f
Fix missing empty line before the code block
alexander-yevsyukov Aug 6, 2020
45db609
Fix the language
alexander-yevsyukov Aug 6, 2020
61c15fb
Add Airport example, and article links
alexander-yevsyukov Aug 7, 2020
f50bf9d
Fix issue with leakage of `embed-code` command to content
alexander-yevsyukov Aug 7, 2020
c2c8a1f
Comment out `embed-code` instructions
alexander-yevsyukov Aug 7, 2020
7f2d56d
Comment out `embed-code` instructions
alexander-yevsyukov Aug 7, 2020
306ff50
Fix typo
JuliaEvseeva Aug 11, 2020
f9f47cb
Fix the missing operator
JuliaEvseeva Aug 11, 2020
5d686ff
Remove `<?xml?>` tag to fix the SVG that was broken after a new `Kram…
JuliaEvseeva Aug 11, 2020
4f24287
Merge pull request #362 from SpineEventEngine/fix-svg
JuliaEvseeva Aug 11, 2020
730590a
Migrate to using `<embed-code ... />` tag from relying onto the `<?em…
armiol Aug 11, 2020
7093234
Replace a single self-closing `<embed-code .../>` tag with an open-cl…
armiol Aug 12, 2020
e63eb82
Name the `test` source folder properly.
armiol Aug 12, 2020
c4c0433
Create a new component for the document next/prev navigation buttons
JuliaEvseeva Aug 12, 2020
0515307
Add the possibility to add custom link text or URL
JuliaEvseeva Aug 12, 2020
726241c
Remove test next link
JuliaEvseeva Aug 12, 2020
e72ae63
Make it possible to change only the button name
JuliaEvseeva Aug 13, 2020
bcc9883
Rename the `link` to `btn` to be consistent with the documentation
JuliaEvseeva Aug 13, 2020
14b66fb
Fix grammar of using “another”
alexander-yevsyukov Aug 14, 2020
58425b4
Simplify the language on domain discovery
alexander-yevsyukov Aug 14, 2020
fb3dd71
Remove redundant comments
alexander-yevsyukov Aug 14, 2020
ab70081
Outline the Gradle user guide
dmdashenkov Aug 17, 2020
2e4aa96
Merge remote-tracking branch 'remotes/origin/master' into home-page-code
alexander-yevsyukov Aug 17, 2020
2387ed9
Explain Model Compiler and ProtoJs plugins
dmdashenkov Aug 18, 2020
65c7965
Clean up reference section
dmdashenkov Aug 18, 2020
6ea2329
Fix a syntax error
dmdashenkov Aug 19, 2020
0b61486
Embed "live" version of plugin declaration
dmdashenkov Aug 19, 2020
8784c48
Rephrase some doc items and add API reference links
dmdashenkov Aug 25, 2020
85a6fba
Replace hardcoded links to API doc with variables
dmdashenkov Aug 25, 2020
f609e84
Fix links
dmdashenkov Aug 25, 2020
e462469
Reword doc
dmdashenkov Aug 25, 2020
875afc0
Distribute "Further customization" notes among the associated sections
dmdashenkov Aug 25, 2020
55a13ec
Rephrase some parts of the Gradle guide and remove multiple Bounded C…
dmdashenkov Aug 25, 2020
f5f1a6e
Link to API reference instead of listing Model Compiler tasks
dmdashenkov Aug 25, 2020
a581291
Add `Working with many Bounded Contexts` paragraph
dmdashenkov Aug 25, 2020
5495fb6
Improve formatting
dmdashenkov Aug 25, 2020
33f64c9
Fix a typo
dmdashenkov Aug 25, 2020
b50d959
Remove extra whitespace
dmdashenkov Aug 25, 2020
812c392
Add a preface
dmdashenkov Aug 26, 2020
21c0fc2
Add an explanation on code generation in `model` subprojects
dmdashenkov Aug 26, 2020
f88cc60
Reword doc
dmdashenkov Aug 26, 2020
7795636
Merge pull request #370 from SpineEventEngine/gradle-guide
dmdashenkov Aug 26, 2020
ecc25ce
Update embeddings
dmdashenkov Aug 31, 2020
4c9bf01
Update version number
alexander-yevsyukov Sep 3, 2020
4490142
Remove mentioning IDEA configuration
alexander-yevsyukov Sep 3, 2020
29e9bf4
Update Web server section
dmdashenkov Sep 3, 2020
47beba3
Update `hello`
dmdashenkov Sep 3, 2020
145b749
Add a note on `withDatastore()`
dmdashenkov Sep 3, 2020
706043d
Remove mentioning IDEA configuration
alexander-yevsyukov Sep 3, 2020
239bdcc
Merge pull request #380 from SpineEventEngine/update-gradle-guide
dmdashenkov Sep 3, 2020
2b05d0b
Add link to "Learning DDD" to the Sites section of DDD Resources.
oleksandra-kovalenko Sep 4, 2020
f7ed7d0
Update examples and guides to Spine `1.6.0`
dmitrykuzmin Sep 14, 2020
cb24624
Add the new `repeated` and `map` fields section.
yuri-sergiichuk Dec 1, 2020
f291a36
Use `repeated` as singular as per the convention.
yuri-sergiichuk Dec 1, 2020
447ebbe
Update the guide to Spine 1.7.0.
yuri-sergiichuk Dec 18, 2020
710dce3
Mention the latest Spine v1.7.0 version.
yuri-sergiichuk Dec 18, 2020
f908bfe
Update code samples.
yuri-sergiichuk Dec 18, 2020
20fe486
Remove the extra copy-pasted command-related line.
yuri-sergiichuk Dec 21, 2020
614ce46
Fix typo
JuliaEvseeva Jan 11, 2021
cd58ff9
Fix typo in quick start doc
tripolkaandrey Sep 5, 2021
c0d5710
Merge with 'master'
JuliaEvseeva Jan 26, 2022
2653933
Move files under the `docs` folder
JuliaEvseeva Jan 26, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions docs/client-libs/dart.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Dart Client Library
headline: Documentation
bodyclass: docs
layout: docs
---
# Dart Client Library
* [Reference documentation]({{site.dart_api_doc}}/client/index.html)
* [Source code]({{site.dart_repo}}/tree/master/client)

10 changes: 10 additions & 0 deletions docs/client-libs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Java Client Library
headline: Documentation
bodyclass: docs
layout: docs
---
# Java Client Library

* [Reference documentation]({{site.core_api_doc}}/client/index.html)
* [Source code]({{site.core_java_repo}}/tree/master/client)
11 changes: 11 additions & 0 deletions docs/client-libs/js.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: JavaScript Client Library
headline: Documentation
bodyclass: docs
layout: docs
---
# JavaScript Client Library

* [Reference documentation]({{site.js_api_doc}}/index.html)
* [Source code]({{site.web_repo}}/tree/master/client-js)

32 changes: 32 additions & 0 deletions docs/examples/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
title: Examples
headline: 'Spine Examples'
bodyclass: 'docs'
layout: docs
---
<p class="lead">Examples are available through the <a target="_blank" href="https://github.com/spine-examples">Spine Examples</a> GitHub organization.</p>

<p>Please see the selected list of the examples with the descriptions below.</p>

## Java
<ul>
<li><a target="_blank" href="https://github.com/spine-examples/hello">Hello World</a>
— a minimal client-server solution described in the <a href="{{site.baseurl}}/docs/quick-start/index.html">“Quick Start”</a> guide.</li>
<li><a target="_blank" href="https://github.com/spine-examples/blog">Blog</a>
— shows server-side functionality of a simple blog.</li>
<li><a target="_blank" href="https://github.com/spine-examples/kanban">Kanban</a>
— shows orchestrating Aggregates using Process Managers.</li>
<li><a target="_blank" href="https://github.com/spine-examples/airport">Airport</a>
— integrating a third-party systems using a Bounded Context.
This example accompanies the <a href="{{site.baseurl}}/docs/guides/integration.html">“Integration with a Third Party”</a> guide.</li>
<li><a target="_blank" href="https://github.com/spine-examples/todo-list">ToDo List</a>
— a simple task management system with multiple client applications. If&nbsp;you&nbsp;want&nbsp;to see
a bigger picture of a Spine-based solution, have a look at this example.</li>
</ul>

## JavaScript

<ul>
<li><a target="_blank" href="https://github.com/spine-examples/todo-list/tree/master/client/html-js">Simple HTML/JS ToDo List client</a> — a client app with very basic features.</li>
<li><a target="_blank" href="https://github.com/spine-examples/todo-list/tree/master/client/angular">ToDo List client on Angular</a> — a more featured client built with Angular 7.</li>
</ul>
175 changes: 175 additions & 0 deletions docs/guides/gradle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
---
title: Gradle configuration
headline: Documentation
bodyclass: docs
layout: docs
---

This guide will lead you through setting up a simple Spine-based project with a Java backend and
a JavaScript frontend. The project defines a domain model using Protobuf, which is then converted
into Java for server usage and JavaScript for client usage.

# Configuring a project with Gradle

Spine provides build-time tools for code generation and analysis. These tools are implemented
as [Gradle plugins](https://docs.gradle.org/current/userguide/plugins.html) — an extendable, uniform
way to tap into a project build process.

The minimal Gradle configuration you will need to start a new project is:

<embed-code file="examples/hello/build.gradle" start="plugins" end="}"></embed-code>
```groovy
plugins {
id("io.spine.tools.gradle.bootstrap").version("1.7.0")
}
```

Place the config into your root `build.gradle` file and execute a Gradle build. This will apply
the Spine Bootstrap plugin to your project.

You can also find this declaration on the [Gradle Plugin Portal](https://plugins.gradle.org/plugin/io.spine.tools.gradle.bootstrap),
or on our [Getting Started page]({{site.baseurl}}/docs/quick-start).

## Spine Bootstrap plugin

Spine Bootstrap plugin (Bootstrap for short) serves to automate the configuration of the modules
in your Spine-based app.

We recommend having separate Gradle subprojects for domain model definition, server implementation,
and client code. Bootstrap is applied a bit differently in each of these cases.

### Model definitions

Let's assume one of the subprojects contains Protobuf definitions for the domain model. This
subproject is typically called `model`. In `build.gradle` for that subproject, declare:
```groovy
spine.assembleModel()
```
This way, the subproject will receive all the required Spine dependencies but no code will be
generated from Protobuf. Instead, we generate code for specific languages in subprojects where that
code is needed. By placing model definitions into a separate subproject, we allow them to be shared
between other, language-specific subprojects.

### Java server implementation

A separate Gradle subproject is dedicated to the server-side business logic of your Bounded Context.
Usually, this subproject is named `server` or after the Bounded Context it implements, e.g. `users`.
In `build.gradle` for that subproject declare:
```groovy
spine.enableJava().server()

dependencies {
protobuf(project(':model'))
}
```
This will add dependencies to the `spine-server` artifact and set up code generation for
the domain model types. Also, use `spine.enableJava().withDatastore()` to add the Google Cloud
Datastore-based storage implementation to the given subproject.

It is perfectly normal to have more Protobuf types in these modules, as long as those types are
internal to your Java implementation and are not a part of the publicly-visible domain model.

For any specific subproject, you can configure to run or skip certain code generation routines.
For example:
```groovy
spine.enableJava {
server() // Enable Server API.
codegen {
protobuf = true // Generate default Protobuf Java classes.
spine = false // Avoid enhancing Protobuf Java classes with Spine validation, interfaces, etc.
grpc = true // Generate gRPC stubs and implementation bases from Protobuf service definitions.
}
}
```

<p class="note">
Note the use of the `protobuf` configuration. This tells our tools that the Protobuf definitions
in the subproject `model` must be converted into Java code in the current subproject.

Alternatively, if, for instance, the upstream project already contains code generated from Protobuf,
and no additional codegen is required, the `api`/`implementation` configurations should be used. See
[this Gradle doc](https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html)
for more info.
</p>

### Java web server

If your project contains a JavaScript frontend, you may declare a `web-server` subproject, which
processes the HTTP requests from JS. In `web-server/build.gradle`:
```groovy
spine.enableJava().webServer()

dependencies {
implementation(project(':server'))
}
```
Using `webServer()` has the same effect as just declaring the subproject to be a part of `server()`
and also adds the `io.spine:spine-web` dependency to the subproject. This dependency provides
components for handling requests from a JavaScript frontend See also `firebaseWebServer()` for using
a Firebase database to communicate between the server and the client.

### JavaScript client

Finally, a JavaScript client is also one or more Gradle subprojects. In `build.gradle` for those
subprojects, declare:
```groovy
spine.enableJavaScript()

dependencies {
protobuf(project(':model'))
}
```
This configuration sets up JavaScript code generation from the `model` definitions. Handle NPM
dependencies separately (e.g. adding the dependency for [`spine-web`](https://www.npmjs.com/package/spine-web)).

### Working with many Bounded Contexts

In a system with more than one Bounded Context, we recommend a similar project structure. Instead of
having a single `model` subproject, you should form a subproject per Bounded Context, for example,
`users-model`, `trains-model`, `billing-model`, etc. If one of the Bounded Contexts shares some
domain language with another, add a dependency between them. This way, the downstream context may
use Protobuf definitions of the upstream context.
```groovy
dependencies {
implemetation(project(':model-users'))
}
```

For domain logic implementation, also use a single subproject per Bounded Context. The convention
for calling those projects by the context names: `users` , `trains`, `billing`, etc. It is a good
idea to have a server implementation subproject depend only on one model subproject to preserve
language and responsibility boundaries.

If your server should be deployed as a whole, use a single `web-server` for all the contexts. If you
would like to deploy different contexts separately, declare a specific `web-server` subprojects
for each of those contexts. See the [API reference]({{site.core_api_doc}}/server/io/spine/server/ServerEnvironment.html#use-io.spine.server.transport.TransportFactory-io.spine.base.EnvironmentType-)
for the instructions on integrating Bounded Contexts. Also, see [this guide]({{site.baseurl}}/docs/guides/integration.html)
on the principles of integrating separate Bounded Contexts and third-party systems in Spine.

## Verbose configuration

If the Bootstrap configuration is not customizable enough for you, there are other Gradle plugins
which may provide fine-grained API.

Those plugins are Spine Model Compiler for Java subprojects and Spine ProtoJs plugin for JavaScript
submodules. Under the hood, Bootstrap uses those plugins to do the work. This means that Bootstrap
automatically applies the correct low-level plugin for you.

### Model Compiler

Spine Model Compiler is a Gradle plugin which executes all the code generation routines via several
Gradle tasks as well as the `modelCompiler { }` extension, which allows you to configure those
tasks.

See the API reference for the list of the [declared tasks]({{site.base_api_doc}}/plugin-base/io/spine/tools/gradle/ModelCompilerTaskName.html)
and the [codegen configuration options]({{site.base_api_doc}}/model-compiler/io/spine/tools/gradle/compiler/Extension.html)

### ProtoJS Plugin

ProtoJs Gradle plugin manages and enhances JavaScript code generation from Protobuf definitions.
The plugin adds the `generateJsonParsers` task, which appends generated JS files with code parsing
Protobuf messages out of plain JS objects.

The plugin also provides the `protoJs { }` extension, which allows you to configure JS code
generation. See the [API reference]({{site.base_api_doc}}/proto-js-plugin/io/spine/js/gradle/Extension.html)
for more info.
6 changes: 6 additions & 0 deletions docs/guides/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: Guides
headline: Documentation
bodyclass: docs
layout: docs
---
Loading