Skip to content

wafflestudio/snutt-ios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Logo

SNUTT iOS

The best timetable application for SNU students, developed and maintained by SNU students.

App Store · Request Feature · Report Bug · Wafflestudio

About The Project

This repository contains two iOS projects in the root directory: ./SNUTT and ./SNUTT-2022.

SNUTT SNUTT-2022
First Release 2017.03.22 2022.11.12
Directory ./SNUTT ./SNUTT-2022
Version <=2.1.3 >=3.0.0
Framework UIKit SwiftUI
Status deprecated maintained

Features

  • ♻️ Clean Architecture + MVVM
  • 🌓 Dark Mode Support
  • 🖼️ Widgets Support
  • 💫 Hand-crafted UI components

Getting Started

Prerequisites

To get the project up and running, ensure that you have the following files in appropriate path:

  • SNUTT-2022/SNUTT/DebugConfig.xcconfig
  • SNUTT-2022/SNUTT/ReleaseConfig.xcconfig
  • SNUTT-2022/SNUTT/GoogleServiceDebugInfo.plist
  • SNUTT-2022/SNUTT/GoogleServiceReleaseInfo.plist

You'll need to have fastlane installed on your local development machine. See fastlane installation guide for more information. One of the possible methods could be using homebrew:

brew install fastlane

Installation

  1. Clone the repository.

    git clone https://github.com/wafflestudio/snutt-ios.git
  2. Navigate to the project folder.

    cd SNUTT-2022
  3. Configure necessary certificate and provisioning profile. You can switch between multiple environments, including environment variables and code signing settings, all at once via following commands. Note that you must provide a valid passphrase when prompted.

    fastlane certificates_development --env dev
    # or
    fastlane certificates_development --env prod
    # or
    fastlane certificates_distribution --env dev
    # or
    fastlane certificates_distribution --env prod
  4. Now you should be able to run the app on your real iOS devices!

Deployment

⚠️ Admin privileges for this repository are required in order to push this app to the App Store or TestFlight.

This project is deployed by the tag-based deployment method. Simply create and push tags according to the rules below, and fastlane will take care of the rest.

^(testflight|appstore)\/v(\d+)\.(\d+)\.(\d+)-(release|debug)\.(\d+)$

For instance, a tag named testflight/v3.0.0-debug.1 will trigger an action that creates a debug build of the app, sets the version and build number as 3.0.0 and 1 respectively, and uploads it to TestFlight.

Alternatively, an action scheduled under the tag named appstore/v3.0.0-release.1 will create a release build and submit it to App Store for review. Note that after the review process is complete, you should manually choose to release the app on App Store Connect.

Caveats

  • You cannot upload debug builds to App Store. In other words, tag names such as appstore/v3.0.0-debug.1 will be ignored.
  • The build numbers for any specific version should be monotonically increasing for each build configuration. For example, appstore/v3.0.0-release.5 can't precede testflight/v3.0.0-release.3.
  • To submit a build to App Store, you must create a new release. The release description should be carefully written, because it will go directly into the App Store changelog.

Roadmap

  • iOS 16 support (Lock Screen Widgets, Live Activities, etc.)
  • Multi-language support
  • Apple Watch support

See the open issues for a full list of proposed features (and known issues).

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".

Maintainers

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgments

The app architecture is highly inspired by the following source codes and articles.

Big credit to @Rajin9601, who is the original author of this project.