# Platform Notes
- We're building an iOS app with modern Swift. We're targeting iOS 18. We expect to use the latest (as of Spring 2025) iOS SDK API updates and Swift language updates. One exception: we prefer to use CoreData over SwiftData for now.
- We're striving for an Apple Design Award, and expect our app to be solely focused on Apple's ecosystem. 
## SwiftUI and Apple Design Language
Given our Platform Notes above, here's a few SwiftUI specific guidelines to keep in mind:
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | { | |
| "coffeeShops": [ | |
| { "name": "Blue Bottle Coffee", "address1": "456 University Ave", "city": "Palo Alto", "state": "CA"}, | |
| { "name": "Ritual", "address1": "456 University Ave", "city": "Palo Alto", "state": "CA"}, | |
| { "name": "CoffeeShop", "address1": "456 University Ave", "city": "Palo Alto", "state": "CA"}, | |
| { "name": "Spike's Coffee & Teas", "address1": "456 University Ave", "city": "Palo Alto", "state": "CA"}, | |
| { "name": "La Boulange", "address1": "456 University Ave", "city": "Palo Alto", "state": "CA"}, | |
| { "name": "Dynamo Donut and Coffee", "address1": "456 University Ave", "city": "Palo Alto", "state": "CA"}, | |
| { "name": "The Mill", "address1": "456 University Ave", "city": "Palo Alto", "state": "CA"}, | |
| { "name": "Piccino Coffee Bar", "address1": "456 University Ave", "city": "Palo Alto", "state": "CA"}, | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | raven.js:80 [import] git: bbde0371c3bfc17c655666ea2cb9e66454e281c7, stamp: EA2F3796832513E3 | |
| raven.js:355 Uncaught TypeError: Cannot read property 'resolved_at' of undefined | |
| raven.js:80 [stamp] djkgoedvczj2lnmi | |
| raven.js:80 [git] 5d9f72062c4464550428787c09024ffc2e935434 | |
| raven.js:80 [App] Browser is online | |
| raven.js:80 [App] Website is online | |
| raven.js:80 [GPU] vendor:"NVIDIA Corporation" renderer:"NVIDIA GeForce GT 750M OpenGL Engine" | |
| raven.js:80 [Timer] CanvasView::initializeGPU 0.157s | |
| raven.js:80 [Timer] App::create 0.506s | |
| raven.js:80 [MultiplayerSession] connecting to wss://www.figma.com/api/multiplayer/XPHSUTgvKseF0iWVLxVb7Ark?role=editor | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | - http://haraldurthorleifsson.com/ (more visual, but nice injections of process) | |
| - http://www.michaelevensen.com/building-soundcloud/introduction/ (story / in-depth process) | |
| - http://www.teehanlax.com/ (well-balanced stories + process) | |
| - http://jedmund.com/made/foundation (well-balanced process + visuals) | |
| - http://sfcd.com/work/campus/ (visual + bit of process) | |
| - http://harkmylord.com/ (visual) | |
| - http://kerem.co/ (visual + simple) | |
| - http://isaacpvl.com/threadmeup/ (super interactive) | |
| - http://christinewalthall.com/venmo.html (visual + process, similar to Harald) | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | if [ -f "$rvm_path/scripts/rvm" ]; then | |
| source "$rvm_path/scripts/rvm" | |
| if [ -f ".rvmrc" ]; then | |
| source ".rvmrc" | |
| fi | |
| if [ -f ".ruby-version" ]; then | |
| rvm use `cat .ruby-version` | |
| fi | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | // =========================== | |
| // Table of Contents | |
| // 0.0 Setup, variables and mixins | |
| // 1.0 -- | |
| // =========================== | |
| $color_primary_copy: #403D3D; | |
| $color_primary_header: darken(#403D3D, 5%); | |
| $font_family_primary: "Proxima Nova Soft", "proxima-nova-soft", "Helvetica", sans-serif; | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | def as_json(options={}) | |
| { | |
| # Additions to make consistent with the new version of the API and iOS client | |
| id: self.id, | |
| user: { | |
| id: @user.id, | |
| display_name: @user.display_name, | |
| username: @user.username, | |
| avatar: { | |
| square: @user.avatar.url(:square), | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | Fatal error: Uncaught exception 'Stripe_CardError' with message 'An error occurred while processing your card. Try again in a little bit.' in /nfs/c01/h13/mnt/32571/domains/valhead.com/html/book/lib/Stripe/ApiRequestor.php:148 Stack trace: #0 /nfs/c01/h13/mnt/32571/domains/valhead.com/html/book/lib/Stripe/ApiRequestor.php(202): Stripe_ApiRequestor->handleApiError('{? "error": {?...', 402, Array) #1 /nfs/c01/h13/mnt/32571/domains/valhead.com/html/book/lib/Stripe/ApiRequestor.php(104): Stripe_ApiRequestor->_interpretResponse('{? "error": {?...', 402) #2 /nfs/c01/h13/mnt/32571/domains/valhead.com/html/book/lib/Stripe/ApiResource.php(111): Stripe_ApiRequestor->request('post', '/v1/charges', Array) #3 /nfs/c01/h13/mnt/32571/domains/valhead.com/html/book/lib/Stripe/Charge.php(38): Stripe_ApiResource::_scopedCreate('Stripe_Charge', Array, NULL) #4 /nfs/c01/h13/mnt/32571/domains/valhead.com/html/book/payment.php(38): Stripe_Charge::create(Array) #5 {main} thrown in /nfs/c01/h13/mnt/32571/domains/valhead.com/html/book | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # A sample Guardfile | |
| # More info at https://github.com/guard/guard#readme | |
| # guard 'rspec', :version => 2, :all_after_pass => false, :cli => '--drb' do | |
| # watch(%r{^spec/.+_spec\.rb$}) | |
| # watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" } | |
| # watch('spec/spec_helper.rb') { "spec" } | |
| # # Rails example | |
| # watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" } | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # We have this in the Calendar.rb model | |
| def create_events | |
| ical_file = open(url) | |
| cal = RiCal.parse(ical_file).first | |
| cal.events.each do |event| | |
| e = Event.find_or_initialize_by_url(event.url) | |
| e.update_attributes({ | |
| name: event.summary, | |
| event_start: event.dtstart.utc, | |
| event_end: event.dtend.utc, | 
NewerOlder