https://github.com/cleancocoa/mac-appdev-code
Example project code for the book "Develop Mac Apps With a Clean Architecture and Swift"
https://github.com/cleancocoa/mac-appdev-code
Last synced: 6 months ago
JSON representation
Example project code for the book "Develop Mac Apps With a Clean Architecture and Swift"
- Host: GitHub
- URL: https://github.com/cleancocoa/mac-appdev-code
- Owner: CleanCocoa
- License: mit
- Created: 2014-11-17T13:40:22.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-11-03T07:48:48.000Z (over 8 years ago)
- Last Synced: 2023-04-14T07:22:35.836Z (about 2 years ago)
- Language: Swift
- Homepage: http://cleancocoa.com
- Size: 186 KB
- Stars: 41
- Watchers: 6
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Exploring Mac App Development Strategies
========================================Example project code for the book "[Exploring Mac App Development Strategies](http://leanpub.com/develop-mac-apps-clean-architecture-swift)". Part of the [Clean Cocoa Project](http://cleancocoa.com/).
## The App
There are 2 app targets in this project:
1. `DDDViewDataExample` is the original application which I develop in the book.
2. `CoreDataOnly` is the result of the 4th part of the book, where I remove the separation of Core Data objects and Domain Model entities._Note:_ This repository contains two other branches for historic reason: `core-data-only` and `core-data-ui`. They exist to show how the changes were applied.
The application itself won't be very useful; it's just the result of what I teach in the book and not a piece of software you want to use in your day-to-day life. So the real star is the code and its organization.
### Project Groups
These are the project groups that correspond to layers in the application architecture:
* **Infrastructure** hosts the database access.
* **Domain** is where the business logic and the entities reside; it's supposed to be relatively independent from the actual app, but the `CoreDataOnly` example deviates from that.
* **Application** is glue-code that makes the app run. It's where the `AppDelegate` lives and other orchestrating service objects do their job. The real meat is pushed into Domain and Infrastructure.
* **User Interface** is everything AppKit-related, with Nibs and view controllers and all.## License
Copyright (c) 2014--2016 Christian Tietze.
The code is distributed under The MIT License (MIT). See the `LICENSE` file for details.