Random Abs is my first real attempt at creating a web application. It simply creates a new, randomized ab exercise routine each day. Leading up to this I was still in the beginning stages of self-learning some basic html, css, and some very, very basic PHP. Actually, the only way I knew to use PHP at first was to reuse my same header and footer file on each page.
In the beginning, nothing about Random Abs was dynamic at all. There was no database. There were no algorithms on the server. It was bad. But I did do a very good job at faking a larger system such that you would not be able to tell it apart from how RA works today!
My random routines at the time were generated (sort of) in an Excel spreadsheet. It was able to string together all my exercises in some random order, but being unfamiliar with Excel’s deeper functions I was at a loss on how to randomly choose how many exercises a routine should be comprised of. So, I found the first uniform objects at my disposal, some 9mm bullets, and numbered them with my desired distribution from 2 to 7. After selecting a bullet I would copy that many exercises into the next day’s routine.
I could go on about how things evolved, but it is sufficient to say that things are much better now. The site is database driven, routine generation exists within some PHP algorithm, and the daily routine is initiated by a cron job. The days of manually entering routines into a queued/scheduled WordPress blog post are long behind me now and I enjoy watching my little creation run itself.
Update – Version 2 is now complete
I hired a UX designer to make my life simpler this time around. I learned from V1 that much more than half my time was spent trying to get the ui looking nice and making design decisions/changes along the way. Having professional UX designs made putting V2 together sooo much better.
Now with an api-driven model in place (so much nicer than the PHP-generated html!!), I will be ready to move on to some mobile apps at some point in the near future.
Technology stack for V2:
- Server – NodeJS
- Frontend – AngularJS
- Database – MySQL
- CDN – AWS CloudFront