Things I have worked out while building real projects — databases, deployment, security, architecture, and yes, the web too. Whatever I had to learn the slow way, written down so the next person does not have to.
Reading the docs is the easy part. What actually makes a tool stick is building something small and real with it, then finding out where it breaks.
The choice is rarely about speed. It is about how your data is shaped, how often that shape changes, and which questions you will ask of it later.
Containers, environment variables, and a build pipeline that fails loudly — the boring setup that stops "it works on my machine" from ever being a sentence you say.
Hashed passwords, validated input, secrets kept out of the repository, and rate limits. None of it is advanced, and all of it is skipped far too often.
Keeping one repository layer between your data and everything else means moving from flat files to a real database touches a single file.
How locale-prefixed routing, message files, and sensible fallbacks fit together so adding a third language stays a small change.