python-clean-architecture icon indicating copy to clipboard operation
python-clean-architecture copied to clipboard

Quick Start Guide

Open daniel-butler opened this issue 4 years ago • 3 comments

I love the idea of this library!

I can’t tell if it is ready for people to start using, at the very least testing out. If so what are the quick and easy steps to get started? If not what would they look like?

Thank you!

I’ve been reading a book Harry Percival’s is co-authoring: https://github.com/python-leap/book/. I can’t get enough information on the topic of domain driven / clean architecture. It’s absolutely the way software that has to be relied on, which means adapted over time for human use, has to be written!

daniel-butler avatar Oct 30 '19 04:10 daniel-butler

@daniel-butler Hi! Thank you for your feedback and the reference to the book. I haven't heard of it. It looks promising and I can't wait to read it.

As of this library: regrettably, no, it's not ready to test. IMHO there are lots of work to be done before it reaches its MVP. We tried to warn about this in the README. And this is the reason why there is no Quick Start Guide for now. It might be a good moment to make one. And clearly, it's my job to do.

But, if you're fascinated by Clean Architecture as you sound, you're welcome to start making contributions to the codebase, examples or docs. If you feel about it, we can find a subject for you. The library is important but only a side-project for both me and jakos, so there's always too little time for it.

lhaze avatar Nov 04 '19 10:11 lhaze

Totally understand that other obligations come in the way. What is the goal of the project?

I was thinking about making a framework kind of like cookie cutter but something you could use on existing projects to make basic framework / boiler plate code for the repository pattern for example. Kind of like what I’ve heard “crafting” is in the Masonite web framework https://docs.masoniteproject.com/the-craft-command/creating-commands#getting-started

Is it something along those lines or totally different? I looked around in the code base and could make out what the objective was. I was looking through it with the lens above and honestly didn’t dig too deep.

daniel-butler avatar Nov 05 '19 03:11 daniel-butler

I'm sorry you had to wait for my reply.

The fact that you're asking about the goal for this library makes me feel I've failed writing README.md ;) At this moment, I would define the main goal for this project as a toolset of loosely coupled, pluggable components that allow writing testable business logic fast.

From my perspective, it's a common situation to need to evaluate the concept of an application. To formalize a part of some domain and write a bunch of features, Hook it up to some infrastructure (some of which might be real and the rest is stubbed or faked). I.e. source of commands ultimately could be a mobile application or a message bus, but for a start, a simple CLI is enough. Testability means to me that you can let use such an application as early as you can to make sure it does what it was meant to and that it has a value. I find concepts like The Clean Architecture very promising to pursue the goal. This project is an attempt to systemize and generalize some of the effects of the challenges I've already made. Yes, you can say it goes along those lines, but there's not enough of it done to see its purpose clearly. Secondly, I didn't need to use it in an existing project. I'm sure it's too early for this, and this library is not mature enough. It contains only a fraction of the design I need and I want to make.

I haven't seen Masonite yet, so I can't relate. But I like the book you proposed very much, although the content could cover many more topics. I love the iterative style of teaching. I think the most valuable way of teaching design & architectural patterns is by showing them as a change to your code because you explain the problem they solve. The book will influence the design problems I face here and I'm sure I will use it as a good source of examples for my teaching.

lhaze avatar Dec 01 '19 01:12 lhaze