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!
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.
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
- 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 -
- Quick and Easy Deployment
- Mature Content Management System
- Robust Themes and Plugins Ecosystem
- Quickly Implement and extend Features or Functionalities with plugins
- No need to worry about security
- Vibrant and Supportive Community