Developing a web app...using existing CMS or not

I am developing a web app(not for a client…but for me) and I have chosen not to use an existing platform(joomla, wordpress etc…)

I did that in order to have total control of the code and to avoid security issues, since these platforms often become targets due to the fact that so many
people use them.

I just wanted to hear some views on my decision to go for a custom-made cms.

Thanks

There are plenty of good CMSes available these days with bundles of plugins, so it’s not necessary to reinvent the wheel.

If security is the only qualm, note that developing something yourself doesn’t guarantee that it is secure. Security by obscurity is no security at all.

The advantage of CMS platforms with large communities is that there are lots of eyeballs looking at the code and vulnerabilities are often quickly identified and patched.

So, as long as you take a few standard security precautions on your server (like with any web application) and keep your CMS and plugins up-to-date, it’s unlikely that you will run into problems.

I agree with Force Flow 100%.

I’ve been a Drupal convert for about 6+ years but before then I used my own modular CMS that was snappy, reasonably secure and I had plug-ins for a calendar, blogging, news sections, banner ads, etc… The reason I decided to drop my CMS in favor of Drupal was that armed with the knowledge of its API and its theming system, there is absolutely nothing I can’t do with it. I can build websites, I can build standalone applications and tools and I can do them much faster than I could with my CMS. Best of all is that there is a massive community of people doing pretty much the same things I’m doing so I can ask someone if I have a specific and peculiar goal in mind and someone has probably already done the same thing at some point.

Security is good with a well supported CMS because there are working groups that do security. I just have to ensure that the server is secure and that I update the CMS as patches come in. With my choice of CMS (Drupal), I get an email from the website when an update is available, I open a terminal window and use Drush to update it and I’m done. In and out very quickly and efficiently.

I was thinking about it the other day… The website’s I build these days are so different from the ones I built in the early 2000’s. I can’t image building websites that provide the flexibility and maintainability without being able to depend on a useful foundation like Drupal.

Reminds me of this thread.

Yes, but I intend building ONLY this site…it is a web app, a booking system.
I am not a developer that makes many projects.It is a startup.

Great. My responses is the same. If you have a foundation that can handle users/visitors/customers, roles, security, url rewriting, theming and multilingual duties (to name only a few) and it supplies a platform for your custom code as a module, why would you want to reinvent it? If you have a platform to build on, you can concentrate entirely on the app itself.

NOTE: I apologize if this is looking like an advertisement for Drupal. I don’t mean it to, but it is the CMS platform I know best but the idea can be applied to any robust CMS with a well documented API.

A couple of years ago our team built a tool that engineers use to model fluid dynamics when they design water systems for everything from housing developments to entire cities. We built it in OOP/MVC and then wrapped it in a Drupal module so that it would integrate with a Drupal intranet we also built. This method allowed us to dedicate our time to designing and building the application and Drupal took care of everything else; page generation, navigation, security, user management etc…

You’ll do what you feel is right for your project obviously but I think it speaks to the flexibility of using a good CMS platform when you look at what others are using for sophisticated sites and apps. I find it telling that Java.net, Sun, Adobe, Linux Foundation, Google and even Digg are using Drupal when they obviously have much more technological resources than you and I:
http://websites.usandv.com/
https://drupal.org/case-studies

Good luck with your project.

My response is still the same as well. CMSes can handle a variety of projects, both big and small, and for beginners as well as advanced developers. The bottom line is that they are responsible for organizing and displaying content.

Just to throw an alternative into the mix, my CMS of choice is Wordpress.

Other popular free CMSes include Joomla and Concrete5.

Ok…then.
Suppose I integrate existing code with drupal or other cms.

How much time this will get…it is something that worries me.

Despite this being my own my project with no clients pressing for delivery I still have to finish it…sometime.

And secondly, it is not so big of a project that I could not make it entirely my own, plus that it is a valuable learning experience.

Well, what we’re suggesting is that you still write your code to do whatever it is you need to do and you’re still going to learn a lot about how to achieve your goals but instead of using a framework like Codeignotor, Kohana, Yii, Zend, etc… you’re using the CMS and leveraging its database and function abstractions to save you 100’s or 1000’s of lines of code. Choose a CMS that has a good API to build upon and then look at the communities that support the CMS to see discussions about what others have been doing for similar projects and then leverage their ideas or join in the discussions.

Yeah, it’s going to take some time to get up to speed but the benefits are more maneuverability and faster changes when you decide to make updates and add features to your project.

  • I’m in the final stages of moving a full blown CRM (membership management system) and website we built over a number of years into Drupal + CiviCRM. The custom system grew over the years and became quite complex. It had a lot of similarities to Facebook, Digg, LinkedIn, etc… but as it grew, it became more complicated to add features. Most of it has been running for over a decade but it’s in a time warp and making it responsive for mobile devices or integrating it with other social media or adding wiz-bang features was becoming onerous. Now that it’s about 75% migrated, it’s much, much easier to maintain and we’re already extending it with new features. By Jan 1, 2014 it will be completely migrated and everything will be run via the new system.

You have a point in what you say. There is an alternative though which I am considering seriously…
Ship the product as a it is being developed now-custom CMS-and later integrate it with Drupal…

Besides , in the beginning, no new features will be added, it will be simplistic…and the users will be few,making things easy.

I once floated that idea about a project with one of my co-developers because the project was going to start out small and then ramp up over time. I figured it would be really easy to knock together a prototype with html/css and a little php magic. His reply was if you’re going to eventually going to move it to the CMS it’s going to be a whole lot easier if you start it that way.

In retrospect he’s right because it takes maybe half an hour to an hour to initially set up your web environmnt, database, CMS, permissions, etc… and you can start wireframing the project right away. Coming up with a unique design that represents the startup and applying it to the CMS takes more time obviously but in the meantime you can see how things fit together.

It seems you are suggesting that I move to a CMS from now and not later.
I do not know what I am going to do after all…

As we speak, shipping the product is a top priority and anything that will delay this WITHOUT A SIGNIFICANT COST is not an option.
Time is of the essence in my case.
Later I can make the move-by hiring also another developer.

Yes, I’m saying plan and build for the long run. I’ve seen too many startups race to the start line and choke when they have to scale up and deal with actual volume.

The cost later will be remapping URL’s and importing user settings. If it’s only a few URL’s then that’s fine but if you create a user management environment of some sort you’ll likely have a lot of data that will have to be somehow exported from the old system and into the new one.

It seems to me that it’s quicker to set up a CMS, rather than write your own. Writing your own can take weeks or months.

I can set up a small Wordpress site with the WP e-commerce plugin in about half a day.

As I said I am building a booking systems where the admin section-the one my customer will handle- will have only 3 pages, mails, bookings, and profile settings

I do not know if you can call this a full featured CMS, I think it is less complicated than that.

What do you think?

I still think you would be doing unnecessary work.

Yup, absolutely.

I’ve been in this exact position and mindset about 5 - 6 years ago and I’ve come to find that I was wrong thinking that I could slap it together and then port it over as things ramped up. Now I always, always, always build with the expectation that the site will ramp up right from the start and needs to be on a solid platform.

For the bookings page, which in essence is a calendar I will be using a plugin, I am going to do similar about the mails.

Can you give me a solid example how a CMS can help me speed up the process with the above 2(calendar,mails). I just want to hear some examples.

Well it depends on what you’re doing.

Are you selling bookings? If so you’ll at least want to relate user id, with booking id, with transaction id. A decent CMS will natively have hooks that relate the booking id, with the user id, with the ecommerce transaction id, all under one roof. Every entity can talk to every other entity.

I’m not sure what profile settings are, is that user profiles? If so then again modern CMS’s have built in user profiles that can be as simple as username/password/email address or more complex where they take in any amount of information you could want or to the extreme where you have a full blown CRM that has a contact record for every user in the system with relationships between users like record a is the employer of record b and record c is the wife of record b.

Not sure what the mail part is so I can’t really comment on that.

I’m not saying this will make it easier as in you can do this in an afternoon, I’m saying that if you invest in time to build for the long run, it will be easier in the long run.

Edit: Also it would be way easier and faster for me because I know my CMS quite well and I could knock the framework that includes all the content creation and user management together in an afternoon and then concentrate on the meat of the project writing code to connect the data I need to do whatever I need it to do.

Your requirements are a bit vague, but here’s a whole host of booking-related plugins:[URL=“http://wordpress.org/plugins/tags/bookings”]

http://wordpress.org/plugins/tags/bookings