Skip to content

LukaszKrolicki/SyncShop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏪 Topic of the project:

An interactive mobile application supporting group shopping


Project goal:

The aim of the project is to develop a mobile application called "SyncShop" that facilitates group shopping by allowing users to create, share, and update shopping lists collaboratively. The application aims to streamline the process of organizing group purchases, making it easier for users to plan their shopping trips, coordinate with others, and ensure that all necessary items are obtained efficiently.


Product functionalities:

The scope of the created product includes the creation of a mobile android application, nodejs server and a database dedicated to it. Many users will be able to use the system at the same time. It will be a simple, intuitive system.


For all users:

• User Registration: Users can sign up for the system by providing necessary details.

• Password Recovery: Users have the option to recover their passwords in case they forget them.

• Password Change: Users can change their passwords for security reasons or personal preferences.

• Viewing Friend Lists: Users can browse through their list of added friends.

• Removing Friends: Users can remove friends from their list if desired.

• Creating Shopping Lists: Users can create shopping lists to organize their purchases.

• Adding Friends to Shopping Lists: Users can invite their friends to collaborate on shared shopping lists.

• Adding Products to Lists: Users can add products along with their details to the shopping lists.

• Declaring Intent to Purchase: Users can indicate their intention to purchase a specific product from the list.

• Marking Unavailable Products: Users can mark products as unavailable if they are unable to purchase them.

• Marking Products as Purchased: Users can mark products as purchased once they have bought them.


For administrative staff:

• Browsing User List: Users can browse through a list of registered users in the application.

• Changing User Data: Users have the ability to modify their personal information such as name, email, etc.

• Deleting User Account: Users can delete their own accounts if they wish to do so

• Viewing Error Reports: Users can access and review error reports submitted by users regarding any issues or bugs encountered in the application.


Tools we used:

• Kotlin

• Java

• Nodejs

• MySqlWorkbench


ERD database diagram:

image


Architectural pattern:

MVC - model view controller


Crucial models:

Model (Singleton): This class serves as the central model in the MVC architecture. It manages various data structures and is responsible for coordinating interactions between different components of the application. Being implemented as a singleton ensures that there is only one instance of the model throughout the application's lifecycle, promoting data consistency and centralized management.

image

Api.java defines the interface for web services that the client application can invoke to interact with the server. It's part of the REST client, which uses the Retrofit library to communicate with the backend. Retrofit is an HTTP client library for Android and Java that simplifies creating HTTP connections to RESTful services.

image

The ApiDatabaseDriver class is used for communication with the server using a REST-based API, utilizing the Retrofit library to execute HTTP requests and process responses. This class contains various methods for login, registration, fetching protected data, creating users, shopping lists, and managing them, as well as other functions related to the application.

image


User documentation:

image

This is the page that appears immediately after launching the application. The user can log in, create an account, or recover a password.


Registration

image

The user enters their data and clicks "create account".

image

Next, a window appears for entering the verification code from the email.

image

User checks mail inbox

image

and clicks confirm

image

Registration completed

Password retrieve

image

The user enters the email to which the confirmation code will be sent.

image

The user checks their mailbox and enters the code.

image

image

Then they enter a new password.

image

The password change process has been successfully completed.

User menu

image

In the main menu, there are options that the user can choose.

User Notifications

image

The notifications page is displayed immediately after logging in. The user can accept/delete invitations and learn about new lists they've been added to.

Create shopping list

image

image

This view allows creating a new shopping list, adding a date, and selecting friends to share the list with.

Friend Search

image

This view allows searching for people within the application by their "username" and establishing connections.

Friend List

image

This view allows browsing the list of friends and the option to remove a friend.

Shopping lists search

image

This view allows browsing shopping lists, with the types of lists divided into those created by us or by our friends.

Shopping list exit

image

When we want to exit a particular shopping list, a message will appear.

image

Shopping list deletion

image

When we want to delete a list that we created, a message will appear.

image

Shopping list details

image

When we click on "details"...

image

The main section of the program will open.

Add product to shopping list

image

image

Product operations / Planned section

image

The user can check the product details.

image

The user can also move the product to the "purchased," "planned," or "deleted" sections.

Reserved section

image

Here, the user can also check the details, delete the product, or move it back to the planned list.

Bought section

image

The user can check which products have already been purchased.

Settings

image

The user can change their details and password.

Send bug report

image

The user can send an error report to improve the application's functionality.


[[ ADMIN SECTION ]]