diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..01d95a6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,68 @@ +name: Bug Report +description: Report a bug or unexpected behavior +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to report a bug. Please fill in as much detail as possible. + + - type: textarea + id: description + attributes: + label: What happened? + description: A clear description of the bug. + placeholder: Describe the bug... + validations: + required: true + + - type: textarea + id: steps + attributes: + label: Steps to reproduce + placeholder: | + 1. Go to '...' + 2. Tap on '...' + 3. See error + validations: + required: true + + - type: textarea + id: expected + attributes: + label: Expected behavior + placeholder: What did you expect to happen? + validations: + required: true + + - type: input + id: version + attributes: + label: App version + placeholder: e.g. 2.6.46 + validations: + required: true + + - type: input + id: android + attributes: + label: Android version + placeholder: e.g. Android 13 + validations: + required: true + + - type: input + id: device + attributes: + label: Device + placeholder: e.g. Pixel 7, Samsung Galaxy S23 + validations: + required: false + + - type: textarea + id: logs + attributes: + label: Logs or screenshots + description: Attach any relevant screenshots or logcat output. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..a0fd0aa --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,42 @@ +name: Feature Request +description: Suggest a new feature or improvement +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Got an idea? Describe it below and we'll take a look. + + - type: textarea + id: problem + attributes: + label: What problem does this solve? + description: Describe the use case or pain point behind this request. + placeholder: I often find myself wanting to... + validations: + required: true + + - type: textarea + id: solution + attributes: + label: Proposed solution + description: How would you like this to work? + placeholder: It would be great if... + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Any other solutions or workarounds you've tried? + validations: + required: false + + - type: textarea + id: context + attributes: + label: Additional context + description: Screenshots, mockups, or anything else that helps explain the idea. + validations: + required: false diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index d3d0001..48ba783 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -1,12 +1,17 @@ name: Release — build & publish on: - push: + pull_request: + types: [closed] branches: [master] + paths-ignore: + - '**/*.md' + - 'docs/**' jobs: release: name: Build signed APK/AAB & publish + if: github.event.pull_request.merged == true runs-on: ubuntu-latest permissions: contents: write diff --git a/README.md b/README.md index c7b4081..f726683 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,28 @@ # My Notes -**My Notes** is a simple and convenient app for quickly jotting down notes. -Organize your ideas, tasks, and important things without distractions. +**My Notes** is a fast, clean, and fully private note-taking app for Android. +No accounts, no cloud, no ads — just your content stored safely on your device. -[![My Notes on Product Hunt](https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1027550&theme=light&width=200)](https://www.producthunt.com/products/my-notes-4?utm_source=badge-featured&utm_medium=badge&utm_source=badge-my-notes-204c8f1f-1e34-423b-9817-bb05b82b69e2) +--- + +![GitHub release](https://img.shields.io/github/v/release/pasichDev/MyNotes?style=flat-square&label=release) +![Build](https://img.shields.io/github/actions/workflow/status/pasichDev/MyNotes/ci.yml?branch=master&style=flat-square&label=build) +![License](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square) +![Android](https://img.shields.io/badge/Android-8.0%2B-3DDC84?style=flat-square&logo=android&logoColor=white) +![API](https://img.shields.io/badge/API-26%2B-brightgreen?style=flat-square) +![Localized](https://img.shields.io/badge/localized-10%20languages-blueviolet?style=flat-square) +![GitHub stars](https://img.shields.io/github/stars/pasichDev/MyNotes?style=flat-square) +![GitHub issues](https://img.shields.io/github/issues/pasichDev/MyNotes?style=flat-square) +![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square) +--- + +[![My Notes on Product Hunt](https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1027550&theme=light&width=200)](https://www.producthunt.com/products/my-notes-4?utm_source=badge-featured&utm_medium=badge&utm_source=badge-my-notes-204c8f1f-1e34-423b-9817-bb05b82b69e2) +   [![Download on Google Play](https://img.shields.io/badge/Google%20Play-Download-blue?style=for-the-badge&logo=google-play&logoColor=white)](https://play.google.com/store/apps/details?id=com.pasich.mynotes) +--- + ## Screenshots
@@ -14,39 +30,49 @@ Organize your ideas, tasks, and important things without distractions.
-## Why My Notes? - -My Notes was created for people who want a fast, clean and fully private note-taking experience. -No accounts, no cloud, no ads — just your content stored safely on your device. - -The goal is simple: -**Open → Write → Close.** -Zero distractions. - ## Features - 📥 Import from **Google Keep** - 🏷️ **Tags** for sorting and searching notes -- ✍️ **Advanced editor** (headings, lists, quotes, formatting) +- ✍️ **Advanced editor** — headings, lists, quotes, formatting (Editor.js) +- 🔔 **Reminders** with repeat schedules - 🎨 **Themes and colors** to match your mood +- 🌍 **10 languages** — EN, UK, RU, DE, FR, ES, IT, PL, BE, KK - 🚫 **No ads** — just your notes -- 🔒 **Fully offline** — no servers or remote cloud +- 🔒 **Fully offline** — no servers, no cloud - 💻 **Open-source** — transparent and accessible code - 🎯 **Modern and intuitive design** -**My Notes** helps you capture ideas, organize your day, and always keep important information at -hand. - ## Privacy My Notes does not collect or send any data to external servers. -All notes, attachments and preferences are stored **locally on the device**. +All notes, attachments, and preferences are stored **locally on the device**. No tracking, no analytics, no cloud — full privacy by design. -## Contribution - -If you find bugs, issues, or have ideas to improve the app, -please open a new [Issue](https://github.com/pasichDev/My-Notes/issues) in the project repository. +## Tech Stack + +| Layer | Technology | +|---|---| +| Language | Java | +| DI | Dagger Hilt | +| DB | Room | +| Editor | Editor.js (WebView) | +| UI | ViewBinding / DataBinding | +| Build | Gradle + Spotless | + +## Building Locally + +1. Clone the repository: + ```bash + git clone https://github.com/pasichDev/MyNotes.git + ``` +2. Open in **Android Studio** (Hedgehog or newer). +3. Let Gradle sync finish. +4. Install git hooks (one-time): + ```bash + git config core.hooksPath .githooks + ``` +5. Run on a device or emulator (API 26+). ## Development @@ -60,15 +86,16 @@ please open a new [Issue](https://github.com/pasichDev/My-Notes/issues) in the p ./gradlew :app:spotlessApply ``` -**Git hooks** — install once after cloning: - -```bash -git config core.hooksPath .githooks -``` - +**Git hooks:** - **pre-commit** — runs `spotlessCheck` (~15s). Fails fast on format violations. - **pre-push** — runs `lintDebug` (~2–3 min). Skip with `SKIP_LINT=1 git push`. +## Contribution + +Found a bug or have an idea? Open a new [Issue](https://github.com/pasichDev/MyNotes/issues). +Pull requests are welcome — please run `spotlessApply` before submitting. +See [CHANGELOG](./CHANGELOG.md) for release history. + ## License This project is licensed under the terms of the [Apache License 2.0](./LICENSE).