A simple desktop note management application built using C# Windows Forms and .NET Framework 4.7.2.
The application allows users to create, edit, delete, search, and manage personal notes with local JSON-based persistence using Newtonsoft.Json.
The project demonstrates practical desktop application development concepts including CRUD operations, data binding, file persistence, and basic separation of responsibilities.
- Features
- Technology Stack
- Architecture
- Design Patterns
- Data Persistence
- Installation
- Project Structure
- Limitations
- Future Improvements
- Contact
Users can create new notes containing:
- Title.
- Content.
- Automatic creation date.
Features:
- Validate required fields.
- Generate unique note ID.
- Save immediately to JSON storage.
Implemented through:
NoteManger.AddNote()The application displays stored notes using:
DataGridView
Displayed information:
- Note ID.
- Title.
- Created Date.
Data retrieval:
NoteManger.GetAllNotes()Users can modify existing notes.
Features:
- Select note from DataGridView.
- Edit title and content.
- Save changes immediately.
Implemented through:
NoteManger.UpdateNote()Users can remove notes from storage.
Features:
- Delete selected note.
- Update JSON file automatically.
Implemented through:
NoteManger.DeleteNote()The application supports searching notes by title.
Features:
- Case-insensitive search.
- Partial title matching.
Implementation:
NoteManger.SearchByTitle()Note:
- The current implementation returns the first matching note.
The application supports text editing operations:
- Copy.
- Paste.
- Cut.
Implemented using Windows Forms TextBox clipboard functionality.
The UI supports:
- Creating a new empty note.
- Clearing current input fields.
- Managing DataGridView selection state.
The project follows a simple layered desktop architecture:
NoteBook Application
|
โ
Presentation Layer
Form1
|
โ
Domain Model
Note
|
โ
Persistence Layer
NoteManger
|
โ
notes.json
Main component:
Form1
Responsibilities:
- Display user interface.
- Handle button events.
- Manage user interaction.
- Bind data to DataGridView.
Main files:
Form1.cs
Form1.Designer.cs
Form1.resx
Class:
Note
Properties:
Id
Title
Content
CreatedDateResponsibilities:
- Represent note data.
- Transfer information between layers.
Class:
NoteManger
Responsibilities:
- Manage note collection.
- Perform CRUD operations.
- Read and write JSON file.
- Generate unique IDs.
Storage:
notes.json
NoteManger works as a repository abstraction.
Responsibilities:
- Hide storage details.
- Provide CRUD methods.
- Manage persistence operations.
Note is a simple data object containing:
Data
+
Properties
without complex business logic.
The application uses:
DataGridView.DataSource
to display note information.
| Category | Technology |
|---|---|
| Language | C# |
| Framework | .NET Framework 4.7.2 |
| UI Framework | Windows Forms |
| Storage | JSON File |
| JSON Library | Newtonsoft.Json 13.0.4 |
| IDE | Visual Studio |
| Build System | MSBuild |
| File Handling | System.IO |
| Input Dialog | Microsoft.VisualBasic InputBox |
| Version Control | Git |
The application stores data locally.
Storage file:
notes.json
Behavior:
- If the file does not exist, an empty note list is created.
- Every add/update/delete operation saves changes immediately.
- CreatedDate is generated automatically:
DateTime.NowInstall:
- Windows Operating System.
- Visual Studio 2022 or compatible version.
- .NET Framework 4.7.2 Developer Pack.
- Clone the repository:
git clone <repository-url>- Open solution:
NoteBook.sln
- Restore NuGet packages.
Required package:
Newtonsoft.Json 13.0.4
-
Build the solution.
-
Run:
F5
NoteBook
โ
โโโ NoteBook.sln
โ
โโโ NoteBook.csproj
โ
โโโ Program.cs
โ
โโโ Form1.cs
โโโ Form1.Designer.cs
โโโ Form1.resx
โ
โโโ Note.cs
โ
โโโ NoteManger.cs
โ
โโโ packages
โ โโโ Newtonsoft.Json
โ
โโโ README.md
When the application starts:
- Checks for:
notes.json
- If unavailable:
Creates empty note collection
-
Loads existing notes.
-
Displays them inside DataGridView.
Current limitations:
- Designed for single-user desktop usage.
- No synchronization for multiple processes.
- Minimal handling for corrupted JSON files.
- Minimal file I/O exception handling.
- Search returns only the first matching result.
- No automated tests.
- No CI/CD pipeline.
- No installer.
- No license file included.
Possible improvements:
- Add Repository Pattern with interfaces.
- Separate Business Logic from UI.
- Add centralized exception handling.
- Add logging system.
- Add backup and restore functionality.
- Add rich text editing.
- Add categories and tags.
- Add note reminders.
- Add unit tests.
- Add automatic updates.
- Create application installer.
Albara Fahed Alharissy
Software Engineer | C# .NET Developer
GitHub:
https://github.com/Albarafahed
LinkedIn: