Book Image

Hands-On Full-Stack Development with Swift

By : Ankur Patel
Book Image

Hands-On Full-Stack Development with Swift

By: Ankur Patel

Overview of this book

Making Swift an open-source language enabled it to share code between a native app and a server. Building a scalable and secure server backend opens up new possibilities, such as building an entire application written in one language—Swift. This book gives you a detailed walk-through of tasks such as developing a native shopping list app with Swift and creating a full-stack backend using Vapor (which serves as an API server for the mobile app). You'll also discover how to build a web server to support dynamic web pages in browsers, thereby creating a rich application experience. You’ll begin by planning and then building a native iOS app using Swift. Then, you'll get to grips with building web pages and creating web views of your native app using Vapor. To put things into perspective, you'll learn how to build an entire full-stack web application and an API server for your native mobile app, followed by learning how to deploy the app to the cloud, and add registration and authentication to it. Once you get acquainted with creating applications, you'll build a tvOS version of the shopping list app and explore how easy is it to create an app for a different platform with maximum code shareability. Towards the end, you’ll also learn how to create an entire app for different platforms in Swift, thus enhancing your productivity.
Table of Contents (19 chapters)
Title Page
Copyright and Credits
Dedication
Packt Upsell
Contributors
Preface
Index

Creating a User model


To support the concept of registering for an app, we will need to first create a User model. A user, similar to a Shopping List or an Item model in our Vapor app, will be a class that contains certain properties, such as name, email, and password. When a user tries to register for our app, they will provide us with their name, email, and password, and we will take those and create a new user record if it does not already exist. In our app, we will use email as the ID by which a user can log in along with their password. Some websites or apps may even have a concept of username, which can be added as a property to the User model; however, for our app, email will suffice to serve as a unique identifier by which we can find a user account.

The user will need to provide a password when registering, and using that password, they will be able to log in. We cannot simply store the password in its original text form in the database, as there are a lot of security concerns since...