# \[ANN\] JuliaTutorialsTemplate

**URL:** <https://discourse.julialang.org/t/ann-juliatutorialstemplate/75393>\
**Category:** Package Announcements\
**Tags:** tutorials, pluto, franklin\
**Created:** [January 28, 2022, 9:17pm UTC](https://discourse.julialang.org/t/ann-juliatutorialstemplate/75393 "2022-01-28T21:17:32Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![rikh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rikh/32/204104_2.png) [@rikh](https://discourse.julialang.org/u/rikh)\
**Post date:** [January 28, 2022, 9:17pm UTC](https://discourse.julialang.org/t/ann-juliatutorialstemplate/75393/1 "2022-01-28T21:17:32Z")

</div>

After having struggled with updating [TuringTutorials](https://github.com/TuringLang/TuringTutorials) months ago, I have been long on the lookout for a good system to automatically build notebooks to a pretty website to show the code and outputs. Thanks to many different comments on different PRs, I learned that the requirements were to:

- Evaluate notebooks independently in CI.
- Allow people to easily update notebooks.
- Have independent manifests for each notebook (otherwise, updating one tutorial may be nearly impossible because dependencies have to be the same everywhere).
- Have a cache, that is, avoid re-running unchanged notebooks
- Very importantly: reliably **fail on error**. This is a must-have at all times when a public website is generated.
- Print package versions at the bottom of the page.
- Make it easy for people to run the code themselves.

At TuringTutorials, we’ve implemented large parts of this logic manually. This is all very tricky, you’ll run into things like:

- [https://github.com/JuliaLang/Pkg.jl/issues/2219](https://github.com/JuliaLang/Pkg.jl/issues/2219)

and a ton of caching problems. All not impossible problems to overcome, but annoying nevertheless; especially if some tutorials take \>20 minutes to run and note that this is on top of maintaining the tutorials in the first place.

Now, to solve this, I already announced here that I created [PlutoStaticHTML.jl](https://github.com/rikhuijzer/PlutoStaticHTML.jl) ([[ANN] PlutoStaticHTML.jl](https://discourse.julialang.org/t/ann-plutostatichtml-jl/71785/1)) which solves many of the above problems.

However, that package is quite bare-bones and generating a pretty website with it wasn’t that easy. So, I would like to annouce that there is now a template repository including caching, parallel building, GitHub Pages setup, fancy CSS styled appearance, good appearance on phone, a nice favicon, Highlight.js and, of course, JuliaMono 🥳

See the [Julia Tutorials Template - JuliaTutorialsTemplate](https://rikhuijzer.github.io/JuliaTutorialsTemplate/) website.

I hope that this can make writing tutorials easier for more people. I’m looking forward to seeing more pretty and up-to-date Julia tutorials
