This project is a basic authentication (login) system developed in Swift 6, using the MVVM-C (Model-View-ViewModel-Coordinator) architecture. The Weather Forecast App is configured with XcodeGen and includes support for unit testing, interface testing, and snapshot testing. Below are the installation instructions and a description of the main technologies and features implemented.
- Requirements
- Technologies Used
- Screens
- Test
- UI Test
- Features Implemented
- Folder Structure
- Installation
- Troubleshooting
- Versioning
- Contributions
- How to Contribute
- License
Before starting, make sure you have the following requirements installed:
- Xcode (Version 16.0 or higher)
- macOS (Version 15 or higher)
- Swift 6
- XcodeGen For project generation.
- Swift 6: Main programming language.
- UIKit: Standard library for building the graphical interface.
- XCTest, Unit and UI: Used to do the tests.
- SnapshotTesting: For snapshot testing. https://github.com/uber/ios-snapshot-test-case
- XcodeGen: A tool for generating Xcode projects from YAML files. https://github.com/yonaskolb/XcodeGen
- URLSession: Used to make project requests.
- MVVM-C (Model-View-ViewModel-Coordinator): Architectural pattern used in the project.
- API public: https://openweathermap.org/
- Dashboard: Displaying the weather forecast.
- Login with Email and Password: Local credential validation and server integration.
- Simple and Functional Interface: Minimalistic design using UIKit.
WeatherForecastApp
│
├── WeatherForecast
│ ├── Assets
│ │
│ ├── Classes
│ │
│ └── Tests
│
├── WeatherForecast-Sample
│
├── WeatherForecastUITests
│
brew install xcodegen
git clone https://github.com/jovitorneves/WeatherForecastApp.git
xcodegen
Navigate to the directory where you cloned the project and open the .xcworkspace
file in Xcode.
open WeatherForecast.xcworkspace
In Xcode, select the target (simulator or physical device) and click the Run button (play icon) to build and run the application.
If you encounter a "permission denied" error while running xcodegen, it may be due to insufficient permissions for the current user. Here are a few solutions to resolve this issue:
- Check File Permissions: Ensure that you have the correct permissions for the project directory. You can change the permissions by running:
chmod 755 scripts/{change_to_file_name}.sh
This project follows semantic versioning:
- v1.0.0: Initial release with basic login functionality.
Contributions are welcome! Feel free to open issues or pull requests.
- Fork the project.
- Create a new branch (
git checkout -b feature/new-feature
). - Commit your changes (
git commit -m 'Add new feature'
). - Push to the branch (
git push origin feature/new-feature
). - Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.