Skip to content

Android freelance application project for course at university

Notifications You must be signed in to change notification settings

alexsasu/Android-Freelance-App

Repository files navigation

Freelance4ALL

logo

Application Description

Android application developed in Android Studio, for the Software Development Methods course taken in the 2nd year at the Faculty of Mathematics and Computer Science from the University of Bucharest, for freelancing purposes, bearing similarities with the Fiverr website.

Freelance4ALL is, as the name suggests, a freelance platform that allows people from around the world to advertise and sell personal services. Every user has a profile (containing info such as: email, profile description, phone number), and can opt between two types of roles: buyer and seller. Sellers can add any new service (consisting of: web design, music making, game development, art, etc) and modify their existent services, while buyers can purchase any service by adding it to a shopping cart and then checking out. In addition, buyers will get notified via a pop-up notification: when they log out and there are services left in their cart, and when the app notifies the sellers that the respective buyers have purchased their services. Moreover, buyers can also visualize the history of their purchases, and offer them a star-based rating.

Our app is meant to promote freelancing, as more and more people are getting tired of the corporate life and wish to have their own little business, while not having to deal with the likes of traveling long distances every day, attending a lot of meetings, dealing with grumpy bosses, and so on.

Demo

You can see the demo for our application by clicking the link below: https://youtu.be/06oEPp7oZdM

Trello Link

https://trello.com/b/aCB5CLqO/mds

Diagrams

Conceptual diagram:

Diagrama Conceptuala (actuala)

UML diagram:

UML

User Stories

  1. As a guest, I want to be able to navigate the app without having a profile, so that I can firstly form an impression about the displayed services.

  2. As a guest, I want to be able to see the seller's contact details: e-mail, phone number; so that I can contact them.

  3. As a guest, I want to be able to register, so that I can become either a seller(=provider) or a buyer.

  4. As a guest, I want to be able to login, so that I can gain the privileges either of a seller or a buyer.

  5. As a seller, I want to be able to display a details list of my attributes, so that I can present my; domain of activity, experience, work schedule, working city etc.

  6. As a seller, I want to be able to provide personal details about me/my team, so that the buyer can get in touch with me/us more easily.

  7. As a buyer, I want to be notified via a pop-up notification: when I log out and there are services left in my cart, and when the app notifies the sellers that I have purchased their services.

  8. As a buyer, I want to have a shopping cart, so that I can keep track of the services that I want to purchase.

  9. As a buyer, I want to have a history of my purchases, so that I can remember the level of satisfaction that the services gave me.

  10. As a logged user, I would like to be able to modify my profile data anytime.

Build Tools

The project was developed using Andorid Studio, which has a Gradle-based building tool. To build the project in an APK, go to Build -> Build Bundle(s)/APK(s) -> Build APK(s):
apk_1

To verify if the app has been generated properly, go in the folder of the project and see if these 2 files have been added: apk-2-bunaa

Code Standards

The project respects the Java coding standards (link: https://google.github.io/styleguide/javaguide.html): the names are sugestive, the classes name are nouns starting with upercase letters (e.g. LoginActivity, ServiceAdapter etc), method names are verb-noun combinations or verbs starting with lowercase letters (e.g. insert, checkEmailPass, getServiceById).

Design Patterns

We used a singleton approach for database handling for each class, e.g.:

singleton

Bug Reporting

Bug 1

As any simple insert method, register (insert user in database) accepts the same email multiple times. telefoane_bug1

The solution was to create a method that verifies if an email is already in the database: bug1_solution_bunaaa

bug1_resolved1

Presenting the method

  • in Dao:

bug1_solution-dao

  • in Repository:

bug1_solution-repo

  • in View:

bug1_solution-view

Bug 2

Every time someone wanted to use a method involving the database, they would get the following error: bug2

The solution to this problem was to add .allowMainThreadQueries() to every database handling initialization: bug2_resolve

Bug 3

We wanted to change the project's name using the methods presented on GeeksforGeeks (link: https://www.geeksforgeeks.org/different-ways-to-change-the-project-name-in-android-studio/).

Neither the first, nor the second method worked:

  • First method:

bug4_sol1_1 bug4_sol1_2

  • Second method:

bug4_sol2

The third method was a success:

bug4_sol3

The result is seen in the application's titlebar: bug4_sol

Bug 4

At first, there could exist more than one city with the same name (ignoring case sensitivity) in the database:

initial_name_1 final_name_1 initial_name_2 final_name_2

The workaround we came with was to capitalize each city name right before the city's insertion into the database would take place. This way, the program wouldn't insert another city with the same name (ignoring case sensitivity) when it would reach the function named nameExistOrNot:

solution

Sample insertions after the fix:

initial_name_3 final_name_3 initial_name_4 final_name_4

Automation Testing

We have also implemented automatic testing using JUnit5 in order to check whether the Getters and Setters function properly. One such example is shown below: teste_mds

Contributors:

About

Android freelance application project for course at university

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages