Laravel is a great framework that makes web development quick, easy and elegant. I’ve been using it for approximately a year at work and absolutely love it! There are plenty of extremely well-made packages to help extend its functionality from better handling of form request data, to implementations of multi-factor authentication.
But I’ve yet to find a package that adds a blog facility to a website. I’m not a fan of pre-packaged blog/CMS platforms such as WordPress and Drupal, so always prefer to roll my own solution. So, why not use my new-found knowledge and appreciation of Laravel to give something back that I’m passionate about?
Where to start?
Planning what I want the software to do!
I normally use something like Trello or YouTrack to create a bunch of cards that break down the tasks of building the software. This time I want to try ClickUp as a new project management tool.
These kinds of services offer a great means to document exactly what the software should do along with your progress. Before I get started with some code, I need to make some decisions about:
- My development environment
- How much of my free time I’m willing to spend on the project
- What features I want for the first release of the software
The development environment
I normally develop my sites in a Linux VM, to ensure I’m developing in an environment as close to the server my site’s are hosted on. My VM is playing up lately and being really slow, so I think I’ll use Docker in Windows.
I’ll need to do a few things to get up and running:
- Install Docker on Windows
- Set up a docker environment that has…
- Web server
- Database server
- App server
- Build (NPM) server for JS and css
- Test that this setup works
- Install a Laravel application, from which I can develop my package
That works quite well for a few cards to get started.
How much of my free time to give?
This is always a tough one for me – I get engrossed in my projects, but as I’m coding for eight hours a day at work, burn out is a real risk. For this reason I usually limit myself to only developing side projects on the weekend.
That gives me around 10-15 hours a week to work on the blog package. I want to get it done within no more than a couple of months – that’s an absolute maximum total of 120 hours, with a more realistic 80 hours of time to spend on version 1.0.
Ideally, then, I probably want to line up about 60 hours of work, to give some slack if I get distracted or stuck on anything.
The minimum viable product
It’s far too easy to pile features on top of features on top of features when starting out on a software project, until the list of things you want to do seems like an impossiblity. This is daunting from the onset and can lead to a severe lack of motivation and a sense of failure when the project inevitably burns out.
Instead, it’s important to think of milestones. That first milestone is probably the minimum viable product. It’s the absolute minimum needed to have a complete product.
What does that mean for a blog?
Just have it able to make posts, right? Maybe. But that’s no good – you might as well have a static website at that point. So, what’s needed?
- You need to make posts
- People should be able to comment on the posts
- Posts should be categorised
That’s about it, I think. But what about some of the ancillary things? It’s easy to miss these. Features such as…
- Require a user to log in to make posts
- Let people filter by post category
- Several design elements that make writing, reading and commenting on posts enjoyable
So, I think I have enough of an idea to start making some cards. To ClickUp!
Stay tuned for more progress on this project!