An iOS notes app built with Swift and UIKit, following Clean Architecture principles.
- Create, edit, and delete notes
- Real-time search by title/content
- Local storage via Core Data
- MVVM + Combine for reactive UI
- Clean, modern UIKit interface
Follows Clean Architecture:
- Presentation: UIKit views, view models (MVVM)
- Domain: Use cases, entities, repositories
- Data: Core Data + mockable sources
- Swift 5, UIKit, Combine
- Core Data (persistence)
- Manual DI
- XCTest (unit testing)
- Clone repo
git clone https://github.com/alimadhoun/NoteManager.git - Open project
open NoteManager.xcodeproj - Run the app
Cmd + R
NoteManager/
βββ Presentation/
β βββ Views/
β β βββ NotesViewController.swift
β β βββ NoteTableViewCell.swift
β βββ ViewModels/
β βββ NotesViewModel.swift
βββ Domain/
β βββ Entities/
β β βββ NoteModel.swift
β β βββ NoteEntity+CoreDataClass.swift
β β βββ NoteEntity+CoreDataProperties.swift
β β βββ NoteEntity+Mapping.swift
β βββ Repositories/
β β βββ NotesRepository.swift
β βββ UseCases/
β βββ NotesUseCase.swift
βββ Data/
β βββ DateSources/
β β βββ CoreDataNotesDataSource.swift
β β βββ MockDataNotesDataSource.swift
β βββ Repositories/
β βββ NotesRepositoryImp.swift
βββ CoreData/
β βββ CoreDataStack.swift
β βββ NotesModel.xcdatamodeld/
βββ Core/
β βββ Extensions/
β βββ Date+Extension.swift
βββ Delegates/
βββ AppDelegate.swift
βββ SceneDelegate.swift
Run unit tests with Cmd + U or:
xcodebuild test -project NoteManager.xcodeproj -scheme NoteManager