<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aditya Dave</title>
    <description>The latest articles on DEV Community by Aditya Dave (@aditya_r_dave_99).</description>
    <link>https://dev.to/aditya_r_dave_99</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3067400%2F52ed7cdb-c764-4de2-8fdf-2e818037a624.jpeg</url>
      <title>DEV Community: Aditya Dave</title>
      <link>https://dev.to/aditya_r_dave_99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aditya_r_dave_99"/>
    <language>en</language>
    <item>
      <title>What creating a simple todo list taught me?</title>
      <dc:creator>Aditya Dave</dc:creator>
      <pubDate>Sun, 20 Apr 2025 06:38:50 +0000</pubDate>
      <link>https://dev.to/aditya_r_dave_99/what-creating-a-simple-todo-list-taught-me-4b7a</link>
      <guid>https://dev.to/aditya_r_dave_99/what-creating-a-simple-todo-list-taught-me-4b7a</guid>
      <description>&lt;p&gt;How do you learn? That's a very subjective question. Depends on what you are learning , but as far as the tech field is concerned you learn the most by practicing what you learnt in theory. The theory contains concepts required to get started but once you build it clarifies the concepts and the hiccups faced during building those stuff in turn makes you learn a lot of concepts which did not come up during theoretical studying.&lt;/p&gt;

&lt;p&gt;Here's a synopsis of one of those projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;A full stack todo list application&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;✨ Introduction&lt;/strong&gt;&lt;br&gt;
In the modern world of web development, creating a performant, full-stack application that handles both frontend fluidity and backend robustness is more achievable than ever. This project is a shining example — a full-stack todo app built using Next.js, MongoDB, and Redis.&lt;/p&gt;

&lt;p&gt;Whether you're learning full-stack development or exploring state management and authentication workflows, this app is a great starting point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🛠️ Getting Started&lt;/strong&gt;&lt;br&gt;
To get this project running locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the dev server is running, open your browser and go to:&lt;br&gt;
👉 &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can begin editing the app by modifying the app/page.tsx file. The page will auto-update on save — no refresh required!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📚 About the Project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This todo app is more than just a list of tasks. It’s a multi-user platform where:&lt;/p&gt;

&lt;p&gt;Users can sign up, log in, and change passwords.&lt;/p&gt;

&lt;p&gt;Each user can only view and manage their own todos.&lt;/p&gt;

&lt;p&gt;The app is responsive, animated, and built for performance and maintainability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚙️ Tech Stack&lt;/strong&gt;&lt;br&gt;
Here's what powers the app under the hood:&lt;/p&gt;

&lt;p&gt;Frontend&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Next.js (App Router)

React.js

Tailwind CSS + DaisyUI for rapid and beautiful styling

Framer Motion for animations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;State Management&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Zustand – lightweight and scalable state management

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Session Management&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Upstash Redis – for handling sessions securely and efficiently

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Backend&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node.js + TypeScript

Nodemailer – for sending verification or password reset emails

Crypto – for secure password handling
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Database&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MongoDB (via Mongoose ORM)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;🔐 Environment Variables&lt;/strong&gt;&lt;br&gt;
Set the following environment variables in your .env.local file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
MONGODB_URI=your-mongodb-url
MONGODB_NAME=name-of-database
UPSTASH_REDIS_REST_URL=upstash-redis-rest-url
UPSTASH_REDIS_REST_TOKEN=upstash-redis-token
SESSION_EXPIRATION=2400 # 60 * 40
HOST_URL=http://localhost:3000
LOGGER_ENABLED=true
SENDER_EMAIL=your-email-id
GOOGLE_MAIL_PASSWORD=your-google-app-password
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;br&gt;
Authentication has been done using redis-session management and password hashing using crypto and salt generation using the same. The passwords generated using passwordActions.ts are being used in signup and session management is taken care of in the sessionActions.ts The session expiration has been set after 40 mins. To ensure that the password can be changed on forgetting the same can be done using creation of a verification token sending the same on the mail and adding it to redis to be read in future for verification. For more details explore the github repo listed below.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔮 Planned Enhancements&lt;/strong&gt;&lt;br&gt;
Here’s how this app could evolve in future versions:&lt;/p&gt;

&lt;p&gt;Analytics &amp;amp; Stats&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track todos completed over time (monthly/yearly).&lt;/li&gt;
&lt;li&gt;Requires schema updates and new routes.&lt;/li&gt;
&lt;li&gt;A cron job to email users their incomplete tasks periodically.&lt;/li&gt;
&lt;li&gt;Connection Pooling&lt;/li&gt;
&lt;li&gt;Improve performance by reusing DB connections.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;📘 Learn More&lt;/strong&gt;&lt;br&gt;
Want to dive deeper into Next.js and its capabilities?&lt;/p&gt;

&lt;p&gt;📚 Next.js Documentation&lt;/p&gt;

&lt;p&gt;🧠 Learn Next.js&lt;/p&gt;

&lt;p&gt;🔧 Next.js GitHub&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github Repo&lt;/strong&gt;&lt;br&gt;
Repo URL : &lt;a href="https://github.com/Adi-Dave-cs/NextJS/tree/main/NextJs/nexttodolist" rel="noopener noreferrer"&gt;https://github.com/Adi-Dave-cs/NextJS/tree/main/NextJs/nexttodolist&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 Deploy on Vercel&lt;/strong&gt;&lt;br&gt;
The app is deployed using Vercel, the official hosting platform for Next.js. You can deploy your own version in seconds:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👉 Deploy your app on Vercel&lt;/strong&gt;&lt;br&gt;
Check it here : NextTodoApp ==&amp;gt; &lt;a href="https://next-js-omega-brown-38.vercel.app" rel="noopener noreferrer"&gt;https://next-js-omega-brown-38.vercel.app&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;🎉 Final Thoughts&lt;/strong&gt;&lt;br&gt;
This full-stack todo app is a robust starter for anyone diving into modern web development. It shows how to build a secure, animated, and full-featured app using some of the most powerful tools in today’s ecosystem.&lt;/p&gt;

&lt;p&gt;Feel free to fork, extend, and deploy it — and don’t forget to try the Live Demo!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>react</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
