Web App Dev

Produce a full-stack web application in Python's Flask framework. While this is difficult and complex, it'll be a rewarding challenge.

This section of Gilmour Academy's Computer Science Department's GitBook is also the official documentation of the Flaskinni open-source project. If you would like to skip the background information about web applications, you can proceed straight to 4: Install Flaskinni.

Why web development?

Web Development is my favorite area of Computer Science to study. Programming at the hub of all information gives you a bird’s eye view of how business operations fit together. If an organization has mobile apps, websites, and some sort of critical information for their business, then web developers are the people holding systems together. There's so much happening in this field, too. In fact, we've got to be careful that all this cool tech doesn't overwhelm you.

Pro-level challenge

Want to jump in with both feet and go hard on the research? See if you can get your head around the growing change from REST API to GraphQL. What are those and why is there a change happening? Don't sweat it if YouTube videos and articles go right over your head. It's good to start dabbling and exposing yourself to top-level discussion.

Acceptable Level of Abstraction

Little kids like to keep asking, “Why?”

A thread of inquiry can always get more detailed. It never stops. You can keep digging deeper. Sooner or later we just accept the idea of something and stop asking questions. For example, I know hardly any of the electrical engineering involved to build a stick of RAM but I would still claim I know what RAM is. I’ve just accepted that there’s a thing called RAM and it works like so and I’m okay not knowing any more details than that for right now.

The great Richard Feynman addresses acceptable levels of abstraction, though he doesn't call it such

We are going to narrow our focus to building a Python Flask app using templates and a pre-built starting point. We can build really cool things but it means that we’re going to brush over big concepts that are totally worth studying. Sometimes it’s hard to feel like you understand something if you can’t take the time to closely examine all of the pieces and principles involved. Write down questions, don’t stifle your curiosity, but be patient as we setup lots of abstract ideas that we won’t be able to satisfactorily investigate for a while. TLDR: Be patient and keep a running list of concepts and questions to research later.

Resources

The tools you'll need to install are explained in section 4. This is where you sign up for accounts, add bookmarks to training resources, and just generally glance around at the web dev ecosystem.

Accounts You’ll Need:

  • SourceLair: In my experience, setting up a development environment on your computer can be so frustrating that it often discourages people from giving web dev a fair shake. A website that allows you to skip most of the setup can be a great help.

  • GitHub: Source control. The world awaits to see if Microsoft ruins it and drives everyone to an alternative.

  • StackOverflow: The most amazing resource that has enabled the world to work together to solve programming jams.

  • Docker: Containers are a cool new way of getting your app quickly set up on a server. They're tricky. If we get into a Docker project, you might want an account.

  • Our Quizlet Vocab: Let's work on building up some Quizlet resources so we can lock down the terminology.

  • Guided Training: Do your homework! Actually grind out the projects. Learn the rules of new languages.

  • Publishing: How do we get our Flask app online?

Extra Resources for the Try-Hards: