<aside>
💡 This is not a full-blown Technical Document, but rather in my own words a small overview of what went behind in making TaxGlobe.in website. If you have a question or want to know more, reach out to me at [email protected] as always.
</aside>
🗨️ Overview
TaxGlobe is a website designed for Chartered Accountants (CAs) and CA students. This website allows users to share their thoughts, follow each other, and purchase software or books. This document details how the entire website was built from scratch using Laravel.
Software Stack |
|
Frontend |
Livewire, TailwindCSS, AlpineJS |
Serverside |
Laravel |
Database |
MariaDB |
Versioning/Management |
Git and GitHub |
Package Management |
Composer |
Server |
Nginx |
Hardware Stack |
|
CPU |
1 vCPU |
RAM |
1 GB DDR4 |
Storage |
40 GB NVME SSD |
OS |
Ubuntu 20.04 |
<aside>
💡 Since it is a monolithic application, the entire website can be hosted on a single VPS, which works well for hundreds of users.
</aside>
🛡️ Why this stack?
Before I start describing the application and process, Here is the reason why all the above choices in the stack were made.
- Laravel: Laravel is one of the most mature, and detailed web frameworks out there, This includes all programming languages and not just PHP. It has one of the best documentation, strong conventions and patterns, and the ease of PHP built into it. Hosting it is also a trivial process I’ve hosted several smaller Laravel applications on Shared Hosting platforms and it works great. Also at this point, I’ve been using Laravel for 2+ years at least.
- Livewire: Though a new package but it was something that helped reduce boilerplate javascript I had to write to do simple AJAX actions. Which usually involves updating part of the page.
- TailwindCSS: Tailwind helps in quickly scaffolding custom styles without having to break a sweat. Something like Bootstrap always felt too constructed to me, whereas with Tailwind I could write CSS with speed. Tailwind is something I still use to this date. kubre.in actually uses tailwind to do the styling.
- MariaDB/MySQL: Considering entire application needs can be entirely modeled using Relational Model. MySQL is just simply a widely available and mature choice. Even in 2023 goto choice for DB is always MySQL unless I need to do something that is hugely niche like storing vector embeddings, etc.
- I would not explain why I used git, It's something every programmer should know and actively use.
- As for server hardware, I’m simply being pragmatic. Taxglobe is not Netflix it does not need complex build systems and Lamdba deployments. A simple VPS server alongside Nginx is what keeps costs low until they need to scale up. This should be enough for thousands of users.
📝 Goals and Guidelines
- Before even any part of the code started I flushed out all the requirements over long calls during which I not only gave examples of how features could be implemented but actively helped Taxglobe to convey their full requirements to me.
- During this, I noted down all the details, and I made a proper draft of all the requirements You can take a look at the bottom of
Readme.md
on GitHub.