Skip to content

πŸ’» Swift - Boilerplate Front : RxSwift, ReactorKit, JWT, Moya (Beta)

License

Notifications You must be signed in to change notification settings

weareopensource/Swift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Build Status Coveralls Status Code Climate

🌐 WeAreOpenSource Swift - Beta

πŸ“– Presentation

This project is a Swift stack that can be ran as a standalone FrontEnd. Or in a fullstack with another repo of your choice (ex: Node, Vue).

Quick links :

Our stack Swift is actually in Beta.

πŸ’» Swift / RxSwift / ReactorKit

πŸ“¦ Technology Overview

Subject Informations
Available
Architecture Layered Architecture : everything is separated in layers, and the upper layers are abstractions of the lower ones, that's why every layer should only reference the immediate lower layer (vertical modules architecture with Services Pattern))
Server / DB Our Node stack.
Reactive RxSwift - ReactorKit
RxOptional - RxDataSources - RxDataSources - RxAppState
Requests Moya - Kingfisher - images, with cookie plugin
Models Validator - Models struct & Validatable
Flow RxFlow
Tools SnapKit - Then - Reusable - ReusableKit
UX Eureka - Toaster - FontAwesome - SwiftSpinner
Logs CocoaLumberjack - LogFormatter services available
CI Travis CI
fastlane & Slather
Linter SwiftLint - SwiftGen
Developer Code Climate
standard-version / semantic-release - commitlint - commitizen - @weareopensource/conventional-changelog
Dependencies SPM
Being released
Testing in development
In reflexion
wip ....

πŸŽ‰ Features Overview

Available

  • User : classic register / auth or oAuth(microsoft, google) - profile management (update, avatar upload ...)

  • User data privacy : delete all data & account - send all data by mail

  • Tasks : list tasks - get task - add tasks - edit tasks - delete tasks

  • Uploads : get upload stream - add upload - auto delete old via api (ex : image => kingfisher: jwt, styles, cache, or sharp via node api)

  • Notification : example of notificaiton management

πŸ“Œ Prerequisites

Make sure you have installed all of the following prerequisites on your development machine:

  • Git - Download & Install Git
  • Xcode (10.x) - Download & Install Xcode
  • HomeBrew - /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • SwiftLint - brew update && brew install swiftlint (swiftlint autocorrect)
  • SwiftGen - brew update && brew install swiftgen

For CI :

πŸ’₯ Installation

It's straightforward :

git clone https://github.com/weareopensource/swift.git && cd Swift
./carthage-build.sh --platform iOS --no-use-binaries

πŸƒ Running Your Application

Development

  • click on play !

Production

  • in develompment

others

  • lint: swiftlint autocorrect
  • commit : npm run commit
  • release : npm run release -- --first-release standard version, changelog, tag & choose version number : -- --release-as 1.1.1
  • release:auto : GITHUB_TOKEN=XXXXX npm run release:auto semantic release, changelog, tag, release require repositoryUrl conf in package.json

Configuration

In develompment

Notifications

  • enable notifications in config/default/development.json
  • Or xcrun simctl push booted me.weareopensoruce.vue.testing example.apn (on simulator launched)
  • Or xcrun simctl push XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX me.weareopensoruce.vue.testing example.apn (xx => device token)
  • Or drag and drop example.apns on device
  • article

✏️ Contribute

πŸ“œ History

This work is based on MEAN.js and more precisely on a fork of the developers named Riess.js. The work being stopped we wished to take it back, we want to create updated stack with same mindset "simple", "easy to use". The toolbox needed to start projects, but not only with Node and Angular ...

Today, we dreams to create Backs/Fronts, aligns on feats, in multiple languages, in order to allow anyone to compose fullstack on demand (React, Angular, VusJS, Node, Nest, Swift, Go). Feel free to discuss, share other kind of bricks, and invite whoever you want with this mindset to come help us.

Feel free to help us ! :)

πŸ“‹ Licence

Packagist

πŸ”— Links

Blog Slack Discord Mail