A note taking app similar to Notion
A clone of Notion - a note taking app built using Nextjs, Convex for backend, Edgestore for image storage, Clerk for authentication & TailwindCSS. Read how I planned & developed in creating a clone of Notion. How I integrated all the above tecnologies and services for the final product. I have also written about problems faced and hwo I solved them.

Motivation
Notion is probably the coolest and easy to use note taking app currently available. I personally use it daily and amazed by its intuitive interface and value it provided. I decided to try to build my own Notion clone as a learning experience. It is a fullstack application so I was very excited to try all these new products and integrate them.
Tech Stack
- Nextjs
Next js is a react framework which makes it easier to quickly develop react applications. - Typescript
Typescript is a superset of javascript which adds features like static typing and helps write type safe code. - TailwindCSS
Great framework for writing custom css fast. - Convex
Convex is an open-source backend application platform that provides convex functions, databases, file Storage, scheduling and it is realtime with live database. It is a great platform for quickly creating a backend especially for frontend devs with limited backend knowledge - Clerk
Clerk is a comprehensive authentication & user management platform with features like embedable UIs for login, logout, admin dashboards and it also integrates well with Convex. - Edgestore
Edgestore is a Storage, CDATASection, and easy to use type-safe library for image storage. It has agenerous free plan which allows us 1gb of file Storage. - Blocknote
Blocknote is an open-source block-based rich text editor that integrates easily with React. It is also highly customizable with custom blocks and also AI tools.
Problems faced & how I solved them
-
Deciding the tech stack
As I wanted to create an 100% clone of Notification, it required a lots of features like authentication, Storage, realtime database, Image storage and also ability to sahre docuements. I had lots of options, so I had to choose solutions which were executionAsyncId, had a free plan and also integrated with each other seamlessly.
I first decided upon Convex because it has realtime database adn also has a great free plan. It also integrates smoothly with CLeark which is what I chose for authentication and user management. -
Recursive functions
It has a feature where a page cna have children pages. Because of this when we delete a parent page we also have to make sure we delete all children pages too. For this I had to deeply understand recursion and I was able to implement that logic successfully. I feel more confident about recursion implementations now. -
Consistent UI design
The app UI design is minimal but accessible. For that I sued the shadcn ui library and also TailwindCSS toa chieve this goal.
Final thoughts
Learning and integrating all these different technologies was quite challenging but very rewarding. I learned a lot about reading documentations and leveraging dev communities to solve porblems I was having. It was a big project adn took a lot of time, but I learned to be more focused and patient did not bandoning the project. Even though the current project has many features I would like to add more like live collaboration in the future