Like I've said before, learning as an activity that blocks coding is annoying. I want to Get Things Done, not browse unanswered Stack questions trying to figure out why your API returns an error. I've also noticed as we continue working on textbooktrad.es that there are plenty of times where a library might come in handy (templating, for instance) but a vanilla implementation just works for now.
I'm sure we will eventually see the light and move to a proper system. Until then, what we have works. The crazy thing is, I think that this is the right way to do it because we learn the basics. Writing a faux template system may lead to difficulties as we expand, but at that point we can move to an established player. Until then, we're learning more about the language we use, instead of yet another API.
So try and build something, and fail. Think of it like ablative shielding. The purpose is not to make something brilliant out of the gate, it's to help the craft as a whole arrive in one piece.
A word of warning: don't do this with anything involving security. Rule #1: don't roll your own crypto.