/ThoughtPocket

A MERN Fullstack Notion-like note taking app

Primary LanguageTypeScript

Thought Pocket

Live

A fullstack note-taking app with WYSIWYG editor

Landing Page

Introduction

This is my first "real" fullstack app where I don't use Next.js's api routes. It is fully responsive and functional, but there are still some tweaks that can be made to make it better.

Backend

Tech Stack

  • Next.js
  • Express.js
  • MongoDB
  • TailwindCSS
  • shadcn/ui
  • Typescript & Zod
  • Redux

Features

  • JWT Authentication

Express.js backend uses JWT to authenticate users. The token is stored in a httpOnly cookie and is valid for 30 days.

  • Full CRUD functionality on notes

Users can create, read, update and delete notes. The notes are stored in a MongoDB database.

  • Autosave notes and title

While this was not that hard to implement, it was a bit tricky to get it working with the WYSIWYG editor. Also, there are still some tweaking left to do in order to maximize UX.

  • Zod for input validation

Currently, I am using Zod only in the frontend. I am planning to use it in the backend as well.

  • WYSIWYG editor

Used Tiptap rich text editor.

Development

  • Used Airbnb eslint and prettier configs
  • Used Jest and Testing Library for testing

P.S. The backend is hosted on Render, so TTFB(Time to first byte) might be long.