Build and Deploy a Full Stack AI Todoist Clone: Next.js, Convex & TypeScript

preview_player
ะŸะพะบะฐะทะฐั‚ัŒ ะพะฟะธัะฐะฝะธะต


Key features:
- ๐Ÿค– AI Suggest Missing Tasks and Sub-Tasks using Open AI
- ๐ŸŽจ Beautiful components using Shadcn UI
- ๐Ÿ’… Slick designs using TailwindCSS
- ๐ŸŒŸ Database using Convex
- ๐ŸŽญ Amazing icons thanks to Lucide React
- ๐Ÿ“‹ Typescript Runtime Validation using Zod
- ๐Ÿš€ Form Validation using React Hook Forms
- โค๏ธ Add Task Dialog popup
- ๐Ÿ’” Deletion of Tasks Dialog popup
- โœš Addition of Sub-Tasks
- ๐Ÿ’” Deletion of Sub-Tasks Dialog popup
- ๐Ÿ“œ Creation of New Projects and Labels
- ๐Ÿ“œ Deletion of New Projects and Labels
- ๐Ÿ”„ Sidebar Navigation
- ๐Ÿ† Vector Search your Tasks
- ๐Ÿ“ฑFull mobile responsiveness
- ๐Ÿ›ฌ Landing page ๐Ÿ›ฌ
- ๐Ÿš€ Deployment on Vercel
- ๐Ÿ“ฑ Mobile responsiveness

#nextjs #react #javascript #ai #typescript

โฐ Timeline
00:00 - What will you learn?
1:32 - Todoist App Demo
10:52 - Convex Deep Dive
30:05 - Foundations
UI - Shadcn Library
37:46 - Foundations
Setup Convex
1:37:13 - User Profile and Navigation
2:00:01 - Inbox Page with
TodoList
2:07:04 - Inbox Page
3:17:54 - Add Task Modal for
Viewing Todos &
Sub-todos
4:25:19 - Upcoming Todos Page
4:33:29 - Project Page Build
4:50:59 - Suggest Missing Todos with AI
5:12:01 - Suggest Missing SubTasks with AI
5:33:55 - Vector Search using Convex
6:27:00 - Project Deletion and it's tasks
6:49:53 - Build Landing Page
6:51:09 - Get your app ready for Prod
6:58:29 - App Deployment

๐Ÿ”— RESOURCES:

๐Ÿ’Œ Frontend Newsletter:
If you liked this video, you will also love my newsletter Frontend Snacks. You will learn a new topic each week with cool visuals and snippets, the latest frontend news and behind-the-scenes exclusive updates that I don't share anywhere else.

โ˜Ž๏ธ Book a 1:1 coaching session with me

๐Ÿค Find me here

This video is kindly sponsored by Convex.
ะ ะตะบะพะผะตะฝะดะฐั†ะธะธ ะฟะพ ั‚ะตะผะต
ะšะพะผะผะตะฝั‚ะฐั€ะธะธ
ะะฒั‚ะพั€

Thanks for watching the tutorial, this tutorial has been my longest one yet but so worth it! I really do a deep dive in each concept.

What is it that you would like to learn next?

Kulkarniankita
ะะฒั‚ะพั€

I liked the idea of not just our daily simple to-do list but a Full Stack To Do List! CooOOooool!

pro-saqib
ะะฒั‚ะพั€

We blessed that we have developer like you which deliver the robust application .

GiggleGalaxy.
ะะฒั‚ะพั€

I learned so much nextjs concept from your tutorials. Thanks for your great efforts

smartdriver
ะะฒั‚ะพั€

just incredible, not a lot of creators can say they push relevant and quality content, Be Proud!

yatinkundra
ะะฒั‚ะพั€

Woahhhh! This is the video I have been looking forโœจ

TotheMoonPictures
ะะฒั‚ะพั€

Great tutorial, eager to learn more from your channel.

manaskulkarni
ะะฒั‚ะพั€

Waow i cant wait to watch this. Thanks Ankita, you are the Angel of developers โค

NurioonSoftware
ะะฒั‚ะพั€

Really a best project with AI everyone creating only a simple todo list app but this is AWESOME๐Ÿ˜๐Ÿ˜

deepakkumarmaurya
ะะฒั‚ะพั€

Hey Ankita, I've taken your Nextjs course a while back through Udemy and glad to see another one on Youtube! I'm still in about 2 hour and just got done with AuthJs and Convex integration. I have to say it certainly wasn't easy and so many steps to get it connected. They really should provide another helper package like 'convex-auth' or something like that to reduce the amount of the work. Now it's time to take a break and looking forward to finish this project! Thanks again.

sealone
ะะฒั‚ะพั€

Very cool project idea! You really explain things very well! I was able to follow you at all times. Thank you very much for your effort! <3

wesom-
ะะฒั‚ะพั€

Thank you so much Aapi for this amazing project.

hamzasohail
ะะฒั‚ะพั€

Great tutorial looking forward to see more full stack apps tutorial on this channel

kunaaal
ะะฒั‚ะพั€

awesome thanks kulkarnia, i appreciate

temanalam
ะะฒั‚ะพั€

Great project, and i love your video editing ๐Ÿ˜€

GregPeters
ะะฒั‚ะพั€

Hey Ankita, Thanks for this valuable tutorial. This is one of the best to-do list tutorials for sure!! I would also like to request you to build a SaaS app like QuillBot, using next Auth. This will definitely break the internet. Thanks :)

umar
ะะฒั‚ะพั€

Thank you! This was quite interesting, however, Next has been adding a few things that are nothing short of magic. I mean, the entire "Authentication with AuthJS" part almost felt like writing some incantations and it works. I'm sure if I dig deeper in the docs and their blogs the engineering of it all will be clearer, but still. Thanks again for your efforts :)

pratikkulkarni
ะะฒั‚ะพั€

Wow i always wanted to make my iwn todist clone. Thanks

megamind
ะะฒั‚ะพั€

๐ŸŽฏ Key points for quick navigation:

00:00 *๐Ÿš€ Introduction to building a full-stack Todoist clone with AI features using Next.js, Convex, and TypeScript.*
00:40 *๐Ÿ” The project will use Next Auth for robust authentication.*
02:55 *๐Ÿ“Š Overview of different views in the app: inbox, today, upcoming, filters, labels, and projects.*
05:53 *๐Ÿ“ Demonstration of creating and managing projects within the app.*
08:08 *๐Ÿ” Vector search feature from Convex for efficient task searching.*
10:51 *๐Ÿ’ป Introduction to Convex dashboard and project setup.*
18:03 *โœ๏ธ Explanation of Convex mutations for updating and deleting data.*
18:56 *๐Ÿ”— Introduction to Convex actions for calling third-party services.*
20:18 *โš›๏ธ Explanation of the Convex Reactor, the core of the Convex platform.*
24:37 *๐ŸŽจ The project is already using Tailwind CSS, with an option to disable inline fold extension for better visibility of styles.*
25:33 *๐Ÿš€ The Next.js app is set up and running on localhost:3000.*
26:58 *๐Ÿงฉ Tailwind CSS is structured with base, components, and utilities directives.*
32:40 *๐ŸŒˆ After installing Shad CN, global CSS file includes theme colors and CSS variables.*
37:37 *๐Ÿ”ง The project's color theme is customized to a slightly reddish-orange.*
38:32 *๐Ÿ’พ Convex is installed and set up for the project, creating a new folder structure.*
41:25 *๐Ÿ“Š Sample data is imported into a Convex table called "tasks" with auto-generated IDs.*
43:44 *๐Ÿ”Œ A ConvexClientProvider is created to wrap the entire application for database interaction.*
45:19 *๐Ÿ” The useQuery hook from Convex is used to fetch and display tasks from the database.*
49:04 *๐Ÿ”Œ Convex interacts with Next.js application via WebSocket connection.*
51:59 *๐Ÿ” Auth.js (formerly NextAuth) used for user authentication.*
59:56 *๐Ÿ”‘ Setting up Google OAuth credentials in Google API Console.*
01:04:50 *โš™๏ธ Configuration of Google OAuth in Next.js application.
01:07:07 *๐Ÿ“ Creation of login form and server actions for user authentication.
01:14:19 *๐Ÿ”’ User authentication setup: Redirecting users to logged-in page and passing user information to providers.*
01:15:39 *๐Ÿ‘ค Creating a UserProfile component to display user image using Next.js Image component.*
01:17:25 *๐Ÿ”— Configuring Convex database for user authentication and data storage.*
01:20:24 *๐Ÿ“Š Creating a database schema for tasks and user-related tables in Convex.*
01:34:44 *๐Ÿ” Setting up public-private key pairs and JWT signing for secure authentication.*
01:36:46 *โœ… Successful user authentication and insertion into the Convex database.*
01:37:28 *๐Ÿ–ผ๏ธ Planning the UI components for the Todoist clone, including sidebar, navbar, and task list.*
01:40:05 *๐Ÿ“‹ The UI structure includes projects, important links, to-do list, add task inline component, checked to-dos, and completed to-dos count.*
01:42:23 *๐Ÿ–ฑ๏ธ Clicking on a to-do item opens an "add task" modal dialog.*
01:43:29 *๐ŸŽจ The project uses Shad CN UI library components for sheet, input, and card elements.*
01:46:29 *๐Ÿ“ฑ The sidebar is divided into mobile and desktop experiences.*
01:51:45 *๐Ÿ”ง Primary nav items are extracted to a separate utils file for reusability.*
01:54:55 *๐Ÿ‘ค User profile component displays user's name, email, and profile photo.*
01:58:05 *๐Ÿšช Logout functionality is implemented using a server action.*
02:10:30 *๐Ÿ”„ useQuery hook from Convex React used to fetch to-dos from the database.*
02:28:54 *๐Ÿž Added toast notifications for task completion using Shadcn UI components.*
02:29:58 *๐Ÿ”” Toast notifications implemented with customizable duration and positioning.*
02:35:54 *๐ŸŽจ Styling applied to "Add Task" button with hover effects and icon.*
02:41:41 *๐Ÿ› ๏ธ Form implementation using Shard CN UI, React Hook Form, and Zod for validation.*
02:46:54 *๐Ÿ“ Default values set for task form fields including name, description, priority, due date, project ID, and label ID.*
02:48:55 *๐Ÿ“„ Text area component added for task description with custom styling.*
02:50:50 *๐ŸŽญ Card footer implemented for form buttons with responsive layout.*
02:57:11 *๐Ÿงฐ Utilized Shad CN UI Library's CN function for merging styles efficiently.*
02:58:30 *๐Ÿ•ฐ๏ธ Implemented date-fns library for date formatting and manipulation.*
03:00:07 *๐Ÿ”ฝ Added select components for priority, project ID, and label ID.*
03:04:45 *๐Ÿ—ƒ๏ธ Created separate files for projects and labels queries in Convex.*
03:08:17 *โž• Implemented a mutation for creating new todo items.*
03:13:38 *๐Ÿ”ข Converted priority and due date to appropriate number formats before sending to the database.*
03:20:21 *๐Ÿ”„ Refactoring code to pass all task data at once instead of individual properties.*
03:24:01 *๐Ÿ“Š Creating a layout for task details including project, due date, priority, and label.*
03:38:50 *๐Ÿงช Testing the implementation by creating a new user and associated task.*
03:44:53 *๐ŸŒ Implementing a system for both user-specific and system-wide projects and labels.*
03:48:11 *๐Ÿ—„๏ธ Created a separate file for subtodos with similar structure to main todos.*
03:49:45 *โœ… Added functionality to check and uncheck subtasks, similar to main tasks.*
03:53:53 *๐Ÿ”˜ Added a "Suggest missing task" button placeholder for future AI feature.*
03:58:34 *๐Ÿ”„ Implemented mutations for checking and unchecking subtasks.*
04:02:53 *โž• Added "Add subtask" functionality within the task dialog.*
04:05:57 *๐Ÿท๏ธ Dynamically changed button text to "Add subtask" when adding a subtask.*
04:11:59 *๐Ÿ”ง Adjusting task priority and parent ID for subtasks in the Todoist clone.*
04:16:44 *๐Ÿ–ฅ๏ธ Adjusting the layout to make the header full-width.*
04:24:26 *โฐ Implementing overdue todos functionality.*
04:27:09 *๐Ÿ—‚๏ธ Creating an "Upcoming" page to group todos by date.*
04:33:35 *๐Ÿค– Planning to integrate OpenAI for smart task suggestions.*
04:34:56 *๐Ÿ“Š Setting up the Projects page and individual project pages.*
04:37:00 *๐Ÿ“ Implemented project list functionality using Convex query and Next.js Link component.*
04:40:27 *๐Ÿ”— Created individual project page with URL-based project ID retrieval using Next.js useParams.*
04:43:35 *๐Ÿ” Fixed query to get todos by project ID instead of getting project by project ID.*
04:54:01 *๐Ÿค– Outlined process for invoking AI (OpenAI) to suggest missing tasks using Convex actions.*
05:00:24 *๐Ÿ”„ Demonstrated how to add environment variables to Convex for API key access.*
05:01:42 *๐Ÿƒโ€โ™‚๏ธ Introduced using Convex's runQuery and runMutation functions within actions.*
05:02:51 *๐Ÿ”„ Updating code to get to-dos by project ID and passing them to OpenAI for more relevant suggestions.*
05:11:22 *๐Ÿ–‹๏ธ Changing the font to Noto Sans Georgian for a more consistent look with the Todoist app.*
05:12:18 *๐Ÿ” Reusing the "Suggest missing task" button functionality for subtasks.*
05:22:35 *๐ŸŽ‰ Successfully integrating AI suggestions for subtasks.*
05:24:39 *๐Ÿ”„ Converting the sidebar component to a client component to use Next.js routing features.*
05:29:31 *๐Ÿš€ Successfully implementing project redirection, with "Get Started" project linking to the correct page.*
05:30:39 *๐Ÿท๏ธ Adding titles and styling to different sections of the navigation, including "My Projects" with a dialog option.*
05:34:30 *๐Ÿง  Explanation of Vector search and embeddings for context-aware AI-powered applications.*
05:41:45 *๐Ÿ”„ Overview of the search form implementation using React Hook Form and redirecting to search results page.*
05:59:32 *๐Ÿค– Added embedding generation for AI-suggested tasks to ensure they appear in search results.*
06:02:44 *๐Ÿ” Implemented vector search functionality using Convex API to search for similar tasks.*
06:06:32 *โœ… Successfully tested vector search with example query "camping", returning relevant results.*
06:09:52 *๐Ÿ› ๏ธ Created "Add Project" dialog component for adding new projects in both desktop and mobile views.*
06:16:14 *๐Ÿ“ Implemented "Create Project" mutation in Convex to add new projects to the database.*
06:18:27 *๐Ÿš€ Finalized "Add Project" form with error handling, toast notifications, and navigation to the new project page.*
06:18:41 *๐Ÿ› ๏ธ Implementation of project creation functionality with redirection to the newly created project page.*
06:20:14 *๐Ÿง  Enhancement of AI task suggestion by including project name in the query for more relevant results.*
06:22:31 *โœ… Successful implementation of task creation with project assignment and due date functionality.*
06:25:42 *๐Ÿ“ Making description field optional in task creation to improve user experience.*
06:27:29 *๐Ÿ—‘๏ธ Development of project deletion functionality, including UI components and backend logic.*
06:34:29 *๐Ÿ›ก๏ธ Implementation of protection for system-level projects to prevent accidental deletion.*
06:38:32 *๐Ÿ”„ Introduction of Convex actions to handle complex operations like deleting a project and its associated tasks.*
06:45:08 *๐Ÿ—‘๏ธ Implemented delete functionality for tasks and projects, with automatic redirection to projects page*
06:45:51 *๐ŸŽฏ Adding individual task deletion functionality*
06:49:59 *๐Ÿ  Overview of homepage and application features*
06:51:24 *๐Ÿš€ Preparing the application for production*
06:57:24 *๐Ÿ“… Adding due dates to tasks*
06:58:29 *๐Ÿš€ Preparing for deployment*
06:59:24 *๐Ÿ› Fixing TypeScript errors*

๐ŸŽฏ Made @ www.ai.pics
๐ŸŽฏ Sorry if it isn't perfect!
๐ŸŽฏ Thanks so much for the in-depth tutorial. New subscriber!

rolltidehero
ะะฒั‚ะพั€

I really love your teaching style and this project is awesome. Please make a production ready ecommerce app with categories, number of items, admin page and deploy using vps instead of vercel

brancode