{"id":48375280,"url":"https://github.com/abdallah-moh1/amethyst","last_synced_at":"2026-04-05T18:03:18.226Z","repository":{"id":348596767,"uuid":"1191215667","full_name":"abdallah-moh1/amethyst","owner":"abdallah-moh1","description":"Amethyst - A modern markdown note-taking application","archived":false,"fork":false,"pushed_at":"2026-04-01T23:19:47.000Z","size":2009,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-02T08:58:02.819Z","etag":null,"topics":["amethyst","electron","markdown","notes","notes-app","react","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abdallah-moh1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-25T02:58:07.000Z","updated_at":"2026-04-01T23:19:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/abdallah-moh1/amethyst","commit_stats":null,"previous_names":["abdallah-moh1/amethyst"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/abdallah-moh1/amethyst","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdallah-moh1%2Famethyst","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdallah-moh1%2Famethyst/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdallah-moh1%2Famethyst/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdallah-moh1%2Famethyst/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abdallah-moh1","download_url":"https://codeload.github.com/abdallah-moh1/amethyst/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdallah-moh1%2Famethyst/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31444703,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T15:22:31.103Z","status":"ssl_error","status_checked_at":"2026-04-05T15:22:00.205Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amethyst","electron","markdown","notes","notes-app","react","typescript"],"created_at":"2026-04-05T18:03:16.935Z","updated_at":"2026-04-05T18:03:18.217Z","avatar_url":"https://github.com/abdallah-moh1.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Amethyst\n\nA modern markdown note-taking desktop application built with Electron, React, Vite, and TypeScript.\n\nAmethyst is currently in early development. The current `v0.1.0` milestone focuses on the editor foundation: a working desktop shell, a CodeMirror-based editor, a resizable three-panel layout, and a basic built-in theme/settings pipeline.\n\n## Current status\n\nAmethyst is currently in early development.\nVersion 0.1.0 includes the editor foundation and application architecture.\nNotes, notebooks, preview, and split view will be added in future releases.\n\n**Released:** `v0.1.0`\n\nWhat currently works:\n\n- Electron desktop shell\n- React renderer with Vite\n- CodeMirror editor integration\n- Resizable left / center / right workspace panels\n- Collapsible side panels\n- Built-in dark and light theme loading\n- Settings persistence infrastructure\n- GitHub Actions CI and tagged release workflow\n\nWhat is not implemented yet:\n\n- Notes and notebooks\n- Saving markdown files\n- Preview pane\n- Split editor/preview view\n- Search\n- Outline panel contents\n- Full settings UI\n\n## Screenshots\n\n![Amethyst Screenshot Dark Theme](./screenshots/screenshot-dark.png)\n![Amethyst Screenshot Light Theme](./screenshots/screenshot-light.png)\n\n## Tech stack\n\n| Layer         | Technology                  |\n| ------------- | --------------------------- |\n| Desktop shell | Electron                    |\n| Renderer      | React                       |\n| Build tool    | Vite                        |\n| Language      | TypeScript                  |\n| Editor        | CodeMirror 6                |\n| Layout        | react-resizable-panels      |\n| Styling       | CSS variables + JSON themes |\n| Packaging     | electron-builder            |\n\n## Project structure\n\n```text\namethyst/\n├── assets/                # Icons and packaging assets\n├── electron/              # Electron main process, preload, IPC, native-side services\n│   ├── ipc/               # IPC handler registration\n│   ├── services/          # Settings/theme services on the main process\n│   ├── themes/            # Built-in JSON theme definitions\n│   └── window/            # BrowserWindow creation\n├── shared/                # Types shared by main and renderer\n├── src/                   # React renderer application\n│   ├── app/               # App bootstrap and root app component\n│   ├── features/          # Feature modules (editor, sidebar, right panel, workspace)\n│   ├── layout/            # App shell and panel layout composition\n│   ├── services/          # Renderer-side IPC client wrappers\n│   ├── styles/            # Global and layout CSS\n│   └── utils/             # Small DOM/UI helpers\n├── .github/workflows/     # CI and release automation\n├── package.json\n└── vite.config.ts\n```\n\n## How the app is structured\n\nAmethyst follows a simple Electron architecture:\n\n- **Main process** creates the native window, owns filesystem access, and persists settings.\n- **Preload** exposes a narrow, safe API to the renderer through `window.amethyst`.\n- **Renderer** contains the React UI and talks to the main process only through IPC wrappers.\n- **Shared types** keep the contract between both sides aligned.\n\nFor more detail, see [ARCHITECTURE.md](./ARCHITECTURE.md).\n\n## Development\n\n### Install dependencies\n\n```bash\nnpm install\n```\n\n### Run in development\n\n```bash\nnpm run dev\n```\n\nThis starts:\n\n- the Vite development server for the renderer\n- Electron, pointed at the Vite dev URL through `ELECTRON_START_URL`\n\n### Run checks\n\n```bash\nnpm run check\n```\n\nThis runs type-checking, linting, formatting checks, and a production build.\n\n## Build and package\n\n### Build renderer + Electron main code\n\n```bash\nnpm run build\n```\n\n### Build installable packages\n\n```bash\nnpm run build:electron\n```\n\nThis packages the app with `electron-builder`.\n\nCurrent targets:\n\n- **Windows:** NSIS installer, portable executable\n- **macOS:** DMG, ZIP\n- **Linux:** AppImage, DEB, RPM, tar.gz\n\n## Available scripts\n\n| Script                       | Description                                              |\n| ---------------------------- | -------------------------------------------------------- |\n| `npm run dev`                | Start Vite and Electron together for local development   |\n| `npm run build`              | Build the renderer and Electron TypeScript output        |\n| `npm run build:electron`     | Create packaged desktop release artifacts                |\n| `npm run build:electron:dir` | Build unpacked output for inspection/debugging           |\n| `npm run preview`            | Preview the Vite production renderer build               |\n| `npm run lint`               | Run ESLint                                               |\n| `npm run lint:fix`           | Run ESLint and apply fixes where possible                |\n| `npm run format`             | Format the repository with Prettier                      |\n| `npm run format:check`       | Check formatting with Prettier                           |\n| `npm run typecheck`          | Type-check both renderer and Electron TypeScript configs |\n| `npm run check`              | Run typecheck + lint + format check + build              |\n\n## Themes\n\nAmethyst already has a small theme system.\n\nCurrent built-in themes:\n\n- `amethyst-dark`\n- `amethyst-light`\n\nThemes are defined as JSON files in `electron/themes/` and applied in the renderer by mapping theme tokens to CSS custom properties.\n\nLonger term, this can grow into a custom-theme system without changing the basic contract.\n\n## Settings\n\nThe project already includes a basic settings persistence layer.\n\nCurrent stored settings:\n\n- selected theme\n- autosave flag\n\nSettings are stored in the Electron `userData` directory as `settings.json`.\n\nThe settings model is intentionally small right now because the settings UI has not been built yet.\n\n## Storage\n\n### Current\n\n- **Settings:** stored in the app's `userData/settings.json`\n- **Themes:** built-in JSON files bundled with the app\n- **Notes:** not implemented yet\n\n### Planned\n\nOnce note storage is added, markdown notes and notebook metadata will likely live in a user-chosen local directory while app-level preferences remain in `userData`.\n\n## Documentation\n\n- [CHANGELOG.md](./CHANGELOG.md)\n- [ROADMAP.md](./ROADMAP.md)\n- [ARCHITECTURE.md](./ARCHITECTURE.md)\n\n## Contributing\n\nContributions are welcome later, but the project is still in early architecture-first development.\n\nIf you want to contribute once the project stabilizes:\n\n1. Fork the repository.\n2. Create a feature branch.\n3. Keep changes focused and small.\n4. Run `npm run check` before opening a pull request.\n5. Explain the change clearly in the PR description.\n\n## License\n\nAmethyst is licensed under the **AGPL-3.0-or-later** license. See [LICENSE](./LICENSE).\n\n## Author\n\n**Abdallah Mohammad**\n\n- GitHub: `abdallah-moh1`\n- Email: `abdallah.moh.q@gmail.com`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdallah-moh1%2Famethyst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabdallah-moh1%2Famethyst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdallah-moh1%2Famethyst/lists"}