# Introduction

# Philosophy

We aim to keep this project as simple as possible for our users and for developers. This leitmotiv is reflecting in all our decision.

You don't need to be an expert in X Y Z to start tweaking bobby.

  • Why bobby uses Django?

    • First of all, I decided to use Python for the web application to keep the same language as other components. Python is developer-friendly and very easy to grab.
    • Django provides us strong stability. It might not be the easiest python web framework out there, but it is here for more than a decade. When I was searching for the framework to use, I tried many frameworks and with Django I found a lot of resources created 5-10 years ago and they are still relevant today, or some little things changed but not as many. Thus, it has a huge community which is here for a long time.
    • The documentation is one of the best from my point of view. I mainly disagree with the fact "django is hard for beginners". If you have some background in MVC or something else, you will quickly understand the bobby code related to django.
    • Django is all batteries included. We don't need to make X Y Z libraries working together to handle common web tasks with all the implied complexity.
    • Conclusion: because "It takes care of much of the hassle of Web development, so you can focus on writing your app without needing to reinvent the wheel. - Django".
  • Why bobby doesn't use Vue/React to consume a Rest/GraphQL API?

    • Because we don't need it, it adds complexity without bringing enough benefits for bobby. Our views are generated by Django and are improved by Javascript web components (vanilla) or VueJS if it simplifies the code. It works great and we won't have to spend weeks, months to refactor when Vue/React will change.
    • It could be handy to have an API because it is consumable by different platforms. We could do a mobile application. Again, we don't need a mobile application (at least for now) because our users interact mainly through Telegram and rarely with the web application. Thus the web application is enjoyable on mobile phones. API endpoints could be introcuded to interact with the outside world but won't be used for every user interface.
    • The project began with a rest api consumed by VueJS. I quickly decided to switch with the old fashion because it was taking me too much time to develop it. Don't forget, the web application is not frequently used and bobby is composed by way more than a web application.
    • Conclusion: the benefits of this architecture are not for bobby. Thus, it is not because the front end does not consume an API for every user interface that we cannot use it with parsimony. We can benefit from the best of the two worlds and actually we do.

# Used technologies

Non exhaustive list of used technologies.

# Back-end

# Front-end