KamaLabs

Concrete5 Plugin

Bappenas

Bappenas is abbreviation of "Badan Perencanaan dan Pembangunan Nasional", in English it means "National Development Planning Agency". It is a government institution with the same level of ministry. Its main purpose is obviously to make and evaluate planning for Indonesia's national development, as the name suggest. The scope of the project was quite big, here are some of it:

Rebuild the old Drupal based website using a more modern Concrete5 CMS

Their old website was made using an old un-maintained version of Drupal. They didn't maintain it very well because the don't know how, the developer of the old website could no longer be contacted for help. So they decided to hire a new developer to build a completely new website. The choice of Concrete5 CMS was made by them. They thought that since their old website use a lot of block styled component, usage of Concrete5 would be a bliss since Concrete5's main selling point is it's ability to manage the website by drag-and-drop-ing block component. To match all the requirements of the new website, we made several custom built plugin for Concrete5 CMS.

Migrate massive amount of data from the old website to the new one

The old drupal based website already had abundant amount of data both structured and unstructured, either inside the database or in downloadable PDF/DOC/JPG/etc. files format.  We had to migrate all those old data to the new Concrete5 website. There was huge amount of work of mapping Drupal database structure into the Concrete5 database structure. We made a lot of tests to validate each migrated data.

Implement a mailing newsletter system and integrate it to the website

They asked for a newsletter system which could be integrated into the website. We implemented it using PHPList and integrated it to the Concrete5 CMS.

Implement an SMS gateway system and integrate it to the website

In addition to the mailing and newsletter system, they also asked us to integrate the website with their ready-to-use SMS Gateway system. They want every comment/message to a department of their institution be notified via SMS to the corresponding official. For this task, we create a special plugin for concrete5 CMS to communicate with their Kalkun SMS Gateway API.

Implement and integrate an independent search engine system

Concrete5 CMS doesn't have stellar searching system. All it does is just a simple text search throughout it's own database. No ranking algorithm, no indexing. It's also unable to read anything from the plentiful amount of downloadable PDF/DOC files. Bappenas need it so much but there's no way to customize and extend Concrete5's searching functionality. Futhermore, Bappenas has many independent information system with their very own functionality such as data library system, GIS, etc. Each system has independent basic search engine of their own. This is also a problem for them. They want a unified search engine system which is able to crawl and index all of their internal data bank as well as their public web page. So, we built them one using Apache Nutch as the crawler and Apache SOLR as the indexer. We constructed a separate specialized server infrastructure for this search engine system.

Project Challenge

I am not the actual contractor of this project. I'm just a subcontractor. In the beginning of the project schedule, the main contractor couldn't handle the project very well since they didn't have the resource to do the work. Beside, they're not exactly an IT company, they're just a general contractor company. They thought that this project is not so complicated (IT-wise) and they believed they could just find someone who can do the entire job for them. They're wrong. Months goes by without any progress from them. That is where they contacted a friend of mine and myself for help. We started by re-evaluating the project requirements. We wanted to make everything clear between us (the subcontractor), the main contractor and the client itself. After that we realized that we'll gonna need more people into the project, so I convinced the main contractor to hire more people to join the project. We did it, after that, I was being promised that they, as the main contractor, would appoint one of their man as the project manager to coordinate us all. It turns out to be an empty promise. They didn't really do the role as project manager for us. So, we're (the subcontractor team) ended up being scattered and un-coordinated. Since I was the only team member who was a full time freelancer, I was the one who has the most available time to meet with the client. The client thought that I was the project manager. More or less, I took that role as the project manager indirectly.