Technologies I used as a Full Stack Developer in recent time

Also, the insights I got from using those tech.

The world of technology is like a never-ending rollercoaster ride, with new tools and frameworks popping up every other day. As a Full stack developer, it's my job to keep my finger on the pulse of what's new and exciting in the tech landscape. In this post, I'll be taking you on a journey through my tech stack, sharing my experience and insights on the tools and frameworks that have caught my attention and why they have the potential to change the game. From Python and Javascript to HTMX, Alpine JS, and Firebase, let's dive in and explore what I got for you.

Backend Techs

Let me start from the backend, I have majorly contributed to python codes for my day job. So, will be a little biased on that. But, I have used javascript for my side projects which I am proud of. So not to worry about that :)

1. Django

Django is a pretty powerful python framework and has been used by giants like Instagram, Pinterest, etc as their backend. Also, I love to work in python. Majorly my time was spent working useful functions and creating Django models, views, and testing. The main advantage of using Django is we can integrate ML models easily with python. I also had to implement Pytorch models for internal use (Was hired as an ML Engineer initially, then shifted to Full Stack XD ). I also had to build some applications using Django like google Calendar events manager. Python helped me a lot while building this. The testing of this and logging is easily integrable in Django, So debugging was easier. Also, there is an awesome CMS (Content Management System) Library in python called wagtail. It's very powerful and the learning curve was not that steep if you are used to Django.

Key takeaways that I learned while developing in Django are

  • Unit testing is key to ensuring that your code doesn't break when updated in the future. Django has a Testcase module. You could utilize that.

  • Logging helps a lot in debugging. Use Logging functions as mentioned here.

  • Dealing with Views and URLs .py files could be tricky. Be a little cautious while dealing with a lot of view functions and URLs

  • Using Django Models is easy. But dealing with tons of migrations might be hard. So, Try to develop the model structure initially with some caution.

2. Node.js

As of now, I have used node only a handful of times as the backend. So, take my points with pinch of salt. Majory used the Node including Express in my side projects. Only used it when I need to create simple APIs for CRUD operations from the database. But, building that is very easy, and recommend node as a backend if you want to create scalable things with simplicity. Django had tons of files to manage and for a beginner, it could be confusing. Node is always recommended in that sense. Also, Using Express and Node Stack is kinda tradition now.

3. Backend as a Service Tools

I have used Firebase and Appwrite tools as of now. Both tools are good. Appwrite has an upper hand on being open source & its documentation whereas Firebase has a first-mover advantage (Also, can be free for while, Appwrite requires a server). Used it in my personal projects where I needed authentication and simple data storage. Generally, I prefer to use it when I can do almost stuff via frontend.

Databases

So here are some of the databases I worked on in the recent past.

1. Postgres

Postgres is a fantastic relational database management system. I've had the chance to implement it in multiple projects and it has never failed to impress me. The main advantage of Postgres is its support for advanced data types such as arrays and hstore, which allows for more efficient data storage and querying. I also found the SQL syntax to be quite similar to that of other popular RDBMSs like MySQL, which made it easy to pick up and start working with. One of the key takeaways I learned while working with Postgres is the importance of designing a proper database schema. The more thought you put into designing your tables and relationships, the more efficient your queries will be and the easier it will be to maintain your data in the long run.

2. Redis

Redis is a powerful in-memory data structure store. I have used it on a few projects where I needed a high-performance data store that could handle large amounts of data. The main advantage of Redis is its ability to handle high-speed data operations, making it perfect for use cases such as real-time analytics and message queues. I found the Redis data structures to be easy to work with and the documentation to be very helpful. One key takeaway I learned while working with Redis is the importance of understanding the trade-offs between data consistency and performance. Redis is often used as a caching layer, so it's essential to understand how data is stored and how it can be invalidated.

3. SQLite

SQLite is a lightweight and efficient relational database management system. I have used it on a few projects where I needed a simple and easy-to-use database that could be embedded within an application. The main advantage of SQLite is its small footprint and the ability to work with it without the need for a separate server. It's perfect for use cases such as small web applications and mobile apps. Also, for testing out your Django models SQlite is best. While it's ideal for small projects, it may not be suitable for large-scale projects that require high performance and scalability.

Frontend Techs

As I come from a pythonic background, the Frontend has always been the least priority for me. But since last year my perspective has changed a lot on Frontend. I have Implemented multiple pieces of stuff in different tools. The direction of the full stack seems to change... You need to be good at frontend than backend because there are tools that can replace the backend but till now there are not many tools that can replace frontend. I have worked on both popular and things that are getting popular tools. So, here is my list and insights.

1. HTMX

HTMX is a new and exciting technology that allows for dynamic updates on the web page without the need for a full page refresh. I have used it at my day job and found it to be a game changer in terms of improving the user experience. The main advantage of HTMX is its ability to handle complex interactions and data updates with minimal effort. I had to build an animation player using HTMX and Django it was pretty cool once it got completed. One key takeaway I learned while working with HTMX is the importance of understanding how it works under the hood. While it can simplify your code, it's essential to know how it's handling requests and updates to avoid potential issues.

2. Alpine Js

Alpine JS is a lightweight JavaScript framework that allows for easy manipulation of the DOM. I have used it on a few low Frontend required projects and found it to be a great alternative to larger frameworks like Vue and React. The main advantage of Alpine JS is its simplicity and the ability to get started quickly. You can literally use it by just adding a script tag in your HTML. The Store and Ref in the alpine are game-changing and are powerful for small to medium-sized projects. You can think of it as a modern jquery. I found the documentation to be excellent and the learning curve to be relatively low. Generally, my recommendation is to use alpinejs framework only when you have very limited frontend complexity and you expect basic to medium stuff from the frontend.

3. React

React is a popular JavaScript library for building user interfaces. I have used it on a number of projects and found it to be a great tool for building complex and interactive web applications. The main advantage of React is its ability to handle complex state and data updates in a performant manner. Documentation is awesome but has a learning curve relatively steep. Key takeaways that I learned while developing in Django are

  1. Component-based architecture: React uses a component-based architecture, which allows developers to break down a user interface into smaller, reusable pieces. This makes it easier to build and maintain large and complex applications.

  2. Virtual DOM: React uses a virtual DOM to optimize updates and reduce the number of actual DOM mutations that need to be made. This allows React to update the page efficiently and avoid unnecessary re-renders of components.

  3. JSX: React uses JSX. JSX makes it easy to write HTML-like elements in JavaScript, and it's a powerful tool for building user interfaces.

  4. React Hoooks: I have found React Hooks to be an incredibly useful tool in my development arsenal. The simplicity of the syntax and ability to manage state and side effects in functional components.

  5. Structure: Working on large projects in react could lead to tons of components. So be a little cautious and try to keep it minimal and document things properly.

4. Hyperscript

Hyperscript is a lightweight JavaScript library for creating and manipulating the DOM. I have used it on a few projects and found it to be a great alternative to other libraries like jQuery. The main advantage of Hyperscript is its simplicity and the ability to get started quickly. With the combination of HTMX and hyper script along with Django, jinja templates are powerful, you can avoid using the heavy frontend like react, and Vue.

5. Tailwind CSS

Here comes one of my favorite CSS frameworks. Tailwind CSS is a utility-first CSS framework that allows for easy styling of web pages. I have used it on a ton of projects. The main advantage of Tailwind CSS is its ability to handle complex styling with minimal code. I found the documentation to be an excellent resource. And the community is very large. One key takeaway I learned while working with Tailwind CSS is the importance of understanding how it works under the hood. While it can simplify your styling code, it's essential to know how it's handling classes and updates to avoid potential issues. Also, Structuring the tailwind is crucial as the project becomes large maintaining your code can be tricky. So keep an eye on the code you write and remove unnecessary CSS (it could be messy if you have a ton of things in one place)

Conclusion

In conclusion things, I have explored some of the stuff in full stack till now. I haven't covered the DevOps tools like Docker, Kubernetes, Github actions and workflows, etc. Also, the community loved frontend tech Svelte. I had worked on the ML stuff also, So that could be included as well... But I think this blog is pretty long and will try to cover those in the next blog hopefully.

Until then, take care and bye :)