{"size": 2527, "ext": "scrbl", "max_stars_repo_path": "docs-src/workshop.scrbl", "max_stars_repo_name": "iblazevic/reach-lang", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "docs-src/workshop.scrbl", "max_issues_repo_name": "iblazevic/reach-lang", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "docs-src/workshop.scrbl", "max_forks_repo_name": "iblazevic/reach-lang", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 32.8181818182, "max_line_length": 179, "alphanum_fraction": 0.7625643055}
#lang scribble/manual
@(require "lib.rkt")

@title[#:version reach-vers #:tag "workshop" #:style 'toc]{Workshop}

The workshop is a collection of self-study projects to help you on your way to mastery building decentralized applications through practice by building specific projects in Reach.
It is designed to help direct you along the path of learning effective use of Reach and points out for you some of the design decisions that Reach programmers often make.

Unlike @seclink["tut"]{the tutorial}, it is not meant for you just to copy code and see what appears; instead, you're meant to work on your own to build a project yourself.
This way, you'll learn more and slowly be able to build your own project using Reach.

At the end of every project, we'll always show a "final" version with commentary about why we implemented it the way that we did.

@margin-note{We would love your feedback on any project, especially the parts that you struggled the most with.
This will help us improve the language, our developer tools, and the project materials.
The best way is through the @link["https://github.com/reach-sh/reach-lang/issues"]{GitHub issue tracker} or by messaging @litchar{@"@"team} in @(the-community-link).}

We highly recommend going through @seclink["overview"]{the overview} and @seclink["tut"]{the tutorial} before continuing through the workshop.
However, you can do most workshops in any order.
If there's a pre-requisite, it will be explicitly mentioned.

Here are the current workshops, in the order we recommend doing them:

@local-table-of-contents[#:style 'immediate-only]

@section[#:tag "workshop-rps-fair"]{Workshop: Fair Rock-Paper-Scissors}

XXX

@section[#:tag "workshop-rps-batched"]{Workshop: Batched Rock-Paper-Scissors}

XXX

@section[#:tag "workshop-rps-firstmsg"]{Workshop: First Message Rock-Paper-Scissors}

XXX

@section[#:tag "workshop-secured-loan"]{Workshop: Secured Loan}

XXX

@section[#:tag "workshop-trust-fund"]{Workshop: Trust Fund}

XXX

@section[#:tag "workshop-rental"]{Workshop: Rental Agreement}

XXX

@section[#:tag "workshop-abstract-simul"]{Workshop: Simultaneous Games}

XXX

@section[#:tag "workshop-guardian-account"]{Workshop: Guardian Account}

XXX

@section[#:tag "workshop-nim"]{Workshop: Nim}

XXX

@section[#:tag "workshop-ttt"]{Workshop: Tic-Tac-Toe}

XXX

@section[#:tag "workshop-utility"]{Workshop: Periodic Payment}

XXX

@section[#:tag "workshop-hash-lock"]{Workshop: Hash Lock}

XXX

XXX use design recipe

XXX warning about online block mining attack
