
Stretch goals
- $2,100 ✓ - The initial goal was passed in just 36 hours! With the money from the initial goal I'll be able to pay for an awesome cover design and the miscellaneous expenses associated with publishing (sample prints, ISBNs, etc). Thank you all for getting us here!
- $5,000 ✓- If we hit this mark, the book will have a strong visual identity. This means illustrations all throughout the book, in addition to a well designed website, logos, and maybe even some merchandise. All of these things combine to make the reading experience a lot more fun.
- $10,000 - The book will be freely available online as good old HTML if we make it to this milestone!
Bonus reward
Anyone who pledges $20 or more will also receive custom stickers for your laptop, or whatever else you'd like to stick them on!
Flask is awesome!
Flask is a microframework for building web applications in Python. Flask is small enough to stay out of the way when you're trying to build your website, but powerful enough for any need. Even though Flask itself is small, its ecosystem of extensions keeps it functioning at the level of larger frameworks like Django or Ruby on Rails. This combination makes Flask an excellent choice for developers of all shapes and sizes.
The community needs a book.
The only real dedicated learning resource for Flask is the user guide. Go check it out to see how easy it is to build web apps with Flask. That's a great introduction to the framework, but it's not enough for real projects. In the end, you spend hours upon hours researching the best way to handle registration, authentication, email confirmation, and a million other little things. Most of these little things aren't documented or easy to find, potentially slowing the pace of Flask development. The experts know this stuff already, but finding them takes time and an understanding of what sort of questions need to be asked.
This is why I'm compiling this hidden knowledge into a book of tips, tricks, and best practices into one book: Practical Flask.
This book is for you.
The book is written for developers who have gone through the Flask user guide. It will assume some very basic knowledge of the framework, but it's nothing that can't be gained in a day or two. If you're interested in web development with Python, you have something to gain by backing this project.
Fun fact #1: I'm available to answer questions on Twitter @__rlp and via email at mail@robert.io.
You can make it awesome (like Flask).
I can write the book, but I need some support to turn the content into something bigger. By pledging, you're helping to take this book to the next level by funding:
- Cover design
- Illustration
- Editing (both technical and grammatical)
- Web design
- ISBN
- My own expenses (like coffee for the late night writing sessions and food for ... living)
- Misc. fun stuff - If all of the other expenses are covered I'm sure we can think of some fun ways to put the surplus to good use.
Fun fact #2: The name of every backer will be listed on the website, along with their reward level!
I'm the man for the job.
I'm a student at the University of North Florida and I've been a software intern at DuckDuckGo for the last year and a half. I've been learning web development for several years. When it comes to Flask, I've built a few apps, and spent many frustrating hours trying to learn the best practices and patterns for those apps. I'm really passionate about Flask and eager to share the knowledge that I have (and what I acquire through heavy research). I don't claim to be an expert on Flask, but I've found the experts and I'm talking to them.
Some of the developers I'm consulting with to inform the content of the book include Flask creator Armin Ronacher, Balanced Co-founder and CTO Mahmoud Abdelkader, and Happify Co-founder and CTO Andy Parsons. Here is the up-to-date list of developers I've sat down and talked with so far:
- Mahmoud Abdelkader - CTO and Co-founder of Balanced, uses Flask to facilitate payments for businesses and marketplaces.
- Mark Harviston - Working at Elsevier, uses to build an application for researchers to log data about moon rocks.
- Glenn Yonemitsu - Founder of MarkupHive, a site that hosts sites built with Jade, CoffeeScript, Stylus, and more. The service's SDK uses Flask to dynamically generate applications from user configuration.
- Andy Parsons - CTO and Co-founder of Happify, uses Flask to build and serve Happify's client-heavy web app.
- Oleg Lavrovsky - Working with Apps with love, uses Flask to back an iPhone application to let residents of Bern, Switzerland access library catalogs.
- Joel Anderson - CEO and Founder of Cloudmancer, uses Flask to build an application that interfaces with a variety of cloud service provider APIs to let their uses manage them in one place.
I have several more discussions lined up for the near future. In the end, I expect to have consulted with over a dozen professional Flask developers to inform the content of the book.
This is a rough list of topics that I plan on talking about:
- Coding conventions
- Documentation conventions
- Working with virtualenv and virtualenvwrapper
- Organizing your project
- Packages versus modules
- Testing
- Configuration
- Using plugins
- Blueprint patterns
- Best practices for views
- Best practices for templates
- Managing static files
- Using Flask-Assets
- Best practices for models
- Database migrations with Alembic
- Common patterns for forms
- User registration
- Transactional emails
- Using Celery
- Email address confirmation
- Using dynamic subdomains
- User authentication
- Logging
- Creating a JSON API
- Administrating your app
- Accepting payments
- Debugging
- Deployment
- - Heroku
- - EC2
- - Google App Engine
- A/B Testing a Flask app
- Maintaining the codebase
- Client-heavy applications
- Python 3 and Flask
- Security best practices
Risks and challenges
There is also the potential for problems with finding a good printer. Right now I'm looking at CreateSpace as the top candidate, but I'll have to check a sample of the print when the time comes. In any case, there are a number of other options and I'm sure one will work well.
Learn about accountability on KickstarterQuestions about this project? Check out the FAQ
Support
Funding period
- (30 days)