In my day job I work as a backend developer using PHP with the Laravel framework. While I enjoy my work, it's not the same as doing programming for a hobby, which is why I like working on side-projects. With side-projects I get to decide how the product will look like, which technology I use and I also get to do front-end development.
How I got the idea for my new project: I'm an avid language learner. Apart from English, I also speak German, French, Mandarin, Korean and I'm learning Spanish. While watching my children play a game I got the idea to program that game and give it a language learning twist. I might write more about it in another post.
In this post I'm going to concentrate on the technology I chose. Although I do side-projects for fun, I also see the benefit they have for future job applications. One gets to learn new technologies and it comes in handy if a company asks one to share some personal code for evaluation purposes.
So I think a side-project should use technologies one is already familiar, but one ideally also adds some technologies one wants to learn.
Ok, here's the list:
Laravel: Of course I chose this, because it's what I already use on a daily basis. In my previous Laravel side-project I used blade views for displaying the data. This time I'm going to create an API as we do at work, so that front-end and backend are separated.
GraphQL: I'm not sure yet about this one. I've never done anything with GraphQL, but it's something I would like to learn. So at the very least I'm going to find out if GraphQL can at all be used for my project or if my project is too small for it's use.
VueJS: I've used a little bit of VueJS before for a simple dashboard I created, but there is definitely still a lot to learn. I'm also a bit familiar with React. But I like Vue better. Vue integrates nicely with Laravel so it's what most Laravel projects seem to use (my company does).
TypeScript: I've used TypeScript a few years ago with an AngularJS project. I think it will help with keeping my code clean. It will be my first time to use it in connection with VueJS.
Tailwind: Never used it, but I think it will help give some structure and consistency with the layout. Looking forward to learning it.
Deploying with Docker: At first I was excited about Laravel Sail as it runs Laravel in a Docker Container. But then I realized that it doesn't setup a webserver, but just runs using the PHP server and hence it's not to be used in production. So I'll need to create my own Docker container. I'm most familiar with Apache, but this will be a good chance to learn to work with Nginx.
I plan to write more about how things go with developing my side project and what I'm learning, so in order to stay posted, please follow.