1- < section class = "phx-hero " >
2- < img src = "<%= Routes.static_path(@conn, " /images /swiftui-96x96_2x.png ") % > " alt="SwiftUI logo" width=96 height=96>
3- < h1 >
4- <%# = "Guides to well-designed components using SwiftUI & app architecture using Combine" %>
5- <%= "Thinking in components with SwiftUI & Combine best practices for app architecture" %>
6- </ h1 >
7- < p >
8- <%# The past five years I’ve used React and RxJS to build professional apps. %>
9- React and RxJS have been my web tools of choice for the past five years.
10- < br > Learn how these lessons can be applied to the Swift world.
11- </ p >
12- </ section >
1+ < div class = "bg-purple-900 text-white " >
2+ < section class = "container px-6 pt-12 pb-12 " >
3+ < h1 class = "mx-auto max-w-4xl text-5xl text-center font-bold leading-tight text-shadow " >
4+ < img class = "inline-block mr-2 " src = "<%= Routes.static_path(@conn, " /images /swiftui-96x96_2x.png ") % > " alt="SwiftUI logo" width=96 height=96>
5+ <%= "Learn SwiftUI & Combine" %>
6+ </ h1 >
7+ < p class = "my-8 mx-auto max-w-3xl text-4xl text-center leading-snug italic text-purple-100 text-shadow " >
8+ <%= "Learnings from five years of component systems applied to the Swift world." %>
9+ </ p >
10+ < p class = "py-2 text-xl text-center " >
11+ Topics include:
12+ <%= for text <- [ "SwiftUI" , "Combine" , "Component Design" , "Data Flow" , "APIs" , "Composing" , "Testing" , "Performance" , "Clarity" , "Documentation" , "Device Adapting" ] do %>
13+ < a href = "# " class = "inline-block mx-1 mb-3 px-4 py-2 font-bold bg-white text-blue-600 hover:bg-blue-500 hover:text-white rounded shadow-xl " > <%= text %> </ a >
14+ <% end %>
15+ </ p >
16+ </ section >
17+ </ div >
1318
14- < h2 > Topics covered include:</ h2 >
15-
16- < ul >
17- < li > Atomic design</ li >
18- < li > Styling approaches</ li >
19- < li > Reusability trade-offs</ li >
20- < li > Testing components</ li >
21- < li > Testing data flow</ li >
22- < li > Composable component patterns</ li >
23- < li > Handling errors</ li >
24- < li > Caching data</ li >
25- < li > Improving performance in the right areas</ li >
26- </ ul >
19+ < div class = "bg-white " >
20+ < section class = "container pt-8 pb-16 " >
21+ < article class = "mb-8 " >
22+ < h2 class = "mb-2 text-2xl leading-normal text-purple-800 " > Atomic design</ h2 >
23+ < p >
24+ Learn how to name components. Apply the single responsibility principle. Find the indivisible component units, and compose them together into larger molecules.
25+ </ p >
26+ </ article >
27+ < article class = "mb-8 " >
28+ < h2 class = "mb-2 text-2xl leading-normal text-purple-800 " > Styling approaches</ h2 >
29+ < p >
30+ Extract common styles. Define a style guide. How do you keep styles consistent?
31+ </ p >
32+ </ article >
33+ < article class = "mb-8 " >
34+ < h2 class = "mb-2 text-2xl leading-normal text-purple-800 " > Reusability trade-offs</ h2 >
35+ < p >
36+ What sort of components should be resuable? How granular should you go?
37+ </ p >
38+ </ article >
39+ < article class = "mb-8 " >
40+ < h2 class = "mb-2 text-2xl leading-normal text-purple-800 " > Pattern libraries</ h2 >
41+ < p >
42+ When do you need a pattern library? Who are they for? How should you manage them?
43+ </ p >
44+ </ article >
45+ < article class = "mb-8 " >
46+ < h2 class = "mb-2 text-2xl leading-normal text-purple-800 " > Testing components</ h2 >
47+ < p >
48+ Unit test components. Test the behaviours that matter first. Use type-safety to remove impossible states.
49+ </ p >
50+ </ article >
51+ < article class = "mb-8 " >
52+ < h2 class = "mb-2 text-2xl leading-normal text-purple-800 " > Testing data flow</ h2 >
53+ < p >
54+ Test your data flow in isolation. Use test-driven design. Mock APIs and other sources.
55+ </ p >
56+ </ article >
57+ < article class = "mb-8 " >
58+ < h2 class = "mb-2 text-2xl leading-normal text-purple-800 " > Composable component patterns</ h2 >
59+ < p >
60+ Components are < em > really</ em > composable. Can we reduce boilerplate? What useful component utilities can we make?
61+ </ p >
62+ </ article >
63+ < article class = "mb-8 " >
64+ < h2 class = "mb-2 text-2xl leading-normal text-purple-800 " > Handling errors</ h2 >
65+ < p >
66+ Handle errors from publishers. What and when should you show users?
67+ </ p >
68+ </ article >
69+ < article class = "mb-8 " >
70+ < h2 class = "mb-2 text-2xl leading-normal text-purple-800 " > Caching data</ h2 >
71+ < p >
72+ Learn how to name components. Apply the single responsibility principle. Find the atomic units, and compose them together.
73+ </ p >
74+ </ article >
75+ < article class = "mb-8 " >
76+ < h2 class = "mb-2 text-2xl leading-normal text-purple-800 " > Improving performance in the right areas</ h2 >
77+ < p >
78+ Learn when you should focus on performance. Measure to be informed. Apply optimization techniques.
79+ </ p >
80+ </ article >
81+ < article class = "mb-8 " >
82+ < h2 class = "mb-2 text-2xl leading-normal text-purple-800 " > Automating repetitive tasks</ h2 >
83+ < p >
84+ Produce screenshots across many devices.
85+ </ p >
86+ </ article >
87+ </ section >
88+ </ div >
0 commit comments