You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+14-8Lines changed: 14 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,7 @@ An idea to save time and avoid queues outside supermarkets and other shops in ge
30
30
This is a project made for my graduation exam.
31
31
In the last year we usually study Java, and that's what determined the language to use for the app, instead of Kotlin.
32
32
33
-
It was created during Coronavirus lockdown in Italy. The idea came from [a post on Facebook](https://m.facebook.com/story.php?story_fbid=2814783488643375&id=310949775693438) written in March 2020 by the Italian minister of Agricultural, Food and Forestry Policies. It's also inspired by the system most post offices already use to save time.
33
+
It was created during the Coronavirus lockdown in Italy. The idea came from [a post on Facebook](https://m.facebook.com/story.php?story_fbid=2814783488643375&id=310949775693438) written in March 2020 by the Italian Minister of Agricultural, Food and Forestry Policies. It's also inspired by the system most post offices already use to save time.
34
34
35
35
<aname="features"></a>
36
36
## Features
@@ -52,16 +52,22 @@ A user will receive a push notification (via Firebase Cloud Messaging) when it's
52
52
53
53
### Shop owner
54
54
55
-
A shop owner must reach out an administrator to receive an appropriate account and to register his business in the platform.
55
+
A shop owner must reach out to an administrator to receive an appropriate account and to register his business on the platform.
56
56
57
57
After that, he can manage the queue of his shop and call the next customer.
58
58
59
59
### Administrator
60
60
61
61
An administrator can manage all accounts (both users and shop owners) and all shops.
62
62
63
-
For every user, the access token returned from the server during the login phase,
64
-
it's stored on the device using [EncryptedSharedPreferences](https://github.com/simonesestito/shops-queue-android/blob/master/app/src/main/java/com/simonesestito/shopsqueue/di/module/SharedPreferencesModule.java).
63
+
<aname="security"></a>
64
+
## Security
65
+
66
+
A user must verify its e-mail address after signing up.
67
+
68
+
When the user logs in, its password is NEVER saved on the user's device. Instead, an access token is securely stored in SharedPreferences. Other installed apps aren't allowed to access SharedPreferences, apart from rooted devices. Whenever it's possible, the access token is encrypted using [Jetpack Security library](https://developer.android.com/topic/security/data).
69
+
70
+
If the access token is sniffed, a user will be able to immediately revoke it from the "Active sessions" menu. The password will never be discovered by an attacker.
65
71
66
72
<aname="ui"></a>
67
73
## UI Design
@@ -94,15 +100,15 @@ Then, we have the *Model* layer, where all the data comes from. In this specific
94
100
95
101
This project follows the **Single Activity Architecture** and the **Jetpack Navigation Library**.
96
102
97
-
It has a single Activity, which is the entrypoint of the app. Every other piece of the user's flow is implemented as a Fragment.
98
-
Every part of the app is divided in[different sub-graphs](https://github.com/simonesestito/shops-queue-android/tree/master/app/src/main/res/navigation).
103
+
It has a single Activity, which is the entry point of the app. Every other piece of the user's flow is implemented as a Fragment.
104
+
Every part of the app is divided into[different sub-graphs](https://github.com/simonesestito/shops-queue-android/tree/master/app/src/main/res/navigation).
99
105
100
106
The app uses **Deep Links** to go immediately to the login fragment. It's used as a redirect URI after the email address is validated.
101
107
102
108
<aname="di"></a>
103
109
## Dependency Injection
104
110
105
-
Dependency Injection is a design pattern used in ObjectOriented Programming. It allows the instatiation of a class which depends on another, and so on.
111
+
Dependency Injection is a design pattern used in Object-Oriented Programming. It allows the instantiation of a class which depends on another, and so on.
106
112
107
113
This project uses **Google Dagger**.
108
114
@@ -116,7 +122,7 @@ It's a release process that automatically deploys new versions of the software.
116
122
This project uses **GitHub Actions**.
117
123
118
124
Every time a new commit is pushed to this repository, a workflow is triggered.
119
-
A new version of the app is compiled on GitHub servers, shrinked using Android R8, signed with the release certificate and, finally, pushed to the app's storage bucket to let everyone download it.
125
+
A new version of the app is compiled on GitHub servers, shrank using Android R8, signed with the release certificate and, finally, pushed to the app's storage bucket to let everyone download it.
120
126
121
127
The file which describes the workflow and the build process is [android.yaml](https://github.com/simonesestito/shops-queue-android/blob/master/.github/workflows/android.yml)
0 commit comments