memorytree

A personal life-memory journaling app that organizes your life into chapters, moments, and memories. Travel, relationships, career, and health — all mapped onto a visual timeline you can walk back through.

MemoryTree is a full-stack journaling application built to turn scattered memories into a structured, navigable story of your life.

What I Built

I designed and built the entire application end-to-end — a Node.js/Express/PostgreSQL backend and a React + Vite frontend — as both a personal tool and a deep dive into full-stack fundamentals. The app organizes memories into a three-level hierarchy: Events (life chapters like Travel, Relationship, Career, Health, and Goals), Memory Entries (specific moments within an event), and Media (photos attached to each memory).

Key Features

  • Full auth system with email verification, JWT access tokens, and httpOnly refresh token cookies for secure cross-domain sessions
  • A winding style memory trail with chronological spacing, node size that scales with memory "weight," and scroll-driven rope animation
  • Story and Read mode for browsing memories, with anchored popovers and full memory pages with prev/next navigation
  • Cloudinary-backed photo uploads with a polaroid-style display, cover images with gradient overlays, and a handwritten-font aesthetic layered over a paper-grain texture
  • Ownership-safe CRUD across events, memories, and media using controller-level chain-walking instead of complex SQL joins

Tech Stack

Node.js, Express, PostgreSQL, React, Vite, JWT, Cloudinary, Brevo (transactional email), deployed on Render (backend) and Vercel (frontend).