Share this project

Done

Share this project

Done
I'm writing a revised and updated version of the Flask Mega-Tutorial for Python 3.6.
I'm writing a revised and updated version of the Flask Mega-Tutorial for Python 3.6.
I'm writing a revised and updated version of the Flask Mega-Tutorial for Python 3.6.
569 backers pledged $15,142 to help bring this project to life.

About

The New and Improved Flask Mega-Tutorial project video thumbnail
Replay with sound
Play with
sound

The New and Improved Flask Mega-Tutorial

$15,142

569

Stretch Goals!

The project has been funded in a short 24 hours. Thank you to the 80 or so backers who made this possible in such a short amount of time!

So what happens now? Since there is plenty of time for me to continue fundraising, I'm going to sweeten the deal with the following stretch goals:

  • ✔ $2000 raised: Base funding. I'm doing this!
  • ✔ $5000 raised: New REST API + JavaScript client chapter. More details...
  • ✔ $7500 raised: Private messages and push notifications. More details...
  • ✔ $10000 raised: New Docker chapter. More details...
  • ✔ $15000 raised!!!: Backers vote for a new topic. More details...

The History of the Flask Mega-Tutorial

If you are learning Python web development with the Flask framework, chances are you have seen or at least heard people mention the Flask Mega-Tutorial, an eighteen chapter tutorial that teaches beginners how to create a web application.

Back in 2012, I decided to start a software development blog. Because I am a do-it-yourselfer at heart, instead of installing Wordpress and start blogging right away, I sat down and wrote my own blog engine, using a then little known web framework called Flask. I knew I wanted to code it in Python, and I first tried Django, which was (and still is) the most popular Python web framework. But unfortunately Django seemed too big and too structured. I've found that Flask gave me as much power, while being small, unopinionated and unobtrusive.

Writing my own blog engine was an awesome experience that left me with a lot of ideas for topics I wanted to blog about. Instead of writing standalone articles about these topics, I decided to write a long, overarching tutorial that Python beginners can use to learn web development. And just like that, the Flask Mega-Tutorial was born!

The tutorial teaches you how to build a microblogging application. It covers a long list of topics, including:

  • New user registration
  • User authentication and login
  • Writing blog posts
  • Followers
  • User timelines
  • Text search
  • Profile pages
  • Internationalization
  • Automated language detection and translation
  • and more!

While going through it you learn how to work with relational databases, database migrations, debuggers, profilers, translation and testing tools. While not the focus of the tutorial, there is also a fair coverage of HTML, CSS and even some JavaScript. Curious to see how the final product looks like? Here are a couple of screenshots:

Microblog's main screen
Microblog's main screen

 

Microblog's profile page
Microblog's profile page

Believe it or not, it took me about a year to write the eighteen chapters of the Mega-Tutorial. Back then, people still considered Python 2.7 the best release to use, and most Python packages had not been ported to Python 3 yet. Flask was at its 0.8 release at the time, and its port to Python 3 was not complete.

Fast forward a couple of years to 2014, and that is when Python 3.3 made an appearance, helping the Python 3 scene finally get some traction. By the end of 2014 Flask ran on Python 3.3, and I had revised all eighteen parts of the Flask Mega-Tutorial to make them mostly compatible. Due to some Flask extensions still not being ported this was difficult, so there are some gotchas and exceptions that you needed to be aware of. The sad reality is that the tutorial remains centered around Python 2.7, even though there is some support for Python 3.

The Present

We are now in 2017 and it finally looks like the scale tipped to the Python 3 side, so with your help, I would like to embark on a major rewrite of the Flask Mega-Tutorial to make it fully (not "mostly") compatible with Python 3.6. If there are any compatibility issues, I want to change focus and favor Python 3 over Python 2.

Unfortunately Python 2 vs 3 is not the only thing that changed. There are also several technologies that made sense in 2012 but are now obsolete. These include:

  • The OpenID authentication mechanism, which has lost support among providers.
  • The sqlalchemy-migrate package for database migrations, which seems to have lost traction and community support. These days Alembic is a much better choice for SQLAlchemy migrations.
  • The Flask command-line interface, which did not exist at the time.
  • Flask blueprints were fairly new at the time I started the tutorial, so I decided to not use that feature. In 2017, blueprints are a must for a Flask application.
  • Bootstrap 2 for web page styling and formatting, which is now two major versions old. New versions of Bootstrap are backwards incompatible with version 2.
  • Heroku service changes, which make the deployment instructions in the tutorial outdated.

The Future

As you can imagine, the many things that have changed in these five years basically mean that I will need to revise all the chapters, most of them in a pretty major way. Also, depending on the interest this campaign generates, I am open to consider writing new chapters to add to the collection (I have a few stretch goals for this campaign ready just in case!).

I'm excited about this project because I have grown professionally in these five years, and I think I can bring much more value to this tutorial with this new experience. Since this tutorial came out, I have given over a dozen conference talks and tutorials, I have written the highly successful Flask Web Development book for a major publisher, I have created several popular open source projects, and have transitioned from doing web development only as an after hours hobby to it being my full-time occupation. On top of all that, I have five more years of experience as a technical blogger, as I have continued producing content for my blog through all these years. All this experience is going to be reflected in the updates I bring to the tutorial.

Your Part In This

The work ahead of me is significant. If I just dedicate my regular "blogging" time to this project, it will take me a very long time to complete it. I would like to have a measure of the interest out there in me making this effort, so for that reason I have decided to create this Kickstarter project. My main goal is to get the monetary support I need to prioritize this project over other work, and have it all done before the end of the year.

My plan is to release the new Flask Mega-Tutorial articles on my blog, available to everyone, like the original version. The source code for the new version of the microblog application will be hosted on GitHub, also for the entire Python community to use and enjoy. But I have thought of some perks to show my appreciation to those of you who decide to support my work:

  • An ebook edition of the entire tutorial, that you can read on your Kindle or other ebook reader.
  • A video edition of the tutorial. I will record myself and my laptop screen going through the entire tutorial, so you'll know exactly what you need to do at every step.

Note that I do not plan to release the ebook and the videos on the blog, these will be made available only to backers at the corresponding pledge levels, and may go on sale at a later date if there is enough interest.

Risks and challenges

I don't foresee any major risks. I'm not at all concerned about not being able to complete the tutorial, because after all, I've done it once already!

The worst that can happen is that unforeseen circumstances force me to change the schedule, which would cause a delay in the delivery of the blog articles, ebooks and videos. If such an event occurs, I will let everyone know as soon as possible what the updated schedule looks like.

Learn about accountability on Kickstarter

Questions about this project? Check out the FAQ

Support

  1. Select this reward

    Pledge US$ 1 or more About $1.00

    Blog Fan

    Donate any amount to help make the new and improved Flask Mega-Tutorial a success! You will be able to read the new articles when they are published on my blog.

    Includes:
    • The Flask Mega-Tutorial blog posts
    Less
    Estimated delivery
    37 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  2. Select this reward

    Pledge US$ 10 or more About $10

    Ebook Fan

    Get the new Flask Mega-Tutorial in a brand new ebook edition that you can read on your Kindle or other ebook reader!

    Includes:
    • The Flask Mega-Tutorial ebook
    • The Flask Mega-Tutorial blog posts
    Less
    Estimated delivery
    320 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  3. Select this reward

    Pledge US$ 25 or more About $25

    Ebook Fan + Credit

    Get the new Flask Mega-Tutorial in a brand new ebook edition that you can read on your Kindle or other ebook reader. Your name will appear in the credits section of the ebook (sorted by pledge amount and then alphabetically).

    Includes:
    • The Flask Mega-Tutorial ebook
    • Your name in the credits section of the ebook
    • The Flask Mega-Tutorial blog posts
    Less
    Estimated delivery
    46 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  4. Select this reward

    Pledge US$ 50 or more About $50

    Video Fan

    Get the new Flask Mega-Tutorial in a brand new video edition. For each chapter, I will record a video of myself and my screen while going through the steps and explaining what I'm doing.

    Includes:
    • The Flask Mega-Tutorial videos
    • The Flask Mega-Tutorial blog posts
    Less
    Estimated delivery
    10 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  5. Select this reward

    Pledge $60 or more About $60

    Ebook and Video Fan

    Get the new version of the Flask Mega-Tutorial in its ebook and video editions for the complete learning experience!

    Includes:
    • The Flask Mega-Tutorial videos
    • The Flask Mega-Tutorial ebook
    • The Flask Mega-Tutorial blog posts
    Less
    Estimated delivery
    110 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  6. Select this reward

    Pledge US$ 75 or more About $75

    Ebook and Video Fan + Credit

    Get the new version of the Flask Mega-Tutorial in its ebook and video editions for the complete learning experience. Your name will appear in the credits section of the ebook (sorted by pledge amount and then alphabetically).

    Includes:
    • The Flask Mega-Tutorial videos
    • The Flask Mega-Tutorial ebook
    • Your name in the credits section of the ebook
    • The Flask Mega-Tutorial blog posts
    Less
    Estimated delivery
    39 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.

Funding period

- (30 days)