When learning a new skill, you need as much practice as possible because it’s the practice that makes your knowledge and applied skills stronger. Developing web apps is no exclusion: you can read tons of blog posts or crawl through hundreds of tutorials, but until you’ve touched it and figured out how it works by yourself, you will barely remember anything.
Sometimes you even know your weaknesses and might want to improve your knowledge in particular areas but coming up with a project idea focused on some specific topic can be almost as challenging as actually implementing it afterwards.
I gathered some Flask web applications ideas along with topics you can learn while working on them. Here we go:
Weather app is a good start for Flask beginners. It doesn’t require a lot of core code writing, so you can focus on building the good UI for your application.
Using any open weather API (for example, OpenWeather API) you can easily get weather information on almost any place in the world. And then create nice HTML templates to display this information in a pleasant way.
Building a project from scratch all by yourself is indeed interesting, but if you need some pivots on how to organise the work, you can try Weather App at Hyperskill, where all the stages of implementing the project are described in detail.
Topics to work on: UI in Flask, Jinja, working with third party resources (APIs)
The name speaks for itself: if you want to create a movie database, you’ll have to store a lot of connected data. Movies, Directors, Actors… more and more.
All the instances are tightly connected to each other and designing and implementing this kind of relationships can get you some headache, but in the end, it is a very interesting and no doubt useful journey as storing data is something you’ll have to do in almost any project, so you better have some knowledge on it.
Topics to work on: Working with databases, designing tables and relations, SQLAlchemy in Flask
I know, I know. Todo list is one of the most obvious things you usually see recommended to implement as it’s usually very easy. But if you want to get some more of a challenge, what if we turn a simple todo list idea into idea of creating some kind of simple Trello copy?
Besides database things like creating correct relationships for entities and storing all the data, you can add a simple log in system to the project, which will lead you to practice working with user sessions/user accesses in Flask.
Topics to work on: Authorization/Authentication, Flask sessions, working with databases, designing tables and relations
Web calendar is an application simple enough to make it as a REST API: creating and storing calendar events should be pretty easy, while retrieving the data via raw HTTP request should be implemented carefully so that the information is convenient to consume by the end-user. So that’s a good opportunity to learn more about REST API concept in general, the way you actually design this kind of application, and of course about applying REST approach in Flask, building endpoints and marshalling data for output.
If you still don’t know where to start, check this Web Calendar project at Hyperskill.
Topics to work on: REST API, flask-restful, class-based views, marshalling data
Shared expense tracker is not only a useful app in real life, it also allows you to practice validating user data before actually saving and using it. Also, this project needs to be tested good, as there are so many ways to break it: insert invalid data, split the bill incorrectly, etc. Building this project you can not only work with validating data, for example, using WTForms, but also learn about testing a Flask application, both unit and integration.
Topics to work on: Validating data, working with forms, Flask test context, pytest
These five project ideas can of course be adjusted precisely to your needs. But I described the areas each of them suits better to practice on. So go ahead, choose one and start implementing. You’ll get good experience, learn new things to do in Flask and probably will have some fun (only joking. Of course you will). And don’t forget to push your project on to your GitHub! Happy coding :)