Skip to content

Peanut is an orginizational application focusing on user customization whithin a simple interface.

License

Notifications You must be signed in to change notification settings

dimerabbits/Peanut

Repository files navigation

logo

Peanut

Language Swift 5.5 Twitter: @dimerabbits

Peanut is an organizational application focusing on user customization within a simple interface.

Table of Contents

User Features

  • Dynamic Organization: Handle multiple projects at once by setting reminders, prioritization, sorting, and your choice of color scheme.
  • Tracking Productivity: Keep a close eye on your progress to ensure there is never a deadline missed. Utilize Peanut to meet the goals specific to your work.
  • Sharing: Post comments to share updates and engage with team members to inspire new ideas.

Architecture

  • Modeled with Core Data using an inverse relationship with parent/child entities "To Many".
  • Integrated with CloudKit to enable sharing functionality.
  • Composed primarily without UIKit except for bridging Quick Actions capability and dismissing the keyboard in TextEditor.
  • Pragmatically utilized MVVM where necessary.
  • Built with Accessibility in mind: VoiceOver, grouping data, adding traits and additional labels.

System Integrations

  • Haptics
  • Spotlight
  • Local Notifications
  • StoreKit (In-app purchasing)
  • Shortcuts
  • Home Screen Quick Actions
  • Widgets
  • Storing data in iCloud
  • Querying data from iCloud
  • Posting Comments through iCloud
  • Ratings and Review Request
  • Sign in with Apple

Additional Coaching Points

  • Core sample data for Canvas previews. - optimizing with previewLayout, preferredColorScheme, etc…
  • Extending 'Error' to handle CloudKit errors.
  • SwiftLint - Working off Command Line and implementing as a build phase. Adjusting .yml arguments.
  • Documenting Code - Documentation Comments, MARKS, FIXME, TODO, Orphaned explanation.
  • Testing (Unit & UI) - Measuring performance, setting benchmarks.
  • Internationalization(i18n) & localization(l10n) - genstrings, plurals, interpolated data, and localized to English and Spanish.
  • State Restoration - @AppStorage / @SceneStorage and attaching tag to the Hashable protocol.

Taking it Further…

  • WelcomeView
  • AboutView
  • Completely localized to Spanish
  • Custom TextField (includes clearing text functionality)
  • Custom Progress View
  • Custom Color Picker LazyHGrid
  • String Interpolation and Rendering Markdown content in text
  • Adjusting List row seperator visibility and color
  • Creating a List / ForEach from a binding
  • additional data model attribute - "note" (TextEditor)
  • CKQueryOperation deprecation fix (recordsMatchedBlock, queryResultBlock)
  • Adding additional NavigationLinks to ProjectSummaryView
  • Adjusting list row seperator, visibility, and color
  • ProgressTiled - Project Summary on TodayView using guage meter
  • Shadows and glows (inner, raised)
  • @FocusState - reading and writing the current focus position in view hierarchy. Dismissing the keyboard
  • NotesHeader - Resigning First Responder to dismiss the keyboard in TextEditor
  • SwiftUI for iOS 15 - confirmationDialog, withAnimation, Button roles, submitLabel, textSelection, symbolRenderingMode, Visual Effect Blurs using Material, focusable, alert, onSubmit, foregroundStyle(semantic colors, gradients, glows, shadows)
  • Incorporating a multitude of Swift 5.5 API’s and Adhering to the latest Apple Interface Guidelines.

Credits

Learning from Paul Hudson.

License

Peanut is MIT licensed, as found in the LICENSE file.