Build An App from Scratch (2 Part Series)
Welcome back guys ! Last week, we dove into what makes an app successful (well according to me but still, you get the point) and I've been since inspired to start a series about how to build a project from scratch. (wow, how original)
You've seen tons of excellent video series or written tutorials, I'm sure but I hope we'll have a different course of action here. I really want to show a methodology (that can always be perfected) more than a classic monkey see, monkey do type of thing which means that even though we'll be bringing our baby to life, I want you guys to work on your own little monsters while using what you'll hopefully learn from here.
We all have tons of ideas for a cool side-project, something to train yourself, something you want to grow as a business, something to show what you're capable of, etc.
Sometimes, your "creative well" might be empty because of whatever reasons and you can't seem to start even though you're confident about your building process and your skills.
I personally used to get overwhelmed at the beginning of projects because ideas and suggestions would fly all the way and I would lose any vision I could've had. Even worse, I'd often find myself discouraged or bored by the task after a while and kept on thinking instead of just doing. (Okay Shia LaBoeuf gif, we get it)
Alright, let's get into it !
Okay, we're starting with a tough one. Sometimes it's just a functionality for an already existing platform. Other times it's a personal blog because you want to practice CRUD and build a following. You can even challenge yourself with an ambitious side-project like a video game or a Rabb.it clone (Yes, I'm still upset). Heck, you might even go with that's never been done before.
"Okay I get that but how do I pick one ?" Great question ! Like I said in the previous article, a successful app is an app that fulfills a need. What do you need ? Practice ? Money ? Is there a problem that you have that you wanna tackle ?
For the sake of the example, let's say I want to build a blog.
Well, obviously for me but also for an audience. What is my blog about ? Let's say it's about... let's say tv-shows. I also want my blog to have wiki-style records about the shows I talk about and let people write their own critics in those pages.
So my audience is probably split between either people googling a tv show and wanting to read reviews before grabbing popcorn, or huge tv nerds that want to contribute and share their knowledge.
We can take it by increments. A blog shouldn't be a huge feat in itself but I want to really take my time to work on some special features and ease up the contributing process.
I don't have much experience writing reviews so probably starting with an easy and classic CMS and from there teasing the wiki, building it and have my community help along the way.
(Who knew I was that good at role-playing 😮)
I guess that with taking my time and working just a bit every day on it while using some tech I never used before, it should take me 3 weeks to get the CMS down and for the rest we'll see ? Yeah, that sounds doable.
A mistake a lot of people do when building stuff is focusing too much on the design early on.
A good advice from Adam Wathan and Steve Schoger in their book Refactoring UI (that I can't encourage you enough to buy, seriously best christmas gift you can get after a Switch with Pokémon Shield), is to start with a feature not a layout as an app is an addition of features and not a top navbar with a 50px height and a side bar on the left.
I'm comfortable with PHP and the Laravel framework so I'll probably stick with that for the back-end.
For the front-end, Blade (the templating system that comes with Laravel) is great, so we'll add a bit of Vue for the reactivity. VueX naturally comes to mind then for the state management. (If you have no clue what I'm talking about, feel free to ask me some questions, but we'll probably review all of these in due time.)
I started using TailwindCss as a framework so I'll go with that too to learn a bit more about it.
Seems like a good starting point so far.
The good thing is that we already know what kind of direction we want the app to take with the wiki but so far we've only talked about the shows themselves but how about the actors, the crew behind ? (no we're not remaking IMDB wink wink)
What if I want the users to have a list of shows they wanna watch ? How about the shows they've seen, the ones they're currently watching ?
Should I notify them when a show they're interested in is airing ?
Am I technically moving my app for any random blog to something bigger ?
Questioning yourself about what your project should look like in a few months, years is a great way to motivate you and prevent you from quitting. Reread and enhance this section as the ideas come, make a Trello board of your ideas to keep track of where you're at in your journey (we'll talk about that in the next article).
When planning for features reread your answers to stay true to your initial vision. We don't want our creation to be Frankenstein's monster.
Okay so it actually was 6 questions but I swear I'm good with numbers.
You might be asking yourself now, okay that's great but what do we do next ? Now, here's the kicker : I chose a simple blog project as an example cause obviously... (long pause) nothing, no excuses here, I'm lazy and want you to pitch in !
What I want from you guys is to actually ask yourselves these questions, write the answers, and mention me with your project idea on twitter (or write it here down below in the comments) !
I'll pick one of these ideas, and we'll start bringing it to life together. It could be anything really, could be an e-commerce website from scratch, some really cool idea that could help a community, a nice portfolio idea, whatever really.
The whole point is to go from the answers to the questions from above, creating the Trello boards, documenting the whole process on twitter bit by bit and then write about it here every Saturday.
All the code will obviously be open-sourced and I'll take everyone's recommendations, tips and suggestions into account and answer as many questions as possible. As I hope some of you will learn from this, I want to learn from you guys too !
So there you have it, see you next Saturday for the next part ! We'll be talking further about the conception part, before tackling the coding part a week later.
Can't wait to hear from you ! How do you guys usually work ?