Memoir

GitHub Repository - Live Website

Memoir is a web-based text editor.

The idea for Memoir came when I was evaluating different note-taking editors to organize and write my documents. I explored Obsidian, a desktop app, and Notion, a web app. While both are great for taking notes, they each have drawbacks: Obsidian is limited to the desktop, and I wanted a browser-based solution, while Notion uses user data for advertising and AI training. To address these issues, I built my own solution: a simple, open-source text editor on the web.

Key Features:

  • User Authentication: A custom-built authentication system.
  • Text Editor: A rich text editor that supports Markdown and includes a Notion-like slash command palette.
  • Document Synchronization: Documents are saved in a PostgreSQL database for persistence, with a debounce feature to optimize network resources when updating documents.
  • Document CRUD: Create, read, update, and delete documents.

Technical Overview

  • Turborepo: For managing monorepos.
  • GitHub Pipelines (CI/CD): For running tests, type checking, and linting on each pull request.

  • Next.js: For server-side rendering, server actions, data streaming, and optimized performance.
  • TypeScript: Ensuring type safety and robust code.
  • Tailwind CSS: For utility-first, responsive styling.
  • Tip-Tap: For setting up a rich text editor.
  • Axios: An HTTP client.
  • Zustand: A lightweight state management solution.
  • React Hook Form: For client-side form validation and handling.
  • Playwright: End-to-end testing.

  • Bun: A JavaScript runtime.
  • Elysia JS: An API REST framework x21 times faster than Express.
  • PostgreSQL: Database.
  • DrizzleORM: SQL ORM.
  • Bun Test: Unit testing.
  • Typebox: Input validation.
  • Swagger: API documentation.

Soft Delete

Memoir supports soft deletion, allowing users to recover documents they may have mistakenly deleted.

Cookies and JWT Authentication

Memoir uses cookies and JWTs for secure authentication.

Screenshots