🚀 How I Study Flask: A Project-Based Learning Approach
As I mentioned earlier, this is how I study.
I move quickly through basic syntax and concepts, then immediately apply them by building projects. When I try to understand code, I always start from the top — understanding the overall structure first, then breaking it down step by step until each individual line makes sense.
Of course, many people prefer learning in a linear way, starting with syntax and theory, and that approach works well for them. In fact, that’s how most formal education is designed. But for me, once I understand the architecture, even complex code becomes much easier to read and reason about.
Each project gives me a clear sense of progress and helps me gradually shape my identity as a developer. ✨
I also believe that programming is a language. When we learn a new language, we don’t start with grammar rules — we first recognize words, then learn how those words form sentences through use and repetition.
That idea strongly influenced my learning approach:
“💡 Let’s understand code one sentence at a time — through real projects, not just theory.”
I don't know if this approach will work for everyone, but if you're still exploring your own learning direction, I hope this roadmap serves as a helpful guide. 🙌
It won’t be easy — but step by step, project by project, we move forward together. 🧭
📘 Flask Project Roadmap (Actual Progress)
📝 Project 1 — Mini Blog
Building a Mini Blog (Flask + Python)
- Routing basics
- Templates (Jinja2)
- Simple data flow
- Understanding request → response
💱 Project 2 — Currency Converter
Currency Converter App (Flask)
- Form handling
- Using external data
- Basic business logic
🔐 Project 3 — Authentication System
Login / Logout / Signup System
- Authentication flow
- Session handling
- Password hashing
- User model basics
🔗 Project 4 — REST API
Building a REST API (Flask + SQLite)
- API design
- JSON responses
- CRUD operations
- Separation of concerns
🌤️ Project 5 — Weather App
Simple Weather App (Flask + External API)
- External API integration
- Error handling
- Data parsing
- User feedback in UI
📰 Project 6 — News App
Top 10 News App (Flask + Hacker News API)
- Working with real-world APIs
- Filtering and processing data
- Dynamic content rendering
- Improving overall app structure
🗂️ Project 7 — Final Project
Todo Pro (Full Version)
- Blueprint-based modular architecture
- Separated
authandtodomodules - Template structure redesign
- App factory pattern (
create_app) - Scalable folder organization
- Production-oriented thinking
This final project is where everything comes together. 🎯
Through this roadmap, my goal isn't to follow tutorials, but to build, break, and redesign real applications. I document everything here — successes, mistakes, and refactors — so others can learn alongside me. 📚
Let’s learn Flask the same way we learn a language: by using it, project by project. 🚀
Top comments (3)
Really like how you structured your Flask roadmap, Sabin! 🚀
I’m planning to start learning Flask soon, so I bookmarked this, the way you break things down through projects is super helpful.
By the way, did you recently start learning Flask?
How’s the learning curve for you?
Is it difficult at the beginning or does it get easier once you start building things?
Curious to hear your experience before I dive in. 😊
Thanks @shahrouzlogs always for the great comments and questions. As you mentioned, it's certainly difficult at first. Let me explain this purely from my own experience.
People might feel it's too complicated because of the question, "Why does putting these things here make it work like this?" I've always considered programming to be part of language, in a broad sense, a way to converse with a computer. So, initially, instead of focusing on every single line of code, I focused on the larger blocks, and as I repeated these experiences, the individual, word-like pieces of code inside finally started to make sense.
To add to that, I often follow along with the code written by AI and try to grasp the structure based on those code chunks. Then, I personally modify the information within the code piece by piece, thinking, 'Ah, this part is connected to that code.' Essentially, I'm playing around with the code.
Also, my personal belief is that quality inevitably improves when quantity is repeated. Simply put, I believe that the quality of my knowledge also sees a vertical leap as I work on many projects.
It's an honor to receive a question like this from someone as dedicated as you. Thanks to your question, I had a chance to reflect on my own thought process again. Thank you!
That’s really interesting, I didn’t expect that, so you’re also using AI as part of your learning process. Honestly, that was reassuring to read.
I’m using a very similar approach myself. I rely on AI tools quite a bit, but never as a copy-paste shortcut. I usually use ChatGPT or other coding-focused AIs to explore patterns and possible implementations. When I want to go deeper into why a certain block exists or why a line is written a specific way, I often turn to Gemini. In my experience, it’s especially helpful for breaking down reasoning and making implicit structure more explicit.
I don’t have a human mentor, so AI has naturally become part of my learning loop. That said, learning this way isn’t always smooth. AI can be helpful, but it’s not consistently reliable. Even with carefully written prompts, I’ve run into explanations that don’t fully hold up, or code that works in isolation but falls apart in a real context. That friction has been an important part of the process for me.
Because of that, I tend to learn by actively pulling things apart. I open the code, remove sections, tweak values, disconnect pieces, and then watch things break 😂
When bugs show up, I’m forced to trace relationships and understand how different parts depend on each other. Over time, this has helped me build a much clearer mental map of how the system actually works.
I also strongly relate to the idea that progress comes from repetition. Working through multiple projects has helped me recognize patterns faster and feel less lost when facing new problems. Each project adds a bit more context, even when the result isn’t polished.
That’s why your description resonates with me. Project-based learning, repetition, and hands-on modification have been central to how I’m approaching things. And I agree that at some point, the shift has to happen from experimenting freely to making more deliberate design and architectural choices.
Overall, it feels like we’re navigating a very similar learning space. Different tools, maybe different paths, but a shared focus on building, questioning, and learning through iteration rather than passive consumption.
Also, thank you for the kind words. It honestly means a lot. And thanks for taking the time to explain your process. Reading perspectives like this helps clarify my own approach and where I want to take it next. ✨