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