0% found this document useful (0 votes)
6 views3 pages

RF_8

The Rentify project aims to create a platform for renting items in Kazakhstan, featuring a mobile and web application with an AI-based recommendation system and gamification elements. The project includes key components such as a Java Spring Boot backend, PostgreSQL database, and uses technologies like Flutter for mobile development and Vue.js for web interfaces. Security measures, user-friendly interfaces, and effective communication tools are emphasized to enhance user experience and trust.

Uploaded by

adik804
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views3 pages

RF_8

The Rentify project aims to create a platform for renting items in Kazakhstan, featuring a mobile and web application with an AI-based recommendation system and gamification elements. The project includes key components such as a Java Spring Boot backend, PostgreSQL database, and uses technologies like Flutter for mobile development and Vue.js for web interfaces. Security measures, user-friendly interfaces, and effective communication tools are emphasized to enhance user experience and trust.

Uploaded by

adik804
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

8 laboratory work assigment

Done by Mustafin Adilzhan


Group IT2-2102

1. Brief Technical Specification for the Rentify Project

Project Goal: The Rentify project aims to create an innovative platform for renting items,
contributing to the development of the sharing economy in Kazakhstan. The platform will
provide users with the ability to rent and lease items through a user-friendly interface,
utilizing advanced technologies such as an AI-based recommendation system and
gamification of the rental process. The platform will focus on creating a secure and
convenient environment for users, ensuring effective interaction between renters and lessors.

Project Tasks:

 Development of a mobile application for iOS and Android, as well as a web


application for users.
 Implementation of a recommendation system using AI to provide personalized
product suggestions based on user preferences.
 Creation of a review and rating system to increase trust between users and lessors.
 Development of a communication module for users to agree on rental terms and
ensure safe transactions.
 Integration with payment systems for processing rental payments.
 Development of security mechanisms to protect user data and prevent fraud.
 Implementation of product filtering based on categories, location, price range, and
other parameters.

Functional Requirements:

 User Interface:
o Both mobile and web applications must provide the ability to register, search
for products, make rentals, exchange messages, and leave reviews.
o The interface should be intuitive, focusing on ease of use and navigation
simplicity.
o Product filtering functionality based on categories, price, rating, and location.
 Recommendation System:
o The recommendation system will offer products based on the user's
preferences and interaction with the platform.
 Rental Gamification:
o The product selection process will be simplified using visual elements like
product cards with swipe functionality to make renting more engaging and
intuitive.
 Chat and Review System:
o A built-in platform for communication between users to agree on rental terms,
as well as leave reviews and ratings for lessors and renters.
 Security:
o Implementation of two-factor authentication for users.
o Secure transmission of data and storage of payment, rental, and personal data.
2. Physical Model Description

The Rentify project will consist of the following key components:

 Mobile Application (Flutter): The app will provide an interface for users on mobile
devices supporting both Android and iOS platforms. This will allow users to search
for products, make rentals, exchange messages, and receive notifications. The app
will use a single codebase for both platforms, simplifying development and
maintenance.
 Web Application (Vue.js): The web version of the project will be intended for users
working through a browser. It will provide access to the same features as the mobile
application and allow interaction with the platform from any device.
 Backend (Java Spring Boot): The server will handle user requests, manage the
database, and integrate with payment gateways. The backend will implement all
business logic and APIs for the mobile and web applications.
 Database (PostgreSQL): Data about users, products, rentals, and transactions will be
stored in a relational PostgreSQL database. This will allow efficient storage of related
data and complex query execution.
 Caching (Redis): Redis will be used to cache frequently requested data, such as
search results and user profiles, improving response time and system performance.
 Containerization and CI/CD (Docker, GitLab): Docker will be used to containerize
all services, simplifying deployment and infrastructure management. GitLab will be
used to automate CI/CD processes, enabling faster and higher-quality development,
testing, and deployment of new features.
 Scaling and Orchestration (Kubernetes): Kubernetes will be used for scaling and
container management under heavy loads.
 Secrets and Security (Vault): Vault will be used to securely store sensitive data such
as API keys, passwords, and other secrets, ensuring data and integration security with
external services.

3. Justification for the Choice of Development Environment and Technologies

 Mobile Application (Flutter):


o Justification: Flutter allows for cross-platform development for both iOS and
Android with a single codebase. This reduces development and maintenance
time and also lowers costs.
o Advantages: High performance due to native compilation, a wide ecosystem,
and many pre-built widgets for UI development, support for creating complex
animations and UI.
o Comparison with Alternatives: React Native and Xamarin are also cross-
platform frameworks, but Flutter offers more flexibility in creating adaptive
and complex interfaces with less time spent on development.
 Web Application (Vue.js):
o Justification: Vue.js was chosen for its lightness, flexibility, and ease of
integration. It is ideal for developing dynamic interfaces.
o Advantages: Easy to learn and integrate, high performance, scalability, a
large ecosystem of plugins and support for various tools.
o Comparison with Alternatives: React is a more popular framework, but
Vue.js is simpler for beginners and better for rapid prototyping.
 Backend (Java Spring Boot):
o Justification: Java Spring Boot was chosen for its reliability, security, and
scalability. This solution ensures excellent performance for high-load systems.
o Advantages: Easy to create RESTful APIs, built-in support for various
services and integrations, broad security support.
o Comparison with Alternatives: Node.js is suitable for I/O-bound
applications, but for complex solutions, Spring Boot is more reliable and
scalable.
 Database (PostgreSQL):
o Justification: PostgreSQL was chosen for its reliability and ability to handle
complex queries and data.
o Advantages: Support for complex transactions and queries, high performance,
and handling large volumes of data.
o Comparison with Alternatives: MySQL — PostgreSQL is better suited for
applications with large and complex data as it has more powerful tools for
transactions and analytics.
 Caching (Redis):
o Justification: Redis was chosen for its speed in handling in-memory data and
support for various data structures.
o Advantages: Extremely fast data processing, ease of scaling.
o Comparison with Alternatives: Memcached — Redis supports more data
types and offers more powerful features than Memcached.
 Containerization and CI/CD (Docker, GitLab):
o Justification: Docker allows for the containerization of all application
components, and GitLab ensures an automated process for development,
testing, and deployment.
o Advantages: Docker ensures application independence from the environment,
and GitLab simplifies CI/CD setup.
o Comparison with Alternatives: Jenkins — more complex to set up compared
to GitLab CI.
 Verification (Python):
o Justification: Python was chosen for data verification and testing business
logic. Due to its simplicity and widespread use in test automation and
verification, Python is ideal for this phase of development. It also integrates
well with other technologies in the stack and supports numerous libraries for
testing and data analysis.
o Advantages: Simple syntax and ease of learning, a wide range of libraries for
verification and testing (such as pytest, unittest), flexibility for integration and
unit tests, excellent for working with and validating data.
o Comparison with Alternatives: Java — although Java can also be used for
testing, Python offers faster and simpler test writing, speeding up the
development and testing process. JavaScript — can be used for testing web
applications, but Python provides better tools and libraries for server-side
verification.

You might also like