InterDev
InterDev
I. Project Report. 3
1. Status Report. 3
2. Team Involvements. 3
3. Issues/Suggestions. 3
1. Overview.. 4
2. Product Background. 4
3. Existing Systems. 4
4. Business Opportunity. 5
1 Pending
In
2 Progress
Complet
3 ed
2. Team Involvements
# Task Member Notes (Task Details, etc.)
1 KienNT
2 TuanTV
3 AnhLM
3. Issues/Suggestions
# Issue Status Notes (Solution, Suggestion, etc.)
1 Pending
In
2 Progress
Complet
3 ed
II. Project Introduction
1. Overview
1.1 Project Information
a. Supervisor
Full Name Email Phone Number Title
b. Team Members
Full Name Email Mobile Role
2. Product Background
In the context of digital transformation in Vietnam, many Small and Medium Enterprises
(SMEs), shop owners, and local businesses have a high demand for building websites,
mobile apps, or management systems to digitize their operations.
However, these non-technical clients face significant challenges:
● They lack technical knowledge and cannot write professional software requirements
(specifications).
● They struggle to communicate effectively with developers, leading to
misunderstandings, "feature creep," and products that do not match their vision.
● They fear being scammed or overcharged when working with anonymous
freelancers.
On the other side, IT Freelancers face issues such as vague requirements, scope changes
without extra pay, and payment risks.
Current freelance platforms only focus on connecting two parties via messaging but lack a
quality control layer. Therefore, there is a strong need for a platform with a "Broker" (acting
as a Business Analyst/Project Manager). This Broker will serve as an intermediary to
standardize requirements,
2.1 React
React is a declarative, efficient, and flexible open-source JavaScript library for building user
interfaces, maintained by Meta (formerly Facebook). It lets developers compose complex
UIs from small and isolated pieces of code called "components." React creates a Virtual
DOM in memory, where it does all the necessary manipulating, before making the changes
in the browser DOM. This process allows for high performance and a smoother user
experience, especially for single-page applications (SPAs) where data changes over time.
2.1.1. Characteristics
2.1.2. Advantages
● High Performance: The Virtual DOM minimizes direct access to the standard DOM,
speeding up rendering.
● Reusability: Components can be reused across different parts of the application,
reducing code duplication.
● Strong Community Support: Massive ecosystem of libraries, tools, and
community-driven solutions.
● SEO Friendly: React can run on the server and render the virtual DOM to the
browser as a regular web page.
● Easy to Learn: For developers already familiar with JavaScript, React’s syntax and
concepts are straightforward to pick up.
2.1.3. Disadvantages
2.2 NestJS
NestJS is a progressive [Link] framework for building efficient, reliable, and scalable
server-side applications. It is built with and fully supports TypeScript (yet still enables
developers to code in pure JavaScript) and combines elements of OOP (Object Oriented
Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).
Under the hood, NestJS makes use of robust HTTP Server frameworks like Express (the
default) and optionally Fastify.
2.2.1. Characteristics
1
[Link]
● Extensible: Easy to use with other libraries, allowing for flexible integration of
third-party modules.
● Decorator-based: Uses decorators heavily (like Java Spring Boot) to define
modules, controllers, and services.
2.2.2. Advantages
2.2.3. Disadvantages
● Learning Curve: The heavy use of decorators and architectural patterns can be
overwhelming for developers used to simple [Link]/Express apps.
● Verbosity: Can require more boilerplate code compared to minimalist frameworks
like Express.
● Performance Overhead: The abstraction layers may introduce a slight performance
overhead compared to raw [Link]/Fastify, though usually negligible for most apps.
● Debugging: Sometimes debugging TypeScript compilation issues or complex
dependency injection errors can be tricky.
Figure 2. NestJS2
2.3 PostgreSQL
PostgreSQL is a powerful, open-source object-relational database system (ORDBMS) with
over 30 years of active development that has earned it a strong reputation for reliability,
feature robustness, and performance. It extends the SQL language combined with many
features that safely store and scale the most complicated data workloads.
2.3.1. Characteristics
2.3.2. Advantages
● Reliability and Stability: Known for being rock-solid and preventing data corruption.
● Open Source: Free to use, with no licensing costs and a vibrant community.
● Complex Queries: Excellent support for complex queries, joins, and foreign keys.
● Scalability: Capable of handling large volumes of data and high concurrent user
loads.
● Geospatial Support: With the PostGIS extension, it is the industry standard for
geospatial data.
2.3.3. Disadvantages
2
[Link]
Figure 3. Postgre SQL3
2.4 Docker
Docker is an open-source platform that automates the deployment, scaling, and
management of applications using containerization. It allows developers to package an
application with all of its dependencies (libraries, runtime, system tools, etc.) into a
standardized unit called a container. This ensures that the application runs consistently
regardless of the environment, solving the "it works on my machine" problem.
2.4.1. Characteristics
2.4.2. Advantages
● Consistency: Ensures the application runs the same way in development, testing,
and production.
● Efficiency: Uses fewer resources than traditional virtual machines (VMs) because
containers share the OS kernel.
● Rapid Deployment: Containers can be spun up or down in seconds, facilitating rapid
scaling and deployment.
3
[Link]
● Microservices Support: Ideal for microservices architecture where each service
runs in its own container.
● DevOps Integration: Plays a crucial role in modern CI/CD pipelines.
2.4.3. Disadvantages
● Complexity: Can add a layer of complexity to the infrastructure and requires learning
new tools and commands.
● Data Storage: Managing persistent data in containers (volumes) can be tricky for
beginners.
● Security: If not configured correctly, containers can have security vulnerabilities,
especially if running with root privileges.
● Performance: While faster than VMs, there is still a slight overhead compared to
running natively on the host OS.
2.5.1. Characteristics
[Link]
e-to-docker-from-novice-to-expert-cf961536c147
● Robust Security: Integrates with Firebase Authentication to provide simple and
intuitive security for files.
● High Scalability: Built on Google Cloud Storage infrastructure, capable of handling
exabytes of data.
● Resumable Uploads: Automatically pauses and resumes transfers if the app loses
network connection, saving users time and bandwidth.
● Global Edge Caching: Files are stored in Google's global network, ensuring fast
delivery.
● SDK Integration: Provides client-side SDKs for easy integration with web and
mobile apps.
2.5.2. Advantages
● Ease of Use: Extremely simple API to upload and retrieve files from client-side code.
● Cost-Effective: Generous free tier and pay-as-you-go pricing for scaling.
● Reliability: Backed by Google's SLA and infrastructure.
● Serverless: No need to manage your own storage servers or file systems.
● Seamless Integration: Works perfectly with other Firebase services like Firestore
and Auth.
2.5.3. Disadvantages
● Vendor Lock-in: Migrating away from Firebase to another provider can be difficult.
● Limited Querying: Unlike a database, you cannot complexly query the metadata of
stored files directly; usually requires a companion database.
● Cost at Scale: While the free tier is good, costs can increase significantly with very
high bandwidth or storage usage.
● Cold Starts: In some serverless contexts, there might be slight latency in initial
connections.
Figure 5. Firebase5
2.6 Redis
Redis (Remote Dictionary Server) is an open-source, in-memory data structure store, used
as a database, cache, and message broker. It supports various data structures such as
strings, hashes, lists, sets, and more. Because it resides in memory, Redis delivers
sub-millisecond response times, making it ideal for real-time applications.
2.6.1. Characteristics
● In-Memory Storage: Keeps all data in RAM for extremely fast read and write
access.
● Key-Value Store: Data is stored as key-value pairs, but supports complex data
types.
● Persistence: Can optionally persist data to disk (RDB or AOF) to prevent data loss.
● Replication: Supports master-slave replication for high availability.
● Atomic Operations: Operations on data structures are atomic, ensuring data
integrity.
2.6.2. Advantages
2.6.3. Disadvantages
● Memory Limitation: Data size is limited by the available RAM on the server.
● Persistence Overhead: Configuring persistence correctly to balance performance
and data safety can be complex.
● No SQL Support: It is a NoSQL store, so it lacks the complex querying capabilities
of relational databases.
● Data Consistency: In clustered setups, ensuring strong consistency can be
challenging (CAP theorem trade-offs).
5
[Link]
Figure 6. Regis Architect6
2.7.1. Characteristics
● Workflow Automation: Define custom workflows using YAML files directly in the
repository.
● Event-Driven: Workflows can be triggered by GitHub events (push, pull request,
release) or on a schedule.
● Matrix Builds: Run tests across multiple operating systems and runtime versions
simultaneously.
● Live Logs: View real-time logs of the workflow execution.
● Marketplace: Access to thousands of pre-built actions created by the community.
2.7.2. Advantages
● Integrated with GitHub: No need for external CI/CD tools; everything is in one
place.
● Free Tier: Generous free minutes for public repositories and a decent amount for
private ones.
● Customizable: Highly flexible; can run practically any command or script.
● Community Actions: Easy to drop in pre-made actions for standard tasks (e.g.,
"Checkout", "Setup Node", "Deploy to Docker").
● Container Support: Native support for Docker container-based jobs.
6
[Link]
Figure 7. Github actions7
2.7.3. Disadvantages
● Vendor Lock-in: Workflows are specific to GitHub and not easily portable to GitLab
CI or Jenkins.
● Debugging: Debugging failed workflows can sometimes be tedious compared to
local scripts.
● Complex Syntax: YAML syntax for complex logic (conditionals, loops) can become
messy.
● Resource Limits: Execution time and concurrency limits apply, especially on the free
plan.
2.8.1. Characteristics
2.8.2. Advantages
● Rapid Development: Speeds up the styling process by reducing the need to switch
between HTML and CSS files.
● Small Bundle Size: With unused styles purged, the final CSS file is incredibly small.
7
[Link]
● Consistency: Utility classes ensure spacing, colors, and typography are consistent
throughout the app.
● No Naming Struggles: Eliminates the need to invent class names.
● Mobile-First: Encourages mobile-first design patterns naturally.
2.8.3. Disadvantages
● HTML Clutter: Class strings in HTML can become very long and clutter the code
readability.
● Learning Curve: Requires learning the specific utility class names for standard CSS
properties.
● Lack of Components: Developers must build components (buttons, inputs) from
scratch or use a UI library like Headless UI.
● Consistency Enforcement: Without strict guidelines, different developers might
solve the same styling problem with different utilities.
2.9.1. Characteristics
8
[Link]
● Risk Analysis: Assigns a score to user interactions to determine the likelihood of
them being a bot (v3).
● Security: Protects login, registration, and contact forms from spam and brute-force
attacks.
2.9.2. Advantages
2.9.3. Disadvantages
2.10.1. Characteristics
● Structure: Defines the skeleton of web pages (headings, paragraphs, lists, links).
● Semantics: Provides semantic meaning to content improving accessibility and SEO.
● Hypertext: Enables linking between pages and resources via hyperlinks.
● Standardized: Maintained by the W3C and WHATWG.
2.10.2. Advantages
9
[Link]
● Universal: The fundamental building block of the web, supported by all browsers.
● Easy to Learn: Simple syntax and structure.
● Accessibility: Semantic HTML helps screen readers interpret content correctly.
● Integration: Seamless integration with CSS and JavaScript.
2.10.3. Disadvantages
10
[Link]
● Server (Backend): The NestJS application running on a server (or container). It
processes business logic, interacts with the database (PostgreSQL/Supabase) and
external services (Firebase, Redis), and sends responses back to the client.
● Communication: The client and server communicate over the HTTP/HTTPS
protocol using RESTful APIs.
● Controller Layer: Handles incoming HTTP requests, validates input, and sends
responses. It acts as the entry point for the application.
● Service Layer (Business Logic): Contains the core business rules and logic. It
processes data received from the controllers and interacts with the Data Access
Layer.
● Data Access Layer (Repository): Responsible for communicating with the database
(PostgreSQL). It performs CRUD operations and abstracts the database
implementation details from the rest of the application.
● DTO (Data Transfer Object): Defines the shape of data being sent over the network,
ensuring strict typing and validation.
11
[Link]
Figure 12. Layered Architecture12
● Atomic Design: Components are often organized from smallest (Atoms: buttons,
inputs) to largest (Pages: Login Page, Dashboard).
● Reusability: A component (e.g., a "Product Card") can be written once and used in
multiple places.
● Encapsulation: Each component manages its own structure (HTML/JSX), style
(Tailwind), and behavior (Logic), reducing side effects on other parts of the
application.
12
[Link]
Figure 13. Component Based Architect13
3. Existing Systems
3.1 Existing systems
3.1.1 vLance
Introduction
vLance is currently one of the largest freelance marketplaces specifically targeting the
Vietnamese market. It connects businesses with freelancers across various fields, including
IT, design, and marketing, operating primarily on a bidding system.
Characteristics
● Operating Model: Clients post jobs, and freelancers bid with a price and timeline.
● Local Focus: The interface and support are entirely in Vietnamese, catering to local
users.
● Payment: Supports local payment gateways and bank transfers suitable for Vietnam.
Advantages
Disadvantages
● Lack of Quality Assurance (The "Broker" Gap): While it connects parties, vLance
operates more like a classifieds board. It does not provide a specialized intermediary
13
[Link]
(Broker) to verify technical requirements. Non-technical SMEs often struggle to
evaluate the quality of bids, leading to "low-balling" and poor project outcomes.
● Business Culture Disconnect: Vietnamese business culture heavily relies on
personal trust and clear accountability ("làm việc phải có người đảm bảo"). vLance’s
open bidding model often feels too impersonal and risky for traditional shop owners
who prefer a managed service approach.
● Limited Business Support: It lacks mechanisms to deeply understand or enforce
specific Vietnamese business rules (e.g., specific workflow requirements for local
F&B or retail) during the project execution phase.
3.1.2 [Link]
Introduction
Characteristics
● Global Scale: Connects millions of employers and freelancers from over 240
countries, regions, and territories.
● Diverse Contest Mode: Allows clients to host contests (e.g., logo design) where
freelancers submit work first, and the winner gets paid.
● Currency: Primarily operates in USD and major international currencies.
Advantages
14
[Link]
● Talent Pool: Access to a massive, global talent pool with diverse skill sets that might
be scarce locally.
● Platform Maturity: Highly advanced features for time tracking, bidding, and dispute
resolution at a global standard.
Disadvantages
● Cultural & Language Barriers: The platform is not "for Vietnamese by Vietnamese."
The interface and communication flow do not align with the local tradition of close,
high-context communication. SMEs often face difficulties conveying nuanced
business requirements to international (or even local) freelancers on a global
platform.
● Regulatory & Payment Friction: Vietnamese businesses often require VAT invoices
and strict adherence to local financial regulations. [Link]’s international
payment structure (PayPal, international wire) is cumbersome for local SMEs and
often does not fully implement Vietnamese business regulations regarding taxation
and contracts.
● Disconnect from Local Market: The platform does not cater to the specific
"street-smart" business rules of the Vietnamese market. It treats a project in Vietnam
the same as one in the US, missing the local context of how small businesses
actually operate here.
Figure 15. [Link] website15
3.1.3 Fiverr
Introduction
Fiverr is a global online marketplace for freelance services, famous for its "Service as a
Product" (SaaP) model. Unlike traditional bidding platforms, freelancers on Fiverr list their
services (Gigs) at fixed prices, allowing clients to browse and purchase directly.
Characteristics
● Gig-Based Model: Services are packaged as products with defined scopes and
prices (e.g., "I will build a landing page for $50").
● Tiered Pricing: Offers Basic, Standard, and Premium packages for different levels of
service.
● Speed & Transactional Focus: Designed for quick turnaround and high-volume
transactions.
Advantages
● Simplicity & Transparency: Clients see the exact price upfront without going
through a lengthy negotiation or bidding process.
● Ease of Use: Buying a service feels as easy as shopping on an e-commerce site.
Disadvantages
15
[Link]
Figure 16. Fiverr16
4. Business Opportunity[2]
Market Context: In the current wave of digital transformation in Vietnam, there is a surging
demand from Small and Medium Enterprises (SMEs), local shop owners, and F&B
businesses to digitize their operations through websites, mobile applications, and
management software. These businesses often have a budget for technology (typically in
the range of 10-50 million VND) but completely lack the technical expertise to manage
software development.
The Problem Gap: Currently, these non-technical clients are underserved by existing
solutions:
Furthermore, the Vietnamese market operates heavily on "trust" and accountability. The
open bidding model of current platforms often feels risky to local business owners who fear
scams, scope creep, or lack of support after payment.
16
[Link]
The Solution & Opportunity: The Freelance Software Brokerage Platform seizes this
opportunity by introducing a "Managed Freelance" model tailored for Vietnam. By
integrating a Broker (BA/PM) role and a Guided Input Wizard, the platform solves the core
friction points:
1. Bridging the Knowledge Gap: The Guided Input Wizard allows clients to define
needs via simple business questions (e.g., "Do you sell clothes or food?", "Do you
need online payment?"). The Broker then "translates" these answers into
professional technical specifications.
2. Building Trust: The Broker acts as a guarantor of quality and clarity, while the
Virtual Escrow system ensures fair payment—money is only released when the
Broker verifies the technical quality and the Client approves the business
functionality.
3. Standardizing the Process: Unlike the chaotic "chat-and-hope" workflow of current
platforms, this system enforces a structured workflow: Draft -> Spec -> Contract ->
Milestone -> Payment.
Guests are visitors who have not logged in yet but can still explore the platform. They can
view the landing page to understand the service flow, browse public freelancer profiles
(limited view), and read about the benefits of the "Broker" model. Guests can register a new
account as a Client or apply to become a Freelancer/Broker.
Clients represent Small and Medium Enterprises (SMEs) or shop owners who need software
but lack technical expertise. They can register, perform KYC (identity verification), and create
project requests using a "Guided Input Wizard" (instead of writing raw specs). Clients can
chat with Brokers to clarify requirements, review and approve the Project Specification
(Spec) and Milestones created by the Broker. They can sign simulated E-Contracts, deposit
funds into a Virtual Escrow, and monitor project progress via a workspace. Clients approve
milestones to release payments and rate Freelancers/Brokers upon project completion.
Brokers are the intermediaries (Business Analysts/Project Managers) who bridge the gap
between Clients and Freelancers. After logging in and being approved by the Admin,
Brokers receive raw requests from Clients. Their main task is to analyze these requests,
communicate with Clients to refine them, and generate a standardized Project Spec. Brokers
shortlist suitable Freelancers using the system's matching suggestions, manage the
E-Contracting process, and oversee the project timeline. They act as quality controllers
before the Client conducts the final acceptance.
Freelancers are developers who execute the projects. They create profiles showcasing their
skills (Tech Stack) and experience. Freelancers receive project invitations from Brokers, view
the Spec, and accept or reject offers. Once a project starts, they work within the Project
Workspace, update task statuses (Todo, In Progress, Done), and submit evidence (source
code, demo links) for Milestone acceptance. They receive payments into their internal wallet
once milestones are approved by the Client.
Administrators are responsible for the overall integrity of the platform. They manage user
accounts, approve KYC requests, and review applications for the Broker role. Administrators
oversee the entire system statistics, manage categories (skills, project types), and handle
Dispute Resolutions if conflicts arise between Clients and Freelancers regarding payments
or quality.
Generally, the system offers a unified digital environment where the complex process of
software outsourcing is simplified for non-tech businesses through a dedicated Broker layer,
ensuring transparency, trust, and quality delivery.
● Guest, Client, Freelancer, Broker, Staff, and Admin can register and log in using
email or Google accounts.
● Users can recover forgotten passwords and manage their profiles.
● Role-Based Access Control (RBAC): Strict permission checks to ensure Clients
cannot see Broker-only views, and Freelancers cannot access Escrow settings.
● Clients create project requests via a step-by-step wizard (Multiple choice: Web/App,
Industry, Budget, Features) instead of writing technical documents.
● The system generates a structured "Draft Requirement" based on Client inputs.
● Brokers view draft requests, chat with Clients to clarify business needs.
● Brokers convert drafts into formal Project Specifications (Spec) and define detailed
Milestones (timeline, budget allocation).
● The system suggests Freelancers based on matching skills (extracted from Spec),
Trust Score, and Rating.
● Brokers curate a Shortlist of the best candidates for the Client to review and select.
● The system automatically generates a digital contract containing the Spec, Timeline,
and Costs.
● Clients and Freelancers perform a digital "Sign" action to validate the contract.
● Clients deposit funds into a Virtual Escrow (System Wallet) to "lock" the deal before
work begins.
● Freelancers submit "Proof of Work" (Source code link, Demo URL, Screenshots)
when marking a Milestone as completed.
● System locks the milestone status to "Pending Review".
● Broker Review: The Broker checks technical quality (Code, Logic) first.
● Staff/Client Review: Once the Broker approves, the Client (or invited Staff) checks
business functionality.
● Escrow Release: Funds are only transferred to the Freelancer's wallet after Client
final approval.
FE-13: Change Request Management (Scope Control):
● If the Client wants to add features mid-project, the Broker creates a "Change
Request".
● The system calculates the additional cost/time, and both parties must digitally sign an
addendum to the contract.
● Users can view their wallet balance and transaction history (Deposit, Withdrawal,
Payment, Refund, Brokerage Fee).
● Freelancers and Brokers can request withdrawals to their real bank accounts
(simulated by Admin approval).
● The system automatically splits the payment upon Milestone release: % for
Freelancer, % for Broker (Service Fee), and % for Platform Fee.
● After project completion, parties rate each other (Client rates Freelancer/Broker;
Freelancer rates Client).
● Trust Score Engine: Automatically calculates user reliability based on Ratings,
Project Completion Rate, and Dispute history.
● In-app and Email notifications for key events: New Request, Milestone Submitted,
Money Released, New Message.
● Statistics: View total users, active projects, total revenue (platform fees).
● Category Management: Admin can add/edit Tech Stacks, Project Types, and Skill
Sets available in the system.
LI-02: The communication module supports only basic messaging. Real-time chat,
WebSockets, file sharing, voice/video calls, and push notifications are excluded.
LI-03: Notifications are limited to in-app messages. Email, SMS, or mobile push notifications
are not implemented.
LI-04: Deployment uses a single server instance with simple Docker setup. Load balancing,
auto-scaling, CI/CD pipelines, and high-availability architecture are out of scope.
LI-05: The admin dashboard includes only basic CRUD and user management. Advanced
analytics, reporting, charts, and export tools are not provided.
LI-06: The platform does not include a mobile application. Only the web version is developed
for this project.
LI-07: Security is limited to authentication and role-based access control. Features like
two-factor authentication, audit logs, penetration testing, encryption-at-rest, or SSO are
excluded.
LI-08: The freelancer–client matching system uses simple filters (skills, budget, timeline) and
does not support advanced recommendation engines, behavioral scoring, or learning-based
ranking.
LI-09: The system cannot handle multi-tenant, enterprise-level scalability. It is optimized for
small-scale use only during the capstone demo period.