This project has been refactored using The Composable Architecture, and the latest code is in the composable-architecture branch.
WeChat imitated using SwiftUI.
Although it is just a copy project, I still write it according to the actual production and development requirements, not just at the simple UI level.
The goal of this project is to use the pure SwiftUI framework as much as possible. If SwiftUI does not support it yet, we will not implement it now and wait until SwiftUI supports it.
Redux is widely used in React projects. The concept of declarative programming in SwiftUI is very similar to React. So using Redux in SwiftUI is perfect. What is Redux? How to implement Redux? You can read an article I wrote before "Implementing Redux in SwiftUI"
This project uses the Redux architecture, and the relevant files are in the Redux
folder.
The multi-language processing of this project refers to the method in Kickstarter iOS. Use the bin/strings-script
script and ExternalResources/locales.json
to automatically generate multi-language files and Strings
types. When you need to add a new statement, you only need to add the corresponding translation in locales.json
, and then execute the make strings
command. You can use Strings.xxx()
in the project to get the statement in the current language.
This project contains a large number of unit tests to ensure the accuracy of key logic.
SwiftUIRedux: A Redux library written by me. For ideas on writing, you can read an article I wrote before "Implementing Redux in SwiftUI"
Kickstarter-Prelude: Some convenient Swift-type extensions. I took the code from Kickstarter's Kickstarter-Prelude project and made it into a Swift Package library.
URLImage: Display network images.
LBJMediaBrowser: A library I wrote myself for previewing images and videos.
The user registration and login, chat, contacts and personal information of this project are all implemented through Google's Firebase, trying to simulate the actual development logic as much as possible.
Register and log in
chat
Contact person
Discover
I
Because this project uses Google's Firebase, users in mainland China should connect to a VPN before running it.
Test account: [email protected] / 11111111.
If you are happy to add new features to this project, I would very much welcome it. Please use GitHub Issues to write out the functions you want to do, and then submit a PR after implementation.
I am a code freak and pay great attention to the simplicity and readability of code. Please follow my style when writing code. If you think there are areas that can be improved in the code, please point it out. Thanks!