A Modern Note-Taking & Knowledge Management App

Me-Mora

Role
Full-Stack Developer
Type
Personal Project
Scope
Full-Stack
Date
2026
Me-Mora application — note-taking and knowledge management interface

OVERVIEW

Me-Mora is a full-stack note-taking and knowledge management app built for developers and learners who want a focused place to capture, organize, search, and revisit their knowledge. It combines structured note editing, tagging, search, archiving, and persistent personalization in a responsive interface.

Me-Mora overview screen 1
Me-Mora overview screen 2

PRODUCT EXPERIENCE

PRODUCT EXPERIENCE

Me-Mora brings note creation, organization, search, and archiving into one focused workspace, with personalization options that let users shape the experience around their preferences.

Me-Mora all notes view

A focused workspace for managing notes, with navigation, tags, and the selected note available in one view.

Me-Mora selected tag view

Use tags to group related notes and quickly narrow down the information you need.

Me-Mora archived notes view

Archive notes when they are no longer active while keeping them available for restoration.

Me-Mora create note view

Create a note, add tags, and start writing in a dedicated editing experience.

Me-Mora settings view

THE CHALLENGE

Building a focused note-taking experience without sacrificing the depth of a real application.

Me-Mora was designed around a simple idea: capturing and organizing knowledge should feel fast, focused, and effortless. The challenge was to turn that idea into a complete full-stack application while keeping the experience simple and intuitive.

The product needed to bring together authentication, rich note editing, tagging, search, archiving, and persistent user preferences without making the interface feel unnecessarily complex.

TECHNICAL ARCHITECTURE

Built as a full-stack application with a React client, Express API, and PostgreSQL database.

FRONTEND

React · TypeScript · Vite · React Router

TanStack Query · Zustand · React Hook Form · Zod

↓

BACKEND

Node.js · Express

JWT · Google OAuth

↓

DATABASE

PostgreSQL · Drizzle ORM

ENGINEERING DECISIONS

Technical choices shaped around real product requirements.

01Secure session handling

Silent token refresh with Axios interceptors

Access tokens are refreshed automatically when they expire, allowing authenticated requests to continue without abruptly logging users out. The interceptor retries the original request after a successful refresh and clears the authentication state when the refresh fails.

02Separating server and client state

TanStack Query + Zustand

Server state and client state are handled separately. TanStack Query manages asynchronous application data, caching, mutations, and query invalidation, while Zustand is reserved for global client-side state such as authentication and theme preferences.

03Structured note content

Block-based JSON serialization

Note content is stored as structured BlockNote data rather than HTML. The editor serializes its block structure when saving and reconstructs it when loading, keeping persisted content independent from HTML markup and aligned with the editor's document model.

04Centralized API validation

Zod validation middleware

Request validation is handled centrally through reusable Zod middleware for bodies, parameters, and query strings. This keeps validation logic out of individual controllers and provides consistent, structured error responses across the API.

WHAT I LEARNED

Building the product taught me to think beyond the interface.

Me-Mora pushed me to think about a product as a complete system rather than a collection of frontend features. I strengthened my understanding of authentication, API design, state management, data modeling, and the decisions required to connect these layers into a reliable application.

More importantly, building and deploying the project helped me become more deliberate about engineering decisions — choosing solutions based on the product requirements, maintainability, and user experience rather than simply reaching a working result.

Next Project

DevOverFlow

A modern StackOverflow clone built with Next.js.

View case study