Book
📗 Our Book on Full-Stack Web Application Development covering User Experience (UX) Design, Mobile/Offline/Security First, Progressive Enhancement, Continuous Integration/Deployment, Testing (UX/TDD/BDD), Performance-Driven-Development and much more!
Install / Use
/learn @dwyl/BookREADME
The Practical Book <br />on <br />Crafting Full-Stack Web & Mobile Apps
</div>A step-by-step guide to "Full Stack" Web & Mobile Application Development for people building beautiful, robust & maintainable apps individually or in teams!
Why?
Think/say what you like about Steve, he was right about (at least) one thing:

Considering that there are millions of "Apps" already, why should I (or anyone for that matter) bother learning how to make more of them?
This is a great question and one we ask ourselves
@dwyl often!
The answer is another question: do you think all the world's
problems/challenges have been resolved...?
To which the answer is: not even close!
How?
Read it Online
Read it dwyl.github.io/book
Read it Offline
While viewing the online version, click the "Print" icon in the top-right of this screen: ↗️
<img width="97" alt="image" src="https://user-images.githubusercontent.com/194400/219624215-3d780055-5151-4e2e-8632-893578c4412b.png">Then you can save the page
either as HTML or PDF
and read it offline
without any distractions.
Run it on your localhost
Run the following commands
in the Terminal on your computer:
git clone git@github.com:dwyl/book.git & cd book
cargo install mdbook
mdbook serve --open
That will open your Web Browser with the book.
Note: that
cargocommand assumes you haveRustinstalled on your machine. <br /> If you don't already, see: dwyl/learn-rust#installing
Contributing
To help us improve the book,
the easiest way is to
edit it directly on GitHub:
dwyl/book/src
While reading the book online, simply click/tap the "Edit" button on any page:
<img width="278" alt="dwyl-book-suggest-an-edit" src="https://github.com/dwyl/book/assets/194400/ca3ed7f9-307d-4a64-ba19-4239cc710da9">That will take you straight to the page where you can make your changes and create a Pull Request.
Editing on localhost
Just open the /src directory and edit the file you want to improve.
<!--  _Substitute_ the word "man" for "person" and the "read" for "code" for the **21st Century** _equivalent_. [Coding is the ***new literacy***](http://www.huffingtonpost.com/the-harbus/coding-is-the-new-busines_b_11028790.html) and people who don't _make_ the time to _learn/practice_ are _destined for disappointment_. # *Why*? [](http://www.ted.com/talks/simon_sinek_how_great_leaders_inspire_action) ## _Why_ Should _Anyone_ Learn How to Build Web Apps _Today_? > Someone _recently_ asked: "_Is software engineering a **dead end** career?_" https://www.quora.com/Is-software-engineering-a-dead-end-career It's `true` (_logical_) that ***eventually*** there _will_ be ["_enough_ apps"](http://valleywag.gawker.com/there-are-officially-too-many-apps-and-nobody-is-makin-1611128750) to _achieve_ "***all the things***" we need, but "_experts_" have been [_predicting_](https://news.ycombinator.com/item?id=11974922) the ["_end of software_"]() for the last 20 years. And yet, the _pace_ of change _continues_ to _accelerate_ and the number of _jobs_ that aren't being filled because the "***skills shortage***" has ***increased sharply*** in recent years: [bbc.co.uk/news/education-36783460](http://www.bbc.co.uk/news/education-36783460) > "***Software is eating the world***" ~ Marc Andreessen [wsj.com/articles/SB10001424053111903480904576512250915629460](http://www.wsj.com/articles/SB10001424053111903480904576512250915629460 ) **Tip**: _disable_ JS in your browser to _read_ the article without Rupert forcing you to _pay_ for knowledge! **Software is _still_ eating the world**: [techcrunch.com/2016/06/07/software-is-eating-the-world-5-years-later](https://techcrunch.com/2016/06/07/software-is-eating-the-world-5-years-later) For the _foreseeable future_ creating web & mobile app with the tools/techniques outlined in this book will be a _thing_. > "***You can mass-produce hardware; you cannot mass-produce software - you cannot mass-produce the human mind***"" ~ Michio Kaku _Thankfully_, (_or perhaps sadly depending on your view_), software cannot be _mass produced_ ***yet*** ... Should you/we be "_afraid_" of [**AI**](https://youtu.be/05bGPiyM4jg) or _embrace_ it...? A _topic_ for another time ... for _now_, focus levelling-up your skills, so you can _understand_ the AI _debate_!  ### What's "In It" For _Me_? Our "_podium_" list of what ***you*** will _gain_ by learning this "_content_": 1. The ***vocabulary*** to have **technical discussions** with web developers (_without sounding like a ["**poser**"](https://youtu.be/nB2ngWWhxEk?t=3m49s) which is **not** the same as a ["**beginner**"](https://youtu.be/kKO3dXiTl1s) ..._) even if you decide not be a full-time coder, if you know _how_ to code, you will have a _far_ more fruitful time working with technical people. 2. A chance to Meet & collaborate with ***interesting people*** on using technology to make the world a better place for everyone! 3. (_last but not least_) The "***skills*** _to pay the bills_" which will let you build your _own_ ideas or get paid (_really well_) to work on a challenge with an _existing_ team.  As with _any_ skill, your coding skills are whatever you `make` of them! ## _Why_ Write a "_Book_"? The `main` reason we decided to organize our knowledge/experience as a "_book_" is because people were _using_ (_and loving_) our tutorials _individually_. [](https://twitter.com/dwylhq/status/775016209263845377) but people _kept asking_ us: > **Question**: "_Is there an **order** in which I should follow your tutorials_...?" <br /> > **Answer**: ***Yes***! So we wanted to present our _series_ of tutorials in a _reasonably_ systematic/linear format that anyone can follow in an _order_. The reasons we did not _state_ the order of learning `before` were that: + the _sheer number_ of "_things_" to learn would have overwhelmed _us_. + there were _so many_ "_gaps_" in our documentation that we would have suffered from a _panic-induced "**blank page syndrome**" or writer's block_ and never got _started_! We are _very_ conscious of the fact that there is a "_lot to learn_" in order to build web applications. By making individual self-contained tutorials we were able to "_chunk_" the knowledge into parts that were relevant to people searching for a guide specific to that subject. The _second_ reason is to make it "_portable_". By grouping all of our tutorials in a single PDF people can put it on their e-Reader and read it "**AFK**" or even pipe it through a "screen reader" and listen as an _Audio Book_! > We wrote the _individual_ tutorials was out of _frustration_/_pain_ of working in organisations where knowledge was not distributed. Count yourself _lucky_ if you have never worked at a company where people "_hoard_" and "_guard_" their knowledge/skill/data/insight because they think it will maintain their "_power_", "_position_" or "_influence_". We @dwylhq have worked in _many_ such companies and grew weary of the "_boss_" who kept "_secrets_" or the "_subject matter expert_" that could not be fired even though they were killing team morale. ***Systematically sharing our knowledge*** is our way of avoiding that charade! # *Who*? ## ~~Readers~~ Learners Who _should_ read (_and practice_) this...? If you are (_already_) learning (_or want to learn how_) to build Web-based Applications (_that "**Work Everywhere**"_) using Open Source, ***Free*** tools, this book (_or its individual self-contained/standalone "chapters"_) will be *relevant* to you. Our _aim_ is that the content is _useful_ to ***everyone writing code*** _at_ ***any level***, but we are starting with a focus on "_complete beginner_" and will work our way up to "_advanced_", answering _any_ question you have along the journey! If _anyone_ tells you that learning to code is a bad idea, just smile and think to yourself: > "***Never mind what haters say, ignore them till they fade away***" ~ [T.I. (Live Your Life)](https://youtu.be/koVHN6eO4Xg) ## Writers Unlike _most_ other books written by *one* person or even handful of people, and "_published_" (_printed_) in paper `this` book has _**many contributors**_ and is _continuously_ evolving. > “***Alone we can do so little; together we can do so much***” ~ Helen Keller As such it is thNote: If you get stuck, we recommend reading: rust-lang/mdBook. <br /> You don't need to know
Rustto understand any of it.
