# Sofapps

Creiamo app. Mettiti comodo.

Progettiamo, sviluppiamo e curiamo nel tempo le nostre app, per le persone che le usano ogni giorno.

## Le nostre app per iPhone, iPad, Mac e Apple Watch.

- [Voltidia](https://www.sofapps.it/voltidia/it/): La batteria, le ricariche e i costi della tua auto elettrica del gruppo Renault. (iPhone, iPhone Duo, Apple Watch)
- [MLX Benchmarks](https://www.sofapps.it/it/mlxbenchmarks/): Quanto vanno veloci i modelli linguistici sul tuo iPhone, iPad e Mac, misurati allo stesso modo su ogni dispositivo. (iPhone, iPad, iPhone Duo)
- [Prezzi Carburante](https://www.sofapps.it/it/prezzicarburante/): I prezzi dei distributori vicino a te, dagli open data del Ministero. (iPhone, iPad, iPhone Duo)
- [Grade](https://www.sofapps.it/grade/it/): Pedala strade vere sul tuo rullo. Porta un GPX o un FIT, oppure registra tu la strada. (iPhone, iPad, iPhone Duo, Mac, Apple Watch)

## I nostri servizi.

Quello che impariamo facendo le nostre app è a disposizione di aziende e startup.

- **Consulenza**: Idea, strategia e modello di business, prima di scrivere codice.
- **Design e sviluppo**: App native in Swift e SwiftUI, da zero o partendo dalla tua. Nessun framework multipiattaforma.
- **Formazione**: Corsi e workshop su Swift e SwiftUI per il tuo team, dalle basi all’architettura di un’app.
- **Accessibilità**: VoiceOver, Dynamic Type e contrasto elevato fanno parte del progetto dal primo schizzo.
- **Rilascio e cura**: TestFlight, revisione su App Store e aggiornamenti a ogni nuova versione dei sistemi Apple.

## Fatte da persone, alle pendici dell’Etna.

Sofapps nasce a Catania, a due passi dal vulcano più famoso d’Europa. Dietro ogni app c’è chi l’ha pensata e la segue ancora oggi.

Costantino Pistagna è un architetto software e consulente. Tra i primi docenti della iOS Developer Academy di Apple in Europa, sviluppa per il mondo Apple sin dalla nascita del primo iPhone nel 2009. Quando non scrive app, ama cucinare il sushi e viaggiare con la sua splendida famiglia.

## Dal blog

- [Liquid Glass vs Material 3: la fine della convergenza nel design mobile](https://www.sofapps.it/it/blog/liquid-glass-vs-material-3/): Liquid Glass di Apple e Material 3 Expressive di Google allontanano il design mobile, chiudendo anni di convergenza e ponendo nuove scelte a chi sviluppa app.
- [WWDC25: Benvenuto Liquid Glass](https://www.sofapps.it/it/blog/wwdc25-liquid-glass/): Come il design Apple è passato dallo skeuomorfismo del 2007 al minimalismo di iOS 7 fino a Liquid Glass, e perché il vetro si presta alle interfacce a livelli.
- [Dynamic Island: L'isola che non c'è ed il nuovo iPhone 14 Pro](https://www.sofapps.it/it/blog/dynamic-island-iphone-14-pro/): La Dynamic Island di iPhone 14 Pro: come Apple trasforma il notch, nato con iPhone X nel 2017, in una funzione software, e perché sembra un colpo di genio.
- [App Tracking Transparency con Combine](https://www.sofapps.it/it/blog/app-tracking-transparency-combine/): Come incapsulare ATTrackingManager e ASIdentifierManager in un ObservableObject con Combine, per chiedere il consenso al tracking e leggere l'advertising ID.
- [SwiftUI dentro UIKit: collegare due mondi](https://www.sofapps.it/it/blog/swiftui-within-uikit/): Come portare in SwiftUI solo il contenuto di una UITableViewCell, usando UIHostingController e notifiche Combine, senza problemi di scrolling.
- [Apple Silicon: ritorno al futuro](https://www.sofapps.it/it/blog/apple-silicon-back-to-the-future/): Perché l'M1 potrebbe essere per i computer ciò che l'iPhone fu nel 2007: l'integrazione tra hardware e software di Apple e un vantaggio difficile da colmare.
- [Programmare in SwiftUI: ObjectBinding e BindableObject](https://www.sofapps.it/it/blog/swiftui-programming-objectbinding/): Come condividere un modello basato su class tra view SwiftUI con @ObjectBinding e BindableObject, notificando i cambi con il PassthroughSubject di Combine.
- [Programmare in SwiftUI: introduzione agli stati](https://www.sofapps.it/it/blog/swiftui-programming-states/): Come @State lega una view SwiftUI ai suoi dati, perché supera l'approccio dei controller UIKit e come estrarre subview e passare loro un modello.
- [Programmare in SwiftUI: costruire view più complesse](https://www.sofapps.it/it/blog/swiftui-programming-complex-views/): Come costruire in SwiftUI una cella personalizzata con VStack, HStack, Image e Spacer, e come la closure ViewBuilder compone le view senza addSubview.
- [Programmare in SwiftUI: class e struct in SwiftUI](https://www.sofapps.it/it/blog/swiftui-programming-classes-structs/): Perché una class non può sostituire direttamente una struct come View in SwiftUI, quale errore dà il compilatore e come una final class risolve il problema.

## Il podcast

Il Morso: Notizie e curiosità dal mondo Apple, una puntata ogni settimana. 208 puntate. https://www.ilmorso.it/

## Scrivici.

Leggiamo ogni messaggio e rispondiamo di persona.
