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.