Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
ba15ff9
Initial import
segfaultxavi Apr 7, 2026
0760371
[mkdocs] feat: allow disabling java ref pages
segfaultxavi Apr 7, 2026
f50faef
[mkdocs] fix: patch mkdoxy plugin
segfaultxavi Apr 7, 2026
ed7da4a
[mkdocs] add: selected shield icons
segfaultxavi Apr 9, 2026
1585d40
[mkdocs] docs: add accounts and cryptography concepts (#838)
zero4862 Apr 28, 2026
df3d145
[mkdocs] add: mailmap file
segfaultxavi Apr 28, 2026
07b505e
[mkdocs] docs: add transactions concept (#839)
zero4862 Apr 30, 2026
825c839
[mkdocs] docs: add transfer transctions concept (#843)
zero4862 Apr 30, 2026
651d3a7
[mkdocs] fix: update Material theme to support Python 3.14
segfaultxavi May 8, 2026
8a83f46
[mkdocs] docs: add namespace concept (#844)
zero4862 May 8, 2026
7f0d341
[mkdocs] docs: add blocks concept (#848)
zero4862 May 8, 2026
cca03af
[mkdocs] docs: add mosaics concept (#846)
zero4862 May 12, 2026
9417980
[mkdocs] docs: add consensus and harvesting concepts (#855)
zero4862 May 19, 2026
075f9ac
[mkdocs] docs: add cats concept (#865)
zero4862 May 21, 2026
436319e
[jenkins] Include sdk/ in Symbol submodule sparse checkout
segfaultxavi May 21, 2026
561b187
[docs] add: language selector page
segfaultxavi May 22, 2026
c331759
[mkdocs] fix: make sure deploy script builds FULL docs
segfaultxavi May 22, 2026
ff53008
[mkdocs] fix: update .mailmap
segfaultxavi May 22, 2026
e1a446d
[mkdocs] docs: add nodes concept (#864)
zero4862 May 22, 2026
c2fcd45
[mkdocs] docs: add serialization reference
zero4862 May 26, 2026
a0f3cb3
[mkdocs] docs: add Getting Started section (#868)
zero4862 May 27, 2026
acd58d5
[mkdocs] docs: create accounts tutorials (#870)
zero4862 May 28, 2026
631b700
[mkdocs] docs: add faucet tutorial (#871)
zero4862 May 29, 2026
10a8c7a
[mkdocs] docs: add query balance tutorial (#882)
zero4862 Jun 1, 2026
089bb2c
[mkdocs] docs: add transfer xem tutorial (#883)
zero4862 Jun 9, 2026
126b876
[mkdocs] fix: proper location of Transaction tutorials in TOC
segfaultxavi Jun 9, 2026
5b70e3d
[mkdocs] fix: CI setup_build script
segfaultxavi Jun 11, 2026
e3a8f90
[mkdocs] docs: add monitoring status tutorial (#890)
zero4862 Jun 15, 2026
33f5438
[mkdocs] fix: broken links
segfaultxavi Jun 15, 2026
798adff
[mkdocs] docs: add get mosaic information tutorial (#891)
zero4862 Jun 15, 2026
339ae11
[mkdocs] docs: add get namespace information tutorial (#893)
zero4862 Jun 16, 2026
4dd3dfe
[mkdocs] docs: add query chain height (#894)
zero4862 Jun 16, 2026
f10d5c6
[mkdocs] fix: enforce style guidelines
segfaultxavi Jun 17, 2026
df0e51c
[mkdocs] docs: add query supply tutorial (#897)
zero4862 Jun 17, 2026
4f2b1ed
[mkdocs] fix: clearer term for "burn"
segfaultxavi Jun 17, 2026
04b664a
[mkdocs] docs: add transfer mosaic tutorial (#889)
zero4862 Jun 17, 2026
67f1d9a
[mkdocs] fix: move tutorial complexity tag (#899)
segfaultxavi Jun 19, 2026
1a78266
[mkdocs] fix: always provide title in metadata
segfaultxavi Jun 19, 2026
1b91236
[mkdocs] fix: setup page tweaks
segfaultxavi Jun 19, 2026
e5cbfee
[mkdocs] docs: query block rewards tutorial (#898)
zero4862 Jun 25, 2026
34bba67
[mkdocs] feat: add a STOMP pygments lexer
segfaultxavi Jun 25, 2026
c835d52
[mkdocs] docs: add websockets reference (#909)
zero4862 Jun 29, 2026
d51d62e
[mkdocs] docs: add listen new blocks tutorial (#910)
zero4862 Jun 29, 2026
fd90875
[mkdocs] docs: improve anchor positioning in tutorials (#920)
zero4862 Jun 30, 2026
c1022c7
[mkdocs] docs: add typed descriptors tutorial (#919)
zero4862 Jul 1, 2026
4cc7be5
docs: address review comments (#918)
zero4862 Jul 1, 2026
e374965
[mkdocs] docs: add listen tx flow tutorial (#916)
zero4862 Jul 1, 2026
46e83ee
[mkdocs] docs: fix light mode (remove bg & links contrast) (#921)
zero4862 Jul 1, 2026
78c2e8f
[mkdocs] docs: style api reference (#922)
zero4862 Jul 2, 2026
825d1af
[mkdocs] fix: lint warning
segfaultxavi Jul 6, 2026
fb989c4
[mkdocs] fix: links to deprecated JS ref pages
segfaultxavi Jul 6, 2026
72e5cd5
[mkdocs] docs: add messages tutorial (#923)
zero4862 Jul 6, 2026
aba641e
[mkdocs] fix: lint errors
segfaultxavi Jul 7, 2026
6b62b3a
[mkdocs] feat: register and extend root namespace tutorials (#930)
zero4862 Jul 8, 2026
89e85f4
[mkdocs] fix: apply review comments (websockets) (#932)
zero4862 Jul 9, 2026
98cc07f
[mkdocs] feat: add register subnamespace guide (#933)
zero4862 Jul 9, 2026
3984892
[mkdocs] feat: create mosaic and change supply tutorials (#936)
zero4862 Jul 14, 2026
926251e
[mkdocs] feat: modify mosaic definition tutorial (#937)
zero4862 Jul 14, 2026
8ed7379
[mkdocs] fix: apply review comments (#938)
zero4862 Jul 16, 2026
a0f4cb5
[mkdocs] fix: apply mosaic review comments (#941)
zero4862 Jul 22, 2026
c4ad12d
[mkdocs] feat: add mosaic levy tutorial (#940)
zero4862 Jul 22, 2026
6d37f8b
[mkdocs] fix: put whitepaper in a prominent place
segfaultxavi Jul 17, 2026
6c0c32b
[mkdocs] fix: colors in zoomed-in image descriptions
segfaultxavi Jul 7, 2026
8539edb
[mkdocs] fix: glightbox captions with updated version
segfaultxavi Jul 9, 2026
1ff1dc9
[mkdocs] fix: 404 that works locally too
segfaultxavi Jun 26, 2026
6caf7aa
[mkdocs] fix: syntax highlight inline CATS snippets
segfaultxavi Jun 26, 2026
1616ca7
[mkdocs] fix: CATS textbook problems
segfaultxavi Jun 26, 2026
47eb488
[mkdocs] fix: complete CATS lexer for syntax highlight
segfaultxavi Jun 26, 2026
7836a90
[mkdocs] feat: node installation guide
segfaultxavi Jul 24, 2026
2d3354e
[mkdocs] feat: supernode enrollment guide
segfaultxavi Jul 27, 2026
7011d22
[mkdocs] feat: add config multisig tutorial (#950)
zero4862 Aug 3, 2026
1ff9c51
[mkdocs] feat: sign multisig tutorial (#951)
zero4862 Aug 3, 2026
f0cad74
[mkdocs] feat: add listen multisig txt tutorial (websockets) (#955)
zero4862 Aug 3, 2026
b46e6a0
[mkdocs] fix: compute circulating supply with integer math (#966)
zero4862 Aug 4, 2026
8d80c10
[mkdocs] fix: address multisig tutorials comments (#967)
zero4862 Aug 7, 2026
371631d
[mkdocs] fix: faucet confirmation time
segfaultxavi Aug 24, 2026
06c96b7
[mkdocs] fix: site URL
segfaultxavi Aug 24, 2026
e27dd27
[mkdocs] Translate textbook to Japanese. (#972)
daoka Aug 26, 2026
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
17 changes: 17 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

# Log file
*.log
# ...except tutorial sample output
!mkdocs/**/*.log

# BlueJ files
*.ctxt
Expand All @@ -26,3 +28,18 @@ hs_err_pid*
.vscode/
.idea/
*.iml

# MacOS
.DS_Store

# js
node_modules/
npm-*.log*
ts/

# python
.python-version
__pycache__/
*.egg-info/
build/
dist/
6 changes: 6 additions & 0 deletions .mailmap
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
segfaultxavi <xavi@symbolsyndicate.us> <xavierartigas@yahoo.es>
segfaultxavi <xavi@symbolsyndicate.us> Xavi Artigas <xavi@symbolsyndicate.us>
daoka <daoka@symbolsyndicate.us> <daoka@daokanomacbook-pro.local>
daoka <daoka@symbolsyndicate.us> <daoka@sybmolsyndicate.us>
daoka <daoka@symbolsyndicate.us> <daoka.sweep@gmail.com>
zero <zero4862@pm.me> <234838951+zero4862@users.noreply.github.com>
2 changes: 2 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
en
ja
23 changes: 23 additions & 0 deletions docs/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script>
var userLang = navigator.language || navigator.userLanguage;
var urls = {
'en': 'en',
'ja': 'ja',
};
var defaultUrl = 'en';

var url = urls[userLang] ?? defaultUrl;
window.location.href += url;
</script>
</head>
<body>
Redirecting to your language...
<br/>
Use these links if redirection does not work: <a href="en">English</a> <a href="ja">日本語</a>
</body>
</html>
1 change: 1 addition & 0 deletions init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ git -C _symbol config core.sparseCheckout true
echo 'jenkins/*' >> .git/modules/_symbol/info/sparse-checkout
echo 'linters/*' >> .git/modules/_symbol/info/sparse-checkout
echo 'tests/*' >> .git/modules/_symbol/info/sparse-checkout
echo 'sdk/*' >> .git/modules/_symbol/info/sparse-checkout
git submodule update --force --checkout _symbol
45 changes: 45 additions & 0 deletions mkdocs/.eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
extends:
- airbnb
- plugin:jsdoc/recommended-error
- ../linters/javascript/default.eslintrc
globals:
WebSocket: readonly
rules:
import/extensions:
- error
- ignorePackages
# Tutorials make heavy use of the console for output
no-console: off
max-len:
- error
- code: 88
ignoreTrailingComments: true
function-paren-newline:
- off
# This rule requires some pretty ugly constructs some times
prefer-destructuring:
- off
# Allow some simple for loops
no-restricted-syntax:
- error
- ForInStatement
# No cumbersome JSDocs in tutorial code
jsdoc/require-jsdoc:
- off
# Operators are the only logical place to break some long lines
operator-linebreak:
- error
- after
# Prefer old-style function declarations for clarity
func-style:
- error
- declaration
- allowArrowFunctions: true
# Polling loops do active waiting inside loops
no-await-in-loop:
- off
# The 'ethers' dependency is only used by one tutorial, we don't want to
# force it on every user. Specially because it's a heavy dependency.
import/no-extraneous-dependencies:
- off
5 changes: 5 additions & 0 deletions mkdocs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Doxygen temporary folder
.doxy

.venv
__pycache__
3 changes: 3 additions & 0 deletions mkdocs/.pycodestyle
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[pycodestyle]
max-line-length = 88
ignore = W191, E128, W503, W504
207 changes: 207 additions & 0 deletions mkdocs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
# Documentation Guidelines

These are some guidelines for writing *technical documentation*.

The goal of technical docs is to *teach*: there is something *we* know and the *reader* does not, and needs to learn.
Therefore, tech docs need to be clear, unambiguous, and concise.
Compare with *marketing material* which has different goals and uses different techniques.

A good document structure helps the reader find what they need quickly without having to read too much.
That said, if understanding a document requires previous knowledge, you must always state so in the introduction and provide links.

**Always put yourself in the shoes of the reader.**

## General

* **Keep the scope of the document in mind**.

A document should precisely fulfill its purpose, nothing more, nothing less.
It is a common pitfall to end up going into rabbit holes and spending half a document explaining irrelevant details.

* **Keep the audience in mind**.

Always think whether your intended audience will understand what you are writing.
Do they have all the necessary context? Education? Data?

* **Try to write short sentences.**

Avoid complex grammar, complex use of tenses, ambiguous pronouns and so on.
A good guideline when it comes to technical writing is to aim for 20-30 words per sentence.
Keeping sentences short should however never come at the expense of clarity, syntactic cues and important information.

* **Consistency is key**.

Be consistent in your use of formatting, words and expressions, as it makes the text easier to understand.

* **USE A SPELL CHECKER**.

Seriously, I’m ready to use physical violence to enforce this one.

* **Use a Markdown checker when writing Markdown**.

It will get rid of the most common (and annoying) markdown issues, like trailing white space, unnecessary blank lines around blocks, etc.
At some point this might even be enforced.

## Structure

* Document and section titles should follow the [Chicago Title Capitalization](https://en.wikipedia.org/wiki/Title_case#Chicago_Manual_of_Style) standard.
* Documents should start with a level one heading and should ideally be the same as the file name.
* Sections should be ordered hierarchically. Each document starts with a level one heading (`#`), which can contain one or more level two headings (`##`), which can contain one or more level threes (`###`) and so on.

You cannot skip levels, e.g., you cannot add a level 6 right after the title because it looks nice *in a particular app*.

## Markdown Formatting

* Lists should use the `*` character rather than the `-` character, always start capitalized and end with a full stop.
* Paragraphs that include multiple sentences should have the sentences on separate lines, so that updating one sentence results in a clear diff where only one line changes.
* For long documents, it is good to have a table of contents at the end of the introduction of the level one heading section.
* Always specify the language for code blocks so that neither the syntax highlighter nor the text editor must guess.
If no specific type makes sense, just use `text`.

## Additional Formatting and Macros

Some plugins enable additional formatting. On top of them, a few macros have been created to simplify repeated process
like tutorial steps and multi-language code snippets.

### Glossary Links

Define glossary terms using:

```markdown
category:glossary_term
: Definition.
```

If no category is used (and no colon after it), the default category is used.
The default category can also be used explicitly by using `_`.

Link to glossary terms using `<category:glossary_term>` and you'll get a popup with the definition when hovering
over the term in the text.

Link to glossary terms in the default category using `<glossary_term:>`.

You can provide an alternate text instead of the glossary term using a pipe `|`:
`<category:glossary_term|alternate_text>`.
The glossary plugin takes care of plurals, though, so they don't typically require the alternate text.

Every API class and method defines a term, so they can be linked to using, for example: `<java:NemFacade>`.
The available categories are `java`, `get`, `post`, `ser`, and `ws`.

### Tutorial Steps

These macros create a table with each row beginning with a big-numbered description and a floating screenshot on the right.
When clicked, the image is zoomed while the description is still shown.
Steps can be navigated while the image is zoomed.

```jinja
{% import 'tutorial.jinja2' as tutorial %}

{{ tutorial.list_begin() }}
{{ tutorial.step_begin("screenshots/create-profile-0.jpg") }}
Write here the description for this step.
{{ tutorial.step_end() }}
{{ tutorial.list_end() }}
```

[Usage example](./pages/en/userbook/wallet/create-profile.md).

Add as many `step_begin()` / `step_end()` pairs as required.

**Lists do not work correctly in the description**, because they are an HTML block element and do not flow around the floating picture.

### Multi-Language Code Snippets

These macros create a tab group with a code block and optional caption.

There are two versions:

The simplified one accepts a list of strings, describing the language and line range, and optionally a caption.

```jinja
{% import 'tutorial.jinja2' as tutorial with context %}

{{ tutorial.code_full("devbook/hello-world", ["py", "js"]) }}
{{ tutorial.code_snippet(["py:4:4", "js:4:4"])}}
{{ tutorial.code_snippet(["py:6:16", "js:6:16:The <js:TransferTransactionV1Descriptor> constructor only accepts parameters of the right type, \
making it easier to use during development. We can do almost any markdown here:\n
* One **black**\n
* Two"]) }}
```

The extended syntax accepts a list of objects, keyed by language code:

```jinja
{% import 'tutorial.jinja2' as tutorial with context %}

{{ tutorial.code_snippet({
'py': { 'range': [41, 54] },
'js': {
'range': [40, 52],
'descriptor': 'TransferTransactionV1Descriptor'
}
}) }}
```

Available parameters are:

* `range`: List of two values indicating the start and end lines of the code snippet.
* `descriptor`: If present, includes an admonition about typed descriptors including a link to this descriptor.
* `caption`: Free text to add below the snippet.

`code_snippet` uses the filename of the previous `code_full`.

[Usage example](./pages/en/devbook/start/hello-world.md).

`code_full` inserts the whole source file, for all the listed languages, and sets the file name to be used by the snippet macros.
Each language tab can have an optional caption, separated from the language code by a colon.

`code_snippet` inserts a range of lines, with an optional caption.

**Captions allow complex markdown like lists and term links, but they are formatted differently.**
Lines must be continued by escaping the line break, and line breaks are inserted with \n.
See the example above.

The only supported language is Java (`java`).
See [`tutorial.jinja2`](./templates/macros/tutorial.jinja2) for details.

## Technical Writing

* Use American English (`organize` instead of `organise`, `behavior` instead of `behaviour`, etc.)
* Use the American format for dates with long month names: `January 9, 2023`. 3-letter short month names can be used when space is at a premium, for example on narrow table columns. In this case, use the Day-Month-Year format: `9-Jan-2023`.
* Do not use gendered pronouns when talking about users/consumers/whatever but always `they/their` instead.
* Avoid talking about `us`, or `we`, even if it means resorting to passive voice.
* Use active voice when there is no specific need to use passive.
* Do not use the future tense but use present simple for expressing general truths instead.
* Abbreviations and acronyms should be spelled out the first time they appear in any technical document with the shortened form appearing in parentheses immediately after the term.
The abbreviation or acronym can then be used throughout the document.
* Avoid ambiguous and abstract language (e.g. `really`, `quite`, `very`), imprecise or subjective terms (i.e. `fast`, `slow`, `tall`, `small`) and words that have no precise meaning (i.e. `a bit`, `thing`, `stuff`).
* Avoid contractions (e.g. `don't`, `you'll`, etc.) as they are meant for informal contexts.
* Avoid generalized statements, because they are difficult to substantiate and too broad to be supported.
* Avoid story-telling, remain factual and concise.
* Avoid jargon.
* Humor is allowed, as long as it is not distracting. I.e., do not go out of your way for the sake of a pun.
* Avoid em-dashes `—`. Putting non-restrictive relative clauses into separate sentences leads to simpler, clearer writing.
If em-dashes are needed, make sure to use the right character: `—` (alt code: `ALT+0151`).

Most of the time what you really want is a colon `:`.
* When referring to something in a certain way (i.e. `FBAS` for *Federated Byzantine Agreement System*) make sure to consistently use only FBAS after the term is introduced.
* Use digits when the number is mostly meant to be used in a program.
Spell out numbers when they are not (e.g., when a number can be a pronoun, such as in *that's the one I used*).

## Links

* Use informative link titles.
For example, instead of naming your links `link` or `here`, wrap part of the sentence that is meant to be linked as a title.
* Links to external sources should be:
* Clear, concise, factual (not tips & tricks-type articles, or blog posts).
* Reliable to stand the test of time (will not start to 404 because it's a personal blog and the person decided to get rid of it, for example).
* From reliable sources (this is where Wikipedia isn't always perfect, but fine for technical subjects).
* Whenever possible, use internal links instead of external ones: if something has been described in our documents somewhere, link to it instead of externally.

## Official Spellings

* dapp
* mainnet (or main network)
* smart contracts
* testnet (or test network)
* web3
7 changes: 7 additions & 0 deletions mkdocs/Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
defaultCiPipeline {
operatingSystem = ['ubuntu']
instanceSize = 'medium'
environment = 'docs'
packageId = 'docs'
publisher = 'gh-pages'
}
Loading