Skip to main content

Why did I choose Wordpress?


Why did I choose Wordpress for developing a School Management System on Subscription based SaaS Model?


I have some experience in Wordpress Plugins Development, and have been developing quality applications using wordpress for quite some time now. I have even built a fully functional Accounting System on Wordpress. Checkout some screenshots of some of my wordpress based web-applications - http://www.tallydev.com/hello-world/

A little History
When I had started my IT Consultancy Company (Adore I.T. Services Pvt. Ltd.), some of my clients were looking for cost-effective, quality web-applications with modern UI and UX. I had .Net(C#) Desktop Application Development experience and did not know web-development. I had bagged a project and had very little time to develop and deliver. I wanted an easy solution – a low barrier entry. After some initial research, I figured web-applications can quickly be built on top of Wordpress as a plugin. Wordpress is already providing a CMS, Users Registration/Management, Roles/Permissions, caching, Routing (SEO Friendly URLs) etc; so, some development time can be saved as I would not have to develop and maintain those modules and I can just focus on developing my client's requirements. As added bonus I can also give them white-labeled Admin Control Panel if I want to (You can hide eveything Wordpress related from its dashboard). Since Worpdress is a popular open-source CMS I also would not have to worry about its security if I keep updating the website from time to time and follow Wordpress's development guidelines and standards.

Continuing with the above thought, I started developing applications in Wordpress. And soon I found out that Customers don't want to know about Technology Stack as long as I meet their requirements and specifications!

Entreprenure's Dilemma
I am sure every startup founder knows how hard it is to find cost-effective and skilled developers. The reason for seeking cost-effective devs is that some of us entreprenures start with empty pocket, a laptop, an idea and passion. Some of us don't have proper marketing skills or salemanship to woo VCs; still we try to convert our ideas into reality with whatever resources and skills we have. So, we hire freshers to save on salaries and train them ourselves.

Team Building and Training
Entry into Wordpress development is very easy, and I had trained some freshers in PHP and Wordpress development in my company. Most of them quickly learned, became productive and started contributing in projects. My observation is - one can easily start from nothingness to build a productive team with effective chain of KT in less time if they pickup something easy to start with. Team will catch up on other related skills like SQL, jQuery, CSS etc soon as they start working on projects. Learning with motive is quite effective.

School ERP Case Study
When I had started working on this School ERP for a company, I knew that I would have to build a team of freshers, and train them to become productive as soon as possible. Choosing anything complex would have resulted in considerable time in training and getting them ready for contributing in the development process. Ideally, I would have preffered something on the line of Laravel/Django/RoR/Meteor for development of the product. But this was a large project and required team effort. Finding suitable candidates for complex tech stacks in Kolkata would have been a costly affair, not to mention the release timeline would have escalated as those extra modules (Users Mgmt, Roles & Permissions, CMS etc) had to be developed from scratch. So, I chose Wordpress for its low-barrier entry into team-based application development.

Move Fast and Break Things
Facebook later changed their motto to "Move Fast With Stable Infra" but for startups “Move Fast and Break Things” work. The general idea is, if you don't release your product/service in the market soon, then somebody else will with FAT VC funds and with elan. Such was not the case with the School ERP, still, the development strategy was to build the application with agile methodology in multiple small sprints and continuous integration. Plan > Build > Test > Deploy > Repeat.

Optimization comes later
My another strategy based on experience and previous learning had been not to optimize code before exhausting other venues i.e. increasing platform resources and its optimization. MFBT motto is quite good and optimization can always be managed later - prior to releasing the product or when it starts maturing.

Server Space and RAM has become cheaper now a days (Amazon/Google App Engine/Microsoft Azure/Linode/DigitalOcean). So, if your application is struggling in terms of performance you should scale the application first, vertically or horizontally. Code Optimization before scaling may have some serious consequences. You may have to undo your optimization while scaling. So, why bother! Ideal scenario is to continue with the quick development cycles and add as many features as you can within your short development sprints. Once your application becomes mature and starts attracting real traffic, you will have real data and traffic for Stress-Testing and code optimization.

Optimization and Stress Testing strategy should be developed along-side application development and susceptible codes/modules/sections should be marked continuously for optimization later on. Scalability should also be considered during the devlopment of the application.

For School ERP I had built a secure platform, replaced apache with nginx and removed un-necessary services from the VPS Server it is hosted on. Yes! I had optimized - the platform; not the code.

School ERP Features and seamless integration with Wordpress
Apart from the basic features and requirements, the application has some modules which would provide public facing contents; generated inside the application i.e. News Management/School Newsletter , Notices/Circulars , School Events , Career and Counselling , and Communication Suite . These contents has to be publicly available on a school's website and this is where Wordpress's benefits comes into the fore. These contents can be easily managed through wordpress's custom post types without writing any code.

The application would seamlessly integrate with any wordpress based school's website and use any plugins available in the Wordpress ecosystem. For example, School's Discussion Forums can be managed by a popular wordpress plugin bbPress; School's social community for students, teachers, and parents can be created with buddypress; or comments spamming can be checked via Akismet. We can also implement more features quickly - without writing any code - just by installing plugins available in wordpress plugins repository (having thousands of community approved plugins).

Implementation of Advanced Technology
It would have been multi-lingual. For School Dashboard I had planned to create a Node.Js based middlewere with realtime data. For Application's communication suite, eJabbered XMPP Server or RabbitMQ was in consideration. Application would have used a host of latest Advanced Web Development Tools and Technologies.

Next-Generation Migration
My Next-Generation Migration plan was to bypass the wordpress completely and convert the application into a set of RESTful APIs (perhaps Node.js ) so that these can be consumed by any client (Android/iOS Apps, or Angular/React based webclient). We would have used Heroku or developed our own APIs Server.

Present Technology Stack (Implemented/Under Consideration) – PHP, MySQL, Custom MVC, Wordpress, HTML5, BootStrap3, Less, jQuery, jQueryUI, jQuery DataTables, ReactJS, oAuth, JSON, AJAX, and lots of jQuery/BootStrap Plugins, Node.js, eJabbered/RabbitMQ, SMS APIs, Ubuntu 14.04, ElasticEmail, CloudFlare SSL Certificates,

And it all started with - Wordpress
Without it I would have to develop
- Media Management
- Easy and SEO Friendly Routing/URL Structure
- HTTP Requests
- Users Registration and Activation
- Users Management
- Roles and Permissions Management
- Transliteration
- Shortcodes
- Widgets
- Hooks and Filters
- Database Management
- Email Functionality
- Data Serialization and Retrieval
- Data Sanitization
- Ajax Processing
- Tasks Scheduler (Wordpress Cron)
- Forum (bbPress)
- Social Network (BuddyPress)
- Spam Prevention (Akismet)
- Automated Database/Files Backup & Restore (Multiple Plugins)
- and lots of other features via its 42,579+ plugins


Wordpress's Features -
- Simplicity
- Quick and Easy Deployment
- Mature Content Management System
- Robust Themes and Plugins Ecosystem
- Quickly Implement and extend Features or Functionalities with plugins
- Self-Updating
- No need to worry about security
- Vibrant and Supportive Community 

Some Screenshots

Comments

Popular posts from this blog

Installing Oracle 9i on RHEL5. (x86)

I must warn you that this article is as it is. It worked when I was installing the combo - a long time ago. I am not sure about the links available in this article. I am not maintaining this article anymore, (other than sprucing it up a bit for better reading). I am completely out of touch with RHEL or Oracle for that matter. Still, dont lose your heart yet. I am sure, with proper searching using the big brother - Google, you will find lots of more information relating to your work to help you finish what you are doing. Foreword Recently I joined Sqlstar International for my Oracle DBA course. Everything was going smooth. I completed my SQL Fundamentals with Oracle installed on Windows in my pc. But when classes started for DBA Fundamentals 1 I was at loss, as in my institute oracle was installed on Redhat Linux platform. I could have done all the solution of the text on windows but I decided to configure my own Linux box and install oracle on it to simulate the class environment.

Datatables and Wordpress Integration problem solved.

Note: Download a working demo plugin from this project's github repository . Like other wordpress developers, I had also faced the problem of integrating datatable (server side processing) with wordpress. I tried every tips, tricks and multiple ways to solve the problem, but couldn't do it. My ajaxified functions of the wordpress simple dint work. I din't have much time and had to finish a small project on time. So, I decided to skip it and go through the developer's way : the plugin developer had suggested and implemented. I dropped the required php file with some related modifications and called the url of the php file in the datatable options in my project. It worked after few small hiccups. I wasn't satisfied though, as i wanted the wordpress centric solution, instead of using some drop-in file to complement the functionality. I had vowed to look after this problem whenever I could get some time. (You may visit the url http://www.bearinghouse.net/orde

Starting up and stopping Oracle Listener and iSqlPlus

Starting up and stopping Oracle's Listner Service and httpd service for iSqlPlus. I know it's a lame, but what the heck. Someone may be benefitted. In the last post I installed Oracle 9i on RHEL5. But my Oracle agent dint startup. Which mean I have to startup and stop aforementioned services manually till I could configure the Agent.  Well the commands are quite simple. To startup Oracle's Listner Service - $lsnrctl start To Stop the listner- $lsnrctl stop To start the httpd server for iSqlPlus -  $ORACLE_HOME/Apache/Apache/bin/apachectl start To stop the httpd server for iSqlPlus -  $ORACLE_HOME/Apache/Apache/bin/apachectl stop I have made two shell-script for these operation, just to ease my finger from over-typing. These files and their contents are: isqlplusstart.sh #[Content] lsnrctl start ORACLE_HOME/Apache/Apache/bin/apachectl start #[End Content] and isqlplusstop.sh #[Content] lsnrctl stop ORACLE_HOME/Apache/Apache/bin/apachectl stop #[End Content] I made them execu