An open API service indexing awesome lists of open source software.

https://github.com/jun-murakami/monaco-notepad

A cloud-synchronized notepad application built for programmers
https://github.com/jun-murakami/monaco-notepad

go golang mui mui-material react reactjs typescript wails wails-app wails2

Last synced: 3 months ago
JSON representation

A cloud-synchronized notepad application built for programmers

Awesome Lists containing this project

README

          

# Monaco Notepad

**English** | [日本語](README.ja.md)

**Like OS Notepad × VS Code × Evernote divided by 10**

A programmer's notepad powered by Monaco Editor (the same engine as VS Code). Edit files directly or convert them to cloud notes and sync across devices.

Monaco Notepad Screenshot

[Download](https://github.com/jun-murakami/monaco-notepad/releases/latest)

## Features

### 💡 Hybrid Approach

- **Direct file editing** — Open and edit local files directly
- **Convert to cloud notes** — Transform local files into cloud notes, syncing across devices like Evernote
- **Private storage** — Cloud notes use your Google Drive (app only accesses its dedicated folder)
- **Offline ready** — Works completely without network

### 📝 Editor

- **Monaco Editor** with syntax highlighting for 50+ languages
- **Auto-save** with 3-second debounce
- **Customizable** font family, font size, and editor themes
- **Convenient features** — Word wrap and minimap toggles
- **Dark / Light mode** with smooth theme switching
- **Side-by-side view** for editing two notes simultaneously
- **Markdown preview** with GitHub Flavored Markdown (GFM) support

### 📁 Note Management

- **Basic operations** — Create, edit, archive, and delete notes
- **Folder organization** with drag-and-drop reordering
- **Full-text search** across all notes and file contents with match navigation

### 💾 Local File Editing

- **Open and edit** local files directly
- **Save / Save As** functionality
- **Unsaved changes indicator**
- **Convert to cloud notes** — Transform local files into cloud notes
- **Drag & drop** to open files

## Keyboard Shortcuts

| Shortcut | Action |
| ------------------------ | ------------------------- |
| `Ctrl/Cmd + N` | New note |
| `Ctrl/Cmd + O` | Open file |
| `Ctrl/Cmd + S` | Save file |
| `Ctrl/Cmd + Alt + S` | Save As |
| `Ctrl/Cmd + W` | Close file / Archive note |
| `Ctrl/Cmd + Tab` | Next note |
| `Ctrl/Cmd + Shift + Tab` | Previous note |

## Tech Stack

| Layer | Technology |
| -------- | ----------------------------------------------------------- |
| Backend | Go + [Wails v2](https://wails.io/) |
| Frontend | React 19 + TypeScript + Vite |
| Editor | [Monaco Editor](https://microsoft.github.io/monaco-editor/) |
| UI | Material UI (MUI) v7 |
| Sync | Google Drive API v3 |

## Building from Source

### Prerequisites (Google Drive Credentials)

To use Google Drive sync, create `backend/credentials.json`.
Create an OAuth client in Google Cloud Console, then set `client_id` and `client_secret` like this:

```json
{
"installed": {
"client_id": "XXX",
"project_id": "monaco-notepad",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "XXX",
"redirect_uris": ["http://localhost"]
}
}
```

### Development

```bash
wails dev
```

### Production

```bash
# macOS
./build_mac.sh

# Windows (PowerShell)
./build.ps1
```

## License

[MIT](LICENSE.txt)

## Author

Jun-Murakami ([official site](https://jun-murakami.web.app/))