Project Overview: isowords
isowords is an innovative word search game designed for iOS devices. It's not just a typical word game, but rather takes place on a unique platform—a vanishing cube. Players connect adjacent letters to create words, aiming for longer words for higher points. An intriguing twist in the game is that once a letter is used three times, its cube disappears, revealing more letters, allowing for continued gameplay and creativity.
isowords is readily available for download on the App Store.
Technical Composition
isowords is developed entirely in Swift, showcasing a robust architecture and dynamic user interface. The backbone of the application lies in the Composable Architecture, which facilitates modularity and testability. The interface primarily employs SwiftUI, with some components implemented in SceneKit. The server side is also designed in Swift, using experimental web server libraries crafted by the team.
The Composable Architecture
The application harnesses the power of Composable Architecture, which brings several advantages such as:
- A unified
Store
holds the app's state in one place. - A central
Reducer
, composed of smaller reducers, implements the app's behavior. - All operations with side effects are explicitly returned from reducers.
- Dependencies are clearly defined as simple data types, which can be easily mocked for testing.
This design allows for intricate features to be deconstructed into smaller domains, facilitating communication through simple state mutations and bypassing conventional dependency management hurdles.
Hyper-Modularization
The isowords project exemplifies hyper-modularization, boasting 86 separate modules within its client and server architecture. This modularity allows for efficient feature development, reducing compile times and enhancing stability. It also contributes to the creation of an App Clip, focusing on minimal code and resources to meet the stringent size requirements.
Unified Client/Server Repository
Both the client and server code reside within a single repository, streamlining development and debugging processes. This integration promotes code sharing between the client and server, from core gameplay logic to request handling, enabling comprehensive integration tests that simulate real server operations.
Automated Visuals for the App Store
The visual assets for isowords on the App Store—screenshots and a preview video—are automatically generated. This automation utilizes the SnapshotTesting library to capture precise game states and construct visual representations. The preview video, a screen recording simulating gameplay, is created using a tailored version of the app.
Preview Apps
For testing and development, isowords can isolate features using mini-applications, allowing developers to focus on specific modules without needing to build the entire app. This is useful for debugging complex scenarios and creating SwiftUI previews when needing to test apps outside of Xcode limitations.
Starting the isowords Project
To explore or contribute to the isowords codebase, you'll need to install Git LFS for asset management and, if interested in server development, ensure PostgreSQL is running. The repository enables seamless setup for either the client alone or both the client and server.
Learn More
For a more in-depth understanding of the concepts within isowords, the Point-Free video series provides valuable insights into functional programming and Swift development.
Related Projects
isowords utilizes various open-source projects, which include:
Licensing
The source code for isowords is available for educational use and allows for alterations, provided it is not used for commercial purposes. Further licensing details are available in their license documentation.