I started a new project

I stared a new project at home, and I am really into it.
It’s a food-photo-sharing website. I intend to have a beta-release before Christmas.

I am using django in the backend and angular.js in the frontend. I really wanted to try out angular for some time now. At work we are using djnago, but not angular, and I found that django really needs a good frontend framework to complement it – and somethig more advanced than jquery. So, I am going to try out angular to see if it is as good as they say it is, and to see if it plays nicely with django.

I think that django, although a really powerful, and beautifully designed web framework, is not strong enough when it come to frontend. Why? Because in order to have a decent user experience, you will need to write a ton of client side logic, and that will be javascript. There is no going around that. And this client side code will have a thousand connections to your python-generated server-rendered html (e.g. specifying a div class in django, and referencing it from javascript). And it is hard to ensure that those links are not broken. (Who has unittests to test if a div is called the same in python and in javascript?). All in all, it is impossible to have all the ux logic in the backend, it is bloody hard to have it half in the frontend and half in the backend, so the only logical option remaining is to move it all to the frontend. And that’s where angular comes into play.

So, my technology stack will look like this:
– frontend in angular.js
– rest api in django
– database connection – comes with django for free
– admin interface – comes with django for free
– async tasks (e.g. creating thumbnalis) – celery