Deliverable 1 - NoprauxX12/NLT-El-que-sabe GitHub Wiki
1. Introduction
1.1 Purpose
The main purpose of this web development is to create a intermediary between freelancers and clients, in order to systematize informality in Colombia in favor of facilitating it, ensuring it and normalizing it as a dignified way of working and offering services independently.
1.2 Scope
The application serves as a dedicated marketplace connecting clients with freelance workers offering services like plumbing, electrical work, locksmithing, carpentry, etc.
The application addresses the following goals and objectives:
- To assist freelancers in gaining visibility among potential clients.
- To seamlessly integrate informal workers into the labor market and help them become independent.
- To reduce the time clients spend searching for a suitable freelancer to address their needs.
Product Functions within the System:
- The application serves as a marketplace, connecting clients with freelancers offering a range of services.
- Functionality for user registration, profile creation, job listing, bidding, and review processes will be integral to the system.
1.3 Product overview
1.3.1 Product perspective
a) System Interfaces:
- User Interfaces:
- The application will feature an intuitive user interface accessible through web browsers. Users, both clients, and freelancers, will interact with the system through user-friendly profiles, job listings, chat interfaces, and review sections.
b) Hardware Interfaces:
- The application will be hosted on web servers accessible via standard internet browsers. Clients and freelancers will require devices with internet connectivity to access the platform.
c) Software Interfaces:
- The system will not integrate with payment gateways. Instead, it facilitates agreements on pricing between clients and freelancers, leaving the payment method to be determined independently by the involved parties.
- Compatibility with popular web browsers (e.g., Chrome, Firefox) to ensure a seamless user experience.
d) Communications Interfaces:
- Real-time chat functionality within the application to facilitate communication between clients and freelancers.
- Email notifications for important updates, job offers, and completed tasks.
e) Operations:
- The system will be operational 24/7, allowing users to access and utilize its features at any time.
- Regular maintenance and updates will be scheduled to ensure optimal performance and security.
f) Site Adaptation Requirements:
- El Que Sabe n will be adaptable to various screen sizes and resolutions, ensuring a responsive design for users accessing the platform from different devices.
1.3.2 Product functions
The main functionalities of the "El Que Sabe" Web Application are:
- The software will facilitate the easy connection between clients and freelance workers by providing a dedicated marketplace.
- Clients can find profiles of independent workers specializing in specific services and contact them via chat to request quotes.
- Freelancers registered on the platform can view job offers from clients and submit bids or offer their services at specified prices.
- Clients have the ability to rate and leave reviews for freelancers based on their work, contributing to a freelancer's overall profile score.
- The application will support communication, quoting, bidding, and review processes to streamline the client-freelancer interaction.
1.3.3 User characteristics
The system is designed to cater to two main user groups: clients seeking services and freelancers offering their skills.
1.3.4 Limitations
The following laws should be taken into account during the development of the app:
- Article 34. Independent contractors
1o) Independent contractors and, therefore, true {employers} and not representatives or intermediaries, are natural or legal persons who contract the execution of one or more works or the provision of services for the benefit of third parties, for a specific price, assuming all risks, to carry them out with their own means and with technical and managerial freedom and autonomy. But the beneficiary of the work or owner of the work, unless it involves tasks outside the normal activities of his company or business, will be jointly responsible with the contractor for the value of the salaries and the benefits and compensation to which they are entitled. right of the workers, solidarity that does not prevent the beneficiary from stipulating with the contractor the guarantees of the case or from repeating against him what was paid to those workers.
2o) The beneficiary of the work or owner of the work will also be jointly and severally responsible, under the conditions established in the previous section, for the obligations of the subcontractors towards their workers, even in the event that the contractors are not authorized to contract subcontractor services.
- Article 37. Form
The employment contract can be verbal or written; for its validity does not require any special form, unless expressly provided otherwise. Colombia Art. 37 Código Sustantivo del Trabajo
- Article 38. Verbal contract
When the contract is oral, the {employer} and the worker must agree, at least on the following points:
- The nature of the work and the place where it is to be carried out;
- The amount and form of remuneration, whether per unit of time, per work performed, per task, piecework or any other, and the periods that regulate its payment;
- The duration of the contract. Colombia Art. 38 Código Sustantivo del Trabajo
- Personal Data Protection Law or Law 1581 of 2012
It recognizes and protects the right that all people have to know, update and rectify the information that has been collected about them in databases or files that are susceptible to processing by entities of a public or private nature. Protección de Datos Personales
- Decree No. 1360 of June 23, 1989
By which the registration of software in the National Copyright Registry is regulated. Decree No. 1360 of June 23, 1989
1.4 Definitions
- Freelancer: Said of a person who offers their services autonomously and independently.
- Informality: "It is an employment relationship that is not subject to national legislation, does not comply with the payment tax, does not have coverage social protection, and lacks benefits related to employment". (OIT)
1.5 Acronyms and abbreviations
- GCP: Google Cloud Platform
- IFR: Input Functional Requirement
- PFR: Processing Functional Requirement
- OFR: Output Functional Requirement
- PEFR: Persistence Functional Requirement
- NFR: Non-functional Requirement
- DBR: Database Requirement
- ERD: Entity-Relation Diagram
2. References
Example of INPUT/OUTPUT
- INPUT: After the client/freelancer deliver all the information needed, the system will ask for accepting terms and conditions, if the client/freelancer do or do not accept the terms and conditions will have two validations, true or false.
- OUTPUT: If the validation returns true, the client/freelancer will be redirected to the main page. Instead, if the validation returns false, the system with remind the client/freelancer to read and confirm the terms and conditions, is very important for the page to agree this terms and conditions for procesing the data.
- INPUT: After the client sign into the webside, he will be capable of using the search-bar for describing the type of job needed.
- OUTPUT: After the search was made, the client will be able to see the search-bar with his search besides watching the different freelancers that offers the service the client searched. Also is very important to understand that the webside will remember the city and department from the client for giving detailed information from the freelancers in the area.
These are some examples more detailed for what is expected to receive from the INPUT and OUTPUT
User Surveys
- Proportion of informally employed population National total, 13, 23 cities and A.M. and dispersed rural and populated centers Year January - December (2022-2023)
- Proportion of informally employed population by sex National total, 13 and 23 cities and A.M. and dispersed rural and populated centers October - December quarter (2022-2023)
ref: ciudades y A. M. y centros poblados y rural disperso Año enero-diciembre, 23. (s/f). Trimestre octubre - diciembre 2023. Gov.co. Retrieved on February 17, 2024, from https://www.dane.gov.co/files/operaciones/GEIH/bol-GEIHEISS-oct-dic2023.pdf
Background of the problem
Today the informal employment rate at Colombia is at the 55,5%. Is very visible that the quantity of informal employers are more than the have of the total employment, so, this is why my El Que Sabe was born. The idea is to simplify the comunication between freelancers and clients, showing clients the habilities, work portfolio, department, city from each freelancer for connecting them efficiently.
The software solution
As said previously, is very important to simplify the connection between client and freelancer. In that sense, the system is capable to provide all the required information (name, e-mail, cellphone number, password, birth date, profession, department, city, address and profile photo) from the freelancer and connecting with the requirements from the client. The system looks up for freelancers using their city and profession in the search-bar. In addition, it uses the ranking system that clients are meant to fulfill after the freelancer service is done. The most important difficulty is the design, besides connecting all the back-front with all the services needed.
3. Specific requeriments
3.1 External interfaces
The system does not rely on external interfaces, as all business logic is executed on the server side, eliminating the need for information exchange with external systems. Therefore, there are no external interfaces integrated into the current software architecture.
3.2 Functions
| # | Type | Requirement |
|---|---|---|
| IFR1 | Input | The system shall provide the user with the ability to sign up for the app as a freelancer by name, e-mail, cellphone number, password, birth date, profession or occupation that tells the services that wants to offer, academic information, description, department, city, and a profile photo, if and only if, accepts terms and conditions. |
| IFR2 | Input | The system shall provide the user with the ability to sign up for the app as a client by name, e-mail, cellphone number, password, birth date, main services that would like to take in the app, department, city, address, and a profile photo, if and only if, accepts terms and conditions. |
| IFR3 | Input | After a user signs up, the system shall provide them with the ability to log in by e-mail and password. |
| IFR4 | Input | After the OFR5 is completed, the system shall provide the user of type client with the ability to write in the search bar the services that they need or the professions according to the problems they have. |
| IFR5 | Input | After the OFR5 or the OFR6 are completed, the system shall provide the user with the ability to access their profile if they want to edit it. |
| IFR6 | Input | After the OFR5 is completed, the system shall provide the user of type client with the ability to post offers or jobs that they need to be done, by a photo, title, description, department, city, and address. |
| IFR7 | Input | After the OFR8 is completed, the system shall provide the user of type freelancer with the ability to add previous works to the portfolio, by a photo, title, and description. |
| IFR8 | Input | After the OFR8 is completed, the system shall provide the user of type freelancer with the ability to edit the information submitted in the IFR1, the additional fields of important information, RUT, and also the previous works added in the IFR7. |
| IFR9 | Input | After the OFR9 is completed, the system shall provide the user of type client with the ability to edit the information submitted in the IFR2, also the offer posts made in the IFR6. |
| IFR10 | Input | After the OFR5 or the OFR7 is completed, the system shall provide the user of type client with the ability to contact any freelancer on the list, by title, description, and a photo to provide context of the need. |
| IFR11 | Input | After the OFR10 is completed, the system shall provide the user of type freelancer with the ability to accept or reject the client request. |
| IFR12 | Input | After the OFR6 is completed, the system shall provide the user of type freelancer with the ability to reject or make an offer to the client post, by a price quote. |
| IFR13 | Input | After the OFR11 is completed, the system shall provide the user of type client with the ability to accept or reject the freelancer price quote. |
| IFR14 | Input | After the chat is enabled in the PFR11, the system shall provide the users with the ability to write and send messages. |
| IFR15 | Input | The system shall provide the user of type client with the ability to report that the freelancer completed the job. |
| IFR16 | Input | After a client reports a job as finished in the IFR16, the system shall provide them with the ability to rate the performance on a scale of 1 to 5. |
| PFR1 | Processing | If the user wants to submit their information collected in the PFR1 or PFR2, then the system should validate whether the terms and conditions were accepted or not. |
| PFR2 | Processing | After a user tries to log in, the system should validate the existence of the e-mail in the database. |
| PFR3 | Processing | If the validation of the PFR2 is true, then the system should validate in the database whether the password is correct or not. |
| PFR4 | Processing | If both PFR2 and PFR3 validations were true, then the system should load the home page based on the type of user that has logged in (freelancer or client). |
| PFR5 | Processing | After the client writes in the search bar at the IFR4, the system shall look up for matches of freelancers in the database that have that profession or that offer those services, and also that are in the same city. |
| PFR6 | Processing | During the search in the PFR5, the system should organize the results in order of rating score. |
| PFR7 | Processing | After the client accesses their profile at the IFR5, the system should load the profile page based on the type of the user that has logged in (freelancer or client). |
| PFR8 | Processing | During the loading of the PFR4, the system should look up for the offer posts with the same city information if the home page loading is for a freelancer user. |
| PFR9 | Processing | During the loading of the PFR4, the system should look up for freelancers' profiles that have the same city if the home page loading is for a client user. |
| PFR10 | Processing | After the IFR10, the system shall send the client contact request to the freelancer. |
| PFR11 | Processing | If the IFR11 or the IFR13 is acceptance, the system shall enable a chat between the client and freelancer. |
| PFR12 | Processing | If the freelancer makes an offer in the IFR12, the system shall send the price quote to the client. |
| PFR13 | Processing | After a user decides to send a message in the PFR14, the system shall send it to the other user. |
| PFR14 | Processing | If a job is reported as completed in the IFR15, the system shall disable the chat between the client and the freelancer. |
| PFR15 | Processing | After the PEFR9, the system should calculate the average rating of the freelancer. |
| PFR16 | Processing | If it is the last day of the month, the system should generate a graph depicting the freelancer's profit throughout the month using the data stored during the PEFR10. |
| OFR1 | Output | If the validation of the PFR1 is false, then the system should show on screen a reminder for the user to read and accept the terms and conditions if they want to sign up on the app. |
| OFR2 | Output | If the validation of the PFR1 is true, then the system should show on screen a message saying that the registration was successful. |
| OFR3 | Output | If the validation of the PFR2 is false, then the system should show on screen a message saying that the user does not exist. |
| OFR4 | Output | If the validation of the PFR3 is false, then the system should show on screen a message saying that the password is incorrect. |
| OFR5 | Output | After the PFR4 loading was completed, the system shall show on screen the home page with a search bar, a default 8-freelancer list obtained by the PFR9, a post offer and a profile button, if the type of user is a client. |
| OFR6 | Output | After the PFR4 loading was completed, the system shall show on screen the home page with a search bar, only one random offer post of the PFR8 list, that they can take and make an offer or that can reject, and a profile button, if the type of user is a freelancer. |
| OFR7 | Output | After the search in the PFR6, the system shall show on screen a list, from top to bottom, of all the results. |
| OFR8 | Output | After the PFR7 loading was completed, the system shall show on screen the profile page with all the information collected in the IFR1, ranking score and reviews, and also additional fields for important information, RUT, and previous works portfolio, if the type of user is a freelancer. |
| OFR9 | Output | After the PFR7 loading was completed, the system shall show on screen the profile page with all the information collected in the IFR2, if the type of user is a client. |
| OFR10 | Output | After the PFR10, the system shall show on screen a notification of a new client request, if the type of user is a freelancer. |
| OFR11 | Output | After the PFR11, the system shall show on screen a notification of a new freelancer offer, if the type of user is a client. |
| OFR12 | Output | After a message is sent in the PFR13, the system shall show it on the chat screen. |
| OFR13 | Output | After the PFR15, the system should show on the freelancer profile screen the average rating. |
| OFR14 | Output | After the PFR16, the system should show the graph created on a monthly report screen. |
| PEFR1 | Persistence | After a freelancer signs up, the system shall save into the database the information collected in the IFR1, if and only if, the validation of the PRF1 is true. |
| PEFR2 | Persistence | After a client signs up, the system shall save into the database the information collected in the IFR2, if and only if, the validation of the PRF1 is true. |
| PEFR3 | Persistence | After a client posts an offer, the system shall save into the database the post with the information submitted in the IFR6. |
| PEFR4 | Persistence | After a freelancer adds a previous work to their portfolio, the system shall save it into the database with the information submitted in the IFR7. |
| PEFR5 | Persistence | After a freelancer edits their information in the IFR8, the system shall update it in the database. |
| PEFR6 | Persistence | After a client edits their information in the IFR9, the system shall update it in the database. |
| PEFR7 | Persistence | After a chat is enabled in the PFR11, the system shall create a new chat in the database. |
| PEFR8 | Persistence | After a message is sent in the PFR13, the system shall save it into the new chat created in the database during the PEFR7. |
| PEFR9 | Persistence | After a client rates a freelancer's performance in the IFR16, the system shall save it into the freelancer database. |
| PEFR10 | Persistence | After a job is reported as completed in the IFR15, the system shall save into the freelancer database the date of completion and the agreed price. |
3.3 Usability requeriments
| # | Type | Requirement |
|---|---|---|
| NFR-1 | Usability | The system should be well-documented, with clear documentation provided for developers, administrators, and end-users to facilitate troubleshooting, maintenance, and future enhancements. |
| NFR-2 | Usability | The user interface should show on screen instructions provided for each step of the registration, login, and profile editing processes. |
| NFR-3 | Usability | The system should handle unexpected system failures and provide informative error messages to users. |
| NFR-4 | Usability | User passwords must be securely stored using hashing algorithms and encryption techniques to prevent unauthorized access to sensitive information. |
| NFR-5 | Usability | System components and displays should be understandable and intuitive for unassisted navigation. |
3.4 Performance requeriments
| # | Type | Requirement |
|---|---|---|
| NFR-6 | Performance | Database sharding or partitioning strategies should be employed to distribute data across multiple servers and prevent bottlenecks in data retrieval operations. |
| NFR-7 | Performance | The system should be able to handle concurrent user logins and registrations without significant latency, aiming for response times of under 2 seconds for most operations. |
| NFR-8 | Performance | Database queries should be optimized to ensure quick retrieval of user information and search results, with a target response time of under 1 second. |
| NFR-9 | Performance | The system should be able to handle a large number of simultaneous searches and interactions, ensuring scalability to accommodate potential growth in user base. |
| NFR-10 | Performance | The system shall provide the user with the ability to receive messages through the chat in no more than 3 seconds after sended. |
3.5 Logical database requeriments
| # | Type | Requirement |
|---|---|---|
| DBR-1 | Logical database | The database shall have 4 main entities: client, freelancer, contract offer, and previous work. |
| DBR-2 | Logical database | The client entity shall be related to the freelancer entity with a relation called contract with a cardinality of n:m. |
| DBR-3 | Logical database | The client entity shall be related to the freelancer entity with a relation called view with a cardinality of n:m. |
| DBR-4 | Logical database | The client entity shall be related to the contract offer entity with a relation with a cardinality of 1:m. |
| DBR-5 | Logical database | The client entity shall be related to the freelancer entity with a relation called message with a cardinality of n:m. |
| DBR-6 | Logical database | The database shall be normalized to the second normal form to eliminate ambiguity. |
ERD:
3.6 Design constraints
The sign-up form must inform the user, within the terms and conditions of the application, that their data will be protected in accordance with Law 1581 of 2012.
4. Video