notes_app/README.md

67 lines
2.3 KiB
Markdown

# Notes App
A lightweight personal notes app for Android with plain text and checklist note types.
## Features
- **Two Note Types**: Plain text notes and checklists
- **Dark Mode Only**: Optimized for low-light usage
- **Sortable List**: Sort by date (most/oldest) or alphabetically (A-Z/Z-A)
- **Swipe to Delete**: Swipe any note left/right to delete with confirmation
- **Auto-save**: Notes are automatically saved as you type
- **Checklist Features**:
- Add/remove items
- Toggle checkboxes
- Progress indicator (X/Y completed)
- **"Delete All Checked" button** - Remove all checked items at once
## Requirements
- Android Studio Hedgehog or later
- JDK 17
- Minimum SDK: API 24 (Android 7.0)
- Target SDK: API 34 (Android 14)
## How to Build
1. Open Android Studio
2. Select **File > Open** and navigate to the `NotesApp` folder
3. Wait for Gradle sync to complete
4. Connect an Android device or start an emulator (API 24+)
5. Click **Run** (Shift+F10) or select **Run > Run 'app'**
## Project Structure
```
NotesApp/
├── app/src/main/java/com/notesapp/
│ ├── MainActivity.java # Main activity hosting fragments
│ ├── fragments/
│ │ ├── NotesListFragment.java # Note list with sorting & swipe-to-delete
│ │ └── NoteEditorFragment.java # Editor for text and checklist notes
│ ├── adapters/
│ │ ├── NotesAdapter.java # RecyclerView adapter for note cards
│ │ └── ChecklistAdapter.java # RecyclerView adapter for checklist items
│ ├── models/
│ │ ├── Note.java # Data model with JSON serialization
│ │ └── ChecklistItem.java # Checklist item data model
│ └── utils/
│ └── NotesStorage.java # SharedPreferences storage layer
├── app/src/main/res/
│ ├── layout/ # XML layouts
│ ├── drawable/ # Vector icons
│ └── values/ # Colors, strings, themes
└── build.gradle # App configuration
```
## Storage
Notes are stored in SharedPreferences with the following structure:
- `note_count`: Next available ID
- `sort_order`: Current sort preference
- Per-note data (JSON serialized): type, title, content/items, timestamp
## License
Personal use only.