

Ask HN: What is the best development stack for custom CMS applications? - mertemin

I am a freelancer developer. I have a slowly growing list of Web applications that I developed for my customers.<p>Most of the applications are custom content management systems that are easy to use without requiring any technical knowledge, specifically built based on customers needs and requests. Existing systems like WordPress, Joomla etc are too complex for them with a lot of options&#x2F;configurations. There are alternative simpler ones, but still the requirements per customer generally do not align with what is provided. So I develop custom simple apps with which they can simply login to dashboard and add something, remove something, edit something etc. If the content of the website tends to stay the same for a long time, I go with pure HTML and CSS with small improvements with JS. These applications&#x2F;websites has varying traffic loads from 10s of users to 1000s of users.<p>I simply use LAMP stack, specifically CodeIgniter for custom application development, because I had a dedicated server back in time and CodeIgniter seemed simple, and easy to use and develop (I took a look at others, and tried some of them such as yii, but as I said I needed something simple). The cost for all is around 100$&#x2F;year, which is cheap.<p>However, these days with new platforms&#x2F;solutions like heroku, AWS, Azure, docker, I feel like there may be a better approach. I use ruby (Sinatra) and python (flask) for small side projects, but when it comes a content management I think they fall short. I know there are options like Rails, Django, but I am NOT developing full-fledged systems.<p>And the free option for heroku draws my attention recently, but the database could grow more than what they provide you for free. DigitalOcean could be another interesting alternative to my current development stack.<p>What are you guys using? Do you have any suggestions?
======
brickcap
You should stick with what you know. If you are comfortable with LAMP stack
then you should keep using that. I am assuming that a good chunk of your work
comes from maintaining what you wrote for a previous client and for these type
of jobs it is best if you follow a standard (which you define). That way you
won't have to think (as much) about your code before you start to make any
changes to it.

A vps provider like digital ocean or linode can certainly be a good choice, if
you also take care of hosting. With them you could set up a proxy server (I
prefer nginx) in front of the apps for your clients and serve them all from a
single vps. The traffic of 10-1000 of users is not too big but if you feel
that performance of an app is degrading you can always migrate it to a managed
hosting service like heroku. That way you can also charge different fees from
your clients based on how you are managing their applications.

------
lastofus
Depending on the client, I usually use either:

\- A customized Django admin interface
([https://docs.djangoproject.com/en/1.7/ref/contrib/admin/](https://docs.djangoproject.com/en/1.7/ref/contrib/admin/)).
Yes it's not ideal but it's often good enough.

\- A fully custom admin UI built from scratch (Python/Django).

I don't know why you don't think Rails/Django is an option when developing
"full-fledged systems".

For hosting, deploying with Ansible to a Digital Ocean VM has worked very
well. A $5/mo droplet is more than enough for light - moderate traffic.

~~~
mertemin
I had a typing mistake. Indeed, Rails/Django is for developing full-fledged
systems, but what I am building is really lightweight and simpler than those.

~~~
lastofus
I also use Django for very small/lightweight/simple websites. Django is very
good about staying out of your way if you don't want to make use of its built-
in magic. If you ignore the "batteries included" parts of Django (ORM, class
based views, forms, auth, caching, etc), it's still a good/easy/structured way
of routing URLs to a python function, which seems to be the appeal of Flask.
The function takes in a request object, and returns a string for output. Can't
really be more simple than that.

------
hnjake
Have you tried [http://buildwithcraft.com/](http://buildwithcraft.com/) as an
alternative CMS. I use it for all my client sites. The ability to make client
specific fields on a "page" basis and a templating system that stays out of
our way it is the best CMS I have worked with.

------
giaour
Most CMS's tend to be simple to moderately complex CRUD apps, i.e., exactly
what Rails and Django excel at.

It sounds like you enjoy working in PHP, so maybe try Laravel (Rails in PHP)
or Symfony (Django in PHP). Symfony even comes in a CMS-skeleton flavor called
Symfony CMF.

------
mattkrea
tl;dr Go with what you know and are comfortable with.

Any of those you mentioned could be used. Personally, I prefer a more hands
off framework such as Express (Node.js) or Bottle (Python) compared to
something like Rails.

Where do you see Sinatra or Flask fall short? That may help us in answering
your question.

