It's not easy to write great Django reusable apps. In fact, it's difficult to write any reusable piece of code. The fact is, as any library, Django apps are judged by abstract ideals like elegance, simplicity, and extensibility, but it's not always clear how we can follow those qualities. That's why in this talk we'll discuss good and bad Django apps with real-world examples. For each thing learned, we'll come up with a checklist to help us with practical advice for writing nice Django apps.