Suggestions on CMS and tech for company portal

The company I work for needs me to create a customized portal for some particular needs. For my part, I have to make it extremely easy to use, easy to add new features, and maintain for future code edits, bug fixes, feature additions, and style/template updates.
It will have qualities of document management, uploading/downloading, managing people with various access levels and information they can see, forms that can be filled out and used in workflow (approvals etc), data management (multiples databases of many different kinds of data and reporting). The list goes on.

While it may be true that traditional all-in-one portal systems and document managers and Intranet network software can do some or most of this stuff, the fact that they have dozens or hundreds of other features in there means it does not meet my requirement of being easy to use, as the interfaces are filled with features we don’t need. They also tend to lack any way whatsoever to add in my own custom data management and forms. Sadly, a lot of today’s stuff seem like toys, the “Facebook for the enterprise” crap that doesn’t help anybody work. Instead people try to earn prizes for being most active, or getting the most “likes”, or posting too much about what they ate today.
We aren’t looking for micro-blogging per-se, or comment streams. The fact is I’ve researched probably two-dozen corporate intranet suites and none do what we need, so the time has come to build our own in-house portal.

I am most comfortable in the PHP/MySQL stack and this portal will be hosted on a CentOS dedicated server on Apache. Server requirements are minimal, as the portal will only be accessed by about 50 people so I’m not worried about performance in that respect. I still need the entire system to be heavily secured though.

I am looking for suggestions on what framework to build the portal on. I want to stay away from Wordpress, as I can’t use their administration area properly for my needs. I actually need to build the administration area myself so that each person who logs in will get only the stuff they need, and it is not focused on “posts and pages” like Wordpress is. I need a framework that is solid and will let me build a 100% custom solution, yet provide all the foundation I need for user control, database and file access, URL management and routing, templating, Ajax, and API, etc.

I have some experience with Kohana, MODX, and Joomla, and have only played around in Laravel, Phalcon, ProcessWire, SilverStripe, and other similar CMS contenders. But again, I want to stay away from the “posts and pages” type CMSes and work more with a framework where I do everything myself. I actually need to build the frontend and backend for our users. This means that the backend of the framework itself is only accessible by myself, or the programmers, not any users.

I think Phalcon is off the table because my host doesn’t have it. I have not used other big name frameworks like CodeIgniter or Drupal either.

Along with the framework, I want to be able to use source control on the files, SCSS, a URL-based API that can communicate via command line or scripting tools, Ajax interface and web sockets (basically being able to update the screen if something changes, use chat etc). I want to be able to use 3rd party modules without a lot of pain to integrate them, so easy to use Composer and Packagist to find cool stuff, tho I don’t want to depend too heavily on 3rd party tools, they will be helpful when doing things like outputting reports, PDF generation, tables and charts, file management (we work with a lot of CSV), and so on.

While sometimes database abstraction can be helpful, sometimes I’m too annoyed by their limitations. I don’t mind if the framework has some kind of ORM, but it better be able to handle anything I want to do, and in times of need or simplicity sake (small projects maybe), let me bypass it altogether. Whether it has XPDO or PDO or ORM or whatever, Eloquent, I just want the abstraction to make sense and be easy, not just another thing I have to spend as much time learning as I would just using strait PDO directly.

OK, I hope that helps. My suspicion is that this project would be best suited to the likes of Laravel or its peers like Symphony, CodeIgniter, or other.

What do you guys think the best option would be? Thanks!

It sounds to me like you’ve already decided against a fully featured CMS like WordPress or Drupal or Joomla - just note that they are far more customizable than most people think, if you’re willing to write code in their arena.

If that’s the case, and you’re hunting frameworks, then I’d definitely look into Laravel. It’s one of the most interesting PHP frameworks out there, in my opinion. You’d have to build both front and backends yourself, but it’s a good base to start off of. I’m not the most experienced person with it, but between it, CI, and Symphony, I’d pick Laravel - although my guess is any of them would work.

One of the best pieces of advice regarding frameworks I’ve heard is “Pick one that you’re comfortable using and then start working” essentially - don’t dither around wondering for weeks, then learn bits and pieces of various systems, then decide… then change your mind. I do that too much - I can never decide, and I want to learn… but sometimes that gets in the way of just doing things!

Reading through your list of requirements I think you’re heading down the custom route, probably using a PHP framework.

If you used Codeignitor then ExpressionEngine is worth a look, at least as a base for managing content streams and data. As EE runs on CI then you can easily extend with 3rd party addons or write your own.

document management, uploading/downloading,

  • yes, using an EE Channel means you will be able to easily classify, organise documents as well as relate/reverse relate/sibling relate them to other content types

managing people with various access levels and information they can see,

  • yes, EE does that, you can restrict access to content types per member group

forms that can be filled out and used in workflow (approvals etc),

  • yes, EE allows to to create front end add/edit forms to collect/edit any sort of data you have

data management (multiples databases of many different kinds of data and reporting).

  • if reports are made up of entry data then yes you can knock up some templates to show datasets for output in the browser or CSV export etc.

Ya I was leaning toward Laravel. I just want to get work done. Sometimes it feels like you spend more time reading some tool’s documentation than actually getting any work done. I’ve sometimes spent hours building some functionality only to randomly stumble onto the fact that the tool already had the function in some obscure method nobody documented.

I am willing to learn a decent framework if it does everything I need and makes the project, and future changes, easy enough to work with.

It’s interesting that you played around with ProcessWire, and still you think that it’s not suitable for this. It actually makes all the sense for what you want since the tree of “pages” that you see in the admin are not more than nodes of completely custom and flexible data attached to a unique URL. They are called “pages” for simplification, but they are a lot more than the “pages and posts” that you say you don’t want, they ar actually the way ProcessWire uses to keep data in the database, and they don’t have to be even visible. PW is a framework before being a CMS, the CMS is actually entirely built with the framework, so you can do anything either using the CMS interface or not, while still taking advantage of user management, security, and so on. I think you should have another look at it.

I actually began this portal project on ProcessWire a few months ago and got relatively deep into setting up all the pages and menus and login system, but I kept running into API issues and couldn’t do some of the things I needed with menus and submenus and auto-generating them.

Obviously this could be because I wasn’t as knowledgeable on the API, but I wasn’t able to find the solution either, so I got stuck on relatively “basic” needs when dynamically generating menus and submenus, trying to deal with current page, parents, siblings and children. It got a bit messy for me.

I did like the framework alright, but I’m also using Wordpress, MODX, and Laravel so I’ve only got so much room in the old noggin for another framework to learn!

The big difference here is that Laravel and other frameworks have no administrative backend to get you started, while PW, MODX and other CMSes give you a backend to speed things along.

Hm, that surprises me even more… The API is actually ver straight forward for what you described. It is jQuery inspired and you even have methods like $page->children, $page->parent, $page->siblings and so on for Traversing the pages tree.

Im good with Laravel + Twig (Blade doesn’t suit well for me)

a simple framework would be Coneigniter but if you want o t be extensive try, Symfony 2 or Laravel… or even just plain php, i sometimes use plain php.