Back
My Note
Personal notes for everyday thinking
Website
GitHub
- react.js
- typescript
- go
- postgres
Overviewh2
My Note is a personal notes app for writing and organizing everyday thoughts. Notes are written in a rich text editor, grouped with folders and labels, and can be nested as sub-notes. AI help is available right inside the editor.
Featuresh2
- Rich text editor built on Tiptap, with slash commands, a drag handle to move blocks, tables, images, and code blocks with their own toolbar.
- Sub-notes let any note have child notes, nested as deep as needed. A note shows how many children it has, a breadcrumb jumps back to the parent, and a note can be moved under another one at any time. Children follow the folder, archive, and secret state of their parent, and moves that would create a cycle are rejected.
- Task lists inside notes, so to-dos live next to regular text.
- Link cards that turn a URL into a preview card.
- Folders and labels to group notes, with search and filters on the home screen.
- AI bubble menu to ask AI about the selected text, with a per-user usage limit.
- Guest mode to try the app without signing up, and upgrade the account anytime.
- Feedback sent straight from the app.
Tech stackh2
Frontend
- React 19 and TypeScript, built with Vite.
- Tiptap for the editor, dnd-kit for drag and drop.
- TanStack Query for data fetching and Jotai for light state.
- Tailwind CSS 4 and shadcn/ui for the UI.
Backend
- Go with Gin as the HTTP framework.
- PostgreSQL through GORM, with migrations by golang-migrate.
- JWT for authentication.
- Image uploads handled by the backend itself and served from its
/uploadsfolder. - OpenRouter as the model provider for AI features.
Infra
- Frontend and backend are both packed with Docker, and the frontend is served by Nginx.
- Automatic deploys through GitHub Actions in each repo.
Backend structureh2
The backend is split by module in internal/modules (ai, folders, labels, feedback, and so on). Each module has its own handler, service, dto, and routes files, so adding a feature means adding one folder without touching other modules.