DEV Community

Cover image for Build an EMI Calculator with Next.js, TypeScript, Tailwind CSS, Recoil and Recharts
Code of Relevancy
Code of Relevancy

Posted on • Edited on

Build an EMI Calculator with Next.js, TypeScript, Tailwind CSS, Recoil and Recharts

Are you interested in building a next level and attractive EMI Calculator? If so, you're in luck. Through this tutorial, we'll explore how to create your own calculator using Next.js, TypeScript, Tailwind CSS, Recoil and Recharts.

Let's take a look at the tools we'll be using.

Next.js is a popular JavaScript framework that allows you to build web applications with ease.

TypeScript is a powerful language that adds static typing to JavaScript which making it easier to write and debug code.

Tailwind CSS is a flexible and powerful CSS framework that makes it easy to style your applications.

Recoil is a state management library that makes it easy to manage complex state in your application.

Recharts is a charting library that allows you to create attractive and informative data visualizations.


At the moment we know what tools we'll be using, let's get started! We'll need to set up our development environment. Make sure you have Node.js, Git and a code editor installed on your machine. My all time favorite editor is VSCode.
You can then create a new Next.js project using the command line. Make sure to include TypeScript in your project setup.

Going forward, we'll install and set up Tailwind CSS. This will allow us to style our calculator and make it look next level. You can install Tailwind CSS using npm or yarn and then include it in your Next.js project. You can then create a simple layout for your calculator, including input fields for loan amount, interest rate and loan tenure.

Let's add some functionality to our calculator using Recoil. We can use Recoil to create an atom for loan amount, interest rate and loan tenure. We can then use state atom to update the display of our calculator.

To make it more interesting, we can add some data visualization to our calculator using Recharts. We can create a simple pie chart that shows the user how their total payments will change over the course of the loan tenure. This can be a great way to help them understand the impact of their loan payments over time.

While these tools can be incredibly helpful in automating complex calculations, it's important to thoroughly test your calculator and ensure that it is accurate and reliable. It's important to remember that while technology can make our lives easier in many ways, it is not a substitute for human expertise and judgment. When it comes to making financial decisions, make sure to seek advice from qualified professionals and not rely solely on the results of a calculator.


Why Next.js with Tailwind CSS?

Next.js and Tailwind CSS are two popular technologies in the web development world. Next.js is a React based framework for building server side rendered (SSR) applications, on Other Side Tailwind CSS is a utility first CSS framework for building responsive and customizable UIs.

Improved Developer Experience

Next level benefit of using Next.js with Tailwind CSS is the improved developer experience it provides. With Tailwind CSS, you can easily style your components using pre defined utility classes instead of writing custom CSS code. This saves a lot of time and effort in the development process. Tailwind CSS comes with a built in JIT (Just In Time) compiler that compiles your CSS code on demand, which further reduces development time.

Next.js, on the other side, provides a great developer experience by providing features such as hot module replacement (HMR) and automatic code splitting. This means that changes made to your code are reflected in the browser immediately without the need for a page refresh. If I say more, Next.js automatically splits your code into smaller chunks, which makes your application load faster.

Performance Optimization

Performance is a crucial factor in web development and using Next.js with Tailwind CSS can help you optimize your app's performance. With Tailwind CSS, you can write highly optimized CSS code that is lightweight and fast loading. This can lead to faster load times and better overall performance.

Next.js also provides a number of performance optimization features, such as server side rendering (SSR) and static site generation (SSG). With SSR, your app's HTML is generated on the server instead of the client, which leads to faster load times and better SEO. SSG, on the other side, generates static HTML files for your app, which can be cached by the browser and served quickly to the user.

Customization

Tailwind CSS is highly customizable, I mean, that you can easily customize the framework to fit your specific needs. You can customize everything from the colors and fonts to the spacing and borders. It comes with a number of pre built themes and templates which can be a great starting point for your project.

Next.js is also highly customizable with a number of configuration options available for things like routing, server side rendering, and much more. This allows you to tailor your app to your specific needs and requirements.

Seamless Integration

Using Next.js with Tailwind CSS is a seamless experience with both technologies working together seamlessly. Next.js provides built in support for CSS modules, allows you to import your Tailwind CSS styles directly into your components. This makes it easy to use Tailwind CSS in your Next.js app without any extra setup.

Next.js provides a number of other features that make integrating with Tailwind CSS easy such as dynamic imports and code splitting. With these features you can ensure that only the necessary CSS code is loaded for each page, it can improve performance and reduce page weight.


๐Ÿ“ฆ Demo:
EMI Calculator App


By following this article, you can create your own calculator and customize it to meet your needs.


โš“๏ธApp

App

App

App

App


โค Motivation:

Motivation


๐Ÿ€Support

Please consider following and supporting us by subscribing to our channel. Your support is greatly appreciated and will help us continue creating content for you to enjoy. Thank you in advance for your support!

YouTube
Discord
GitHub

Thank you in advance for your support

Top comments (11)

Collapse
 
ebuka1anthony profile image
ebuka anthony

wow, this is dope, very dope

Collapse
 
codeofrelevancy profile image
Code of Relevancy

Thank you sir for valuable feedback.

Collapse
 
efpage profile image
Eckehard

Please excuse my question. Your "toolset" is quite heavy, but the result is fairly static. So, why did you use a "reactive" framework for this?

Thread Thread
 
codeofrelevancy profile image
Code of Relevancy

React.js and Next.js are best frameworks for the single page (static) application.

I can build the same thing with just HTML/CSS/JavaScript. But it will become complex to maintain the codebase. I will have to write the same code of UI at multiple places. It will create problems when itโ€™s needed to upgrade the UI. Because of code duplication. For the helper functions, I will have to import the entire helper.js file where itโ€™s needed.

On Other Side, Using these frameworks, I can easily manage the codebase. I can make reusable components and import specific helper function anywhere, instead of entire helpers file.

I also take care of codebase by following some coding standards, it will help beginners with their own projects.

With my each projects/tutorials, I have showed different ways to do the state management.

  • Using useState and useEffect
  • Using useReducer
  • Using Recoil library

So my audience can learn these state management techniques for their projects. We have just started so making basic tools with these frameworks. In future, I will do complex projects as well.

We will go from basic to advanced eventually. Itโ€™s always good to just start with basic and simple things to learn something new. It will be helpful with the more complex projects.

I hope itโ€™s clear now. Thank you ๐Ÿ™ for reading my article. Feel free to ask me anything..

Thread Thread
 
efpage profile image
Eckehard

Hy, I was just curious to see, how the app peforms without all this tools, so I rebuilt the EMI-calculator from scratch without much toolilng. Iยดts just a singe file app now. .

Iยดm pretty sure that for larger apps you need to rely on all of this tools. But for smaller apps, that - like the EMI calculator - can run inside your browser, this might be a very big hammer to drill a small hole in some cases.

You can run the app from here also

Thread Thread
 
codeofrelevancy profile image
Code of Relevancy • Edited

Great, I appreciate your efforts to create a replica of my app.


Iยดm pretty sure that for larger apps you need to rely on all of this tools. But for smaller apps, that - like the EMI calculator - can run inside your browser, this might be a very big hammer to drill a small hole in some cases.

Answer to above:
There are countless ways we can built this app using different technologies. Each will show different load performance.

I have used recharts library in my app to break down the payments, and it's missing in your app. Plus take a look at the UI design of mine and yours. Mine looks more cleaner than yours. Means more styling. So definitely, there will major differences with the load performance of both the apps.

And mine codebase is divided into small components and helpers in relative files and folders. So it's easy for anyone to understand it and make the modifications. Clean and scalable code is the key for any app.

Another thing is, I can build the same app only using HTML/CSS/JavaScript as other YouTubers are building. But I use more stacks such as React.js, Next.js, Tailwind CSS, Recharts, Recoil etc.. Main reason is "Example".

With my small and single page app, I have showed basics of recoil library in Next.js. So others can take it as reference or example and they can utilize it with their large scale apps on the basis of project needs.

I have used Recharts library, to show the example of it for others to take it as reference.

Mine EMI Calculator is just a middle man for me to showcase the usage of several stacks in one app. That's it..

My audience can see these stacks in action (in real time) with my apps.

I always do the experiments with my projects to present something different and useful for others.

Thread Thread
 
efpage profile image
Eckehard

Sure there are some differences, an app built from scratch in an afternoon will not include all the nutยดs and bolts included in a library like tailwind. And about Recharts, i simply had no time to find out how to use it. But the app works and does itยดs job, just with a very small footprint and a minimal overhead. It even does not need a server to run, its just a single HTML file you can run on flems.io.

There are countless things the web is used to today, from large web shops to simple but useful tools. It is perfectly welcome to showcase all the tools you can use. But we should not forget, that different tasks might need different tools.

Thread Thread
 
codeofrelevancy profile image
Code of Relevancy

Yes right but my case/purpose is different.

Collapse
 
msmello_ profile image
Matheus Mello

This project is so cool, where did you find so much inspiration?

Collapse
 
codeofrelevancy profile image
Code of Relevancy • Edited

Thank you for always supporting us. Mostly I have built tools that weโ€™re using in our life.

I built Ovulation calculator because of my wife. Earlier, she was using an online tool. One day she helped me to understand the concept of ovulation calculator. And suddenly I decided build our own calculator. And I did it for her..

I built EMI calculator mainly for my personal use. Earlier I was using an Excel sheet (Shared by a YouTuber, Asset Yogi) to track my home loan payments. I checked the fundamentals of that sheet, formulas as well this week. And I built my own loan tracker app.

Crypto Pricer Tracker App:
Built for my personal use to track the price of some major cryptocurrencies.

CPM Calculator and Profit Margin Calculator Apps:
I had built these kind of tools for learning purposes 3-4 years ago in HTML/CSS/JavaScript/CodeIgniter
For my YouTube channel, I built the revised version of it using Frontend tools such React, Next.js and Vite.js

Collapse
 
msmello_ profile image
Matheus Mello

This is great, this is the best way for develop something, is when you actually need to fix your own pain.