The Best Tech Stack for Your Next Side Project
Tags: react, docker, webdev, javascript
Published: 2024-04-16 21:45:42

I launched my startup [eatlink.gr](https://eatlink.gr) in less than six months while managing other projects. Here's how I did it and the technology stack I used.

### Simplicity is productivity

Yes, simpler code leads to a better final product and quicker shipping.

Being simple involves choosing technologies that streamline your workflow, even if it means giving up others that could complicate your coding process.

### Design your Database first

The most important thing when creating software is designing your database. Begin by spending a significant portion of your time considering the features your product will have.

Create a solid foundation and refine your database as much as possible before you start coding. While making changes to your database will be inevitable, the fewer changes you make, the faster you can launch your project.

### JavaScript & Create React APP

Using Create React App with JavaScript sped up my development. While TypeScript could be beneficial in a larger team setting, for solo work creating simple and reusable components is more than enough. Just keep your components small.

Remember, you can always refactor your code as your project grows. Additionally, many TypeScript users often resort to using the `any` keyword to bypass persistent errors, which essentially defeats the purpose of TypeScript.

### PHP & Laravel

Everyone here might be surprised, but PHP, especially version 8.3, is really fast and simple to use. Laravel eliminates a lot of unnecessary work for me.

**What about Python, GO, Rust, or Java?**

Python is a great option, and with Django, you can easily replace Laravel. GO, Rust, and Java don't offer many ready-to-use solutions. In most cases, you need to code a lot of things yourself, and if you don't, these languages are much more complicated than PHP or Python.

**And what about scalability?**

Go, Rust, and Java can be scalable, but remember, you haven't made any money yet, and you might be trying to fix problems that may never even arise.

### CSS Framework

No, I didn't write the CSS myself. In the admin panel, I use Material UI, and on the frontend, I am using Bootstrap. The application may look a bit simple, but with a few tweaks to the `theme.js` of Material UI, it can look much better. Why spend hours designing when you can remove thousands of lines of code with one `npm install`?

### Docker

Yes, I have used Docker. Docker might seem complex initially, but I have created several boilerplate Dockerfiles for PHP, React, and NGINX, which I reuse in all my projects. These Dockefiles simplify the deployment process significantly, making it 10 times easier. You can deploy to any server environment with just one command: `docker compose up --build`.

### Deployment

The only complex tool [eatlink.gr](https://eatlink.gr) uses is [Kubernetes](https://kubernetes.io/). However, I have deployed my cluster on [Vultr](https://www.vultr.com/) instead of [AWS](https://aws.amazon.com/). [Vultr](https://www.vultr.com/) is much more straightforward and eliminates many layers of abstraction. You can deploy a [K8S](https://kubernetes.io/) cluster in just a few minutes.

### Conclusion

Launching a startup like [eatlink.gr](http://eatlink.gr) quickly while managing multiple projects is possible with the right technologies. Using simple, productive technologies like JavaScript with Create React App, PHP with Laravel, and efficient CSS frameworks helps streamline development.

Additionally, tools like Docker and Kubernetes, particularly on platforms like [Vultr](https://www.vultr.com/), simplify deployment and scalability. The key is to start simple, select the right tools, and scale as needed. This strategy saves time, conserves resources, and enables quick adaptation to market changes.

Thanks for reading, and I hope you found this article helpful. If you have any questions, feel free to email me at [**kourouklis@pm.me**](mailto:kourouklis@pm.me), and I will respond.

You can also keep up with my latest updates by checking out my X here: [**https://x.com/sotergreco**](https://x.com/sotergreco)