You are on page 1of 56

Astana IT University

NURSAT ABDULLAYEV
RAKHAT YEREZHEPOV

Development of social network for


digitalization of diploma work processes

6B06102 Software Engineering — Educational Program

Diploma project

Supervisor
Khaimuldin A.
M.S., Senior Lecturer

Kazakhstan Republic
Nur-Sultan, 2022
CONTENTS
Annotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Аннотация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Аңдатпа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Designations and abbreviations . . . . . . . . . . . . . . . . . . . . . 7
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1 Topic analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1 Literature review . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.1 Clearly establish the focus and purpose of the literature
review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.2 Overview of the existing systems . . . . . . . . . . . . . . . 11
1.1.3 Summarise the key findings you have taken from the
literature and emphasise their significance . . . . . . . . . . 20
2 Technology Stack . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3 Risk Assessment . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4 Methodology of the work . . . . . . . . . . . . . . . . . . . . . . . 23
5 Software Architecture . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1 SERVER-SIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1.2 Database Management System . . . . . . . . . . . . . . . . 29
5.1.3 Authentication and Authorization . . . . . . . . . . . . . . 29
5.1.4 Security mechanims . . . . . . . . . . . . . . . . . . . . . . 29
5.1.5 Documentation . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2 CLIENT-SIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3 Services description . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.3.1 Database Schemas . . . . . . . . . . . . . . . . . . . . . . . 31
5.3.2 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.3.3 Data serialization to JSON standards . . . . . . . . . . . . 37
5.3.4 Projects app . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.3.5 Joins app . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.3.6 OpenAPI Documentation . . . . . . . . . . . . . . . . . . . 43
5.3.7 Software testing . . . . . . . . . . . . . . . . . . . . . . . . 44
6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

2
Annotation
Research and defense of the thesis consists of several stages of a different
nature. The process as a whole is controlled by the dean’s office of the educational
program. Research is carried out by students of the final year to obtain an
academic degree. A student or group of students is assigned a supervisor who
is responsible for advising and monitoring academic quality. The entire period
consists of stages, access to which is not allowed if the previous one is not
completed. This description is not complete, and each of the entities can be
divided into several sub-items. For 3 years of functioning, Astana IT University
has formed a set of several digital applications that automate or simplify various
activities within the walls of the university. Some of them are primary and use the
development of external commercial organizations, while others are responsible for
specific tasks and were developed by students. Our project aims to complete this
system of independent products. The algorithm for passing the thesis consists
of various stages, and most of them are not digitalized and limit efficiency.
The aim of the project is to solve these problems. The objective of this study
is to develop a web application based on the concepts of a social network to
simplify / automatize / digitalize the processes of the diploma work. If the goal
is to automate / digitalize processes, then for implementation it is necessary to
identify these processes and look for methods and solutions for delegating this
work to information technologies. But the study must be justified. To meet this
requirement, it is necessary to draw up criteria that prove the potential to develop
a more efficient system compared to the current one. This forms the relevance of
the project and shows the practical significance. As part of the thesis research,
problems were identified in the solution of which this project may be suitable.
What distinguishes the interaction of people in a social network and in real
life? Both the social network and face-to-face acquaintance operate with such
a semantic unit as "friends". And what is the hallmark of social networks, they
allow you to bypass certain prerequisites for the formation of business/friendship
relationship.

3
Аннотация
Исследование и защита диссертации состоит из нескольких этапов различ-
ного характера. Процесс в целом контролируется деканатом образовательной
программы. Исследования проводятся студентами выпускных курсов для по-
лучения ученой степени. За студентом или группой студентов назначается
руководитель, который отвечает за консультирование и мониторинг акаде-
мического качества. Весь период состоит из этапов, доступ к которым за-
прещен, если предыдущий не пройден. Это описание не является полным, и
каждое из сущностей можно разделить на несколько подпунктов. За 3 года
функционирования Astana IT University сформировал набор из нескольких
цифровых приложений, которые автоматизируют или упрощают различные
виды деятельности в стенах вуза. Некоторые из них являются первичными и
используют разработки сторонних коммерческих организаций, а другие от-
вечают за конкретные задачи и были разработаны студентами. Наш проект
направлен на завершение этой системы независимых продуктов. Алгоритм
прохождения дипломной работы состоит из различных этапов, и большин-
ство из них не оцифрованы и ограничивают эффективность. Цель проекта
– решить эти проблемы. Целью данного исследования является разработка
веб-приложения на основе концепций социальной сети для упрощения/авто-
матизации/оцифровки процессов дипломной работы. Если стоит цель авто-
матизировать/оцифровать процессы, то для реализации необходимо выявить
эти процессы и искать методы и решения делегирования этой работы инфор-
мационным технологиям. Но исследование должно быть обоснованным. Для
выполнения этого требования необходимо разработать критерии, доказыва-
ющие возможность разработки более эффективной системы по сравнению с
существующей. Это формирует актуальность проекта и показывает его прак-
тическую значимость. В рамках диссертационного исследования были выяв-
лены проблемы, в решении которых может быть пригоден данный проект.
Что отличает взаимодействие людей в социальной сети и в реальной жизни?
И социальная сеть, и живое знакомство оперируют такой смысловой едини-
цей, как «друзья». И что является отличительной чертой социальных сетей,
они позволяют обойти определенные предпосылки для формирования дело-
вых/дружеских отношений.

4
Аңдатпа
Диссертацияны зерттеу және қорғау әртүрлi сипаттағы бiрнеше кезең-
дерден тұрады. Жалпы процестi оқу бағдарламасының деканаты басқарады.
Ғылыми-зерттеу жұмысы ғылыми дәреже алу үшiн магистранттармен жүр-
гiзiледi. Студентке немесе студенттер тобына кеңес беру және академиялық
сапаны бақылау үшiн жауапты жетекшi тағайындалады. Бүкiл кезең кезең-
дерден тұрады, егер алдыңғысы аяқталмаған болса, оған кiруге тыйым салы-
нады. Бұл сипаттама толық емес және субъектiлердiң әрқайсысын бiрнеше
тармақшаға бөлуге болады. Астана IT университетi қызмет еткен 3 жыл iшiн-
де университет қабырғасында әртүрлi қызмет түрлерiн автоматтандыратын
немесе жеңiлдететiн бiрнеше цифрлық қосымшалар кешенiн қалыптастырды.
Олардың кейбiреулерi бастапқы болып табылады және үшiншi тарап коммер-
циялық ұйымдарының дамуын пайдаланады, ал басқалары нақты тапсыр-
маларға жауап бередi және студенттермен әзiрленген. Бiздiң жоба тәуелсiз
өнiмдердiң осы жүйесiн аяқтауға бағытталған. Дипломдық жұмысты тапсы-
ру алгоритмi әртүрлi кезеңдерден тұрады және олардың көпшiлiгi цифрлан-
баған және тиiмдiлiгiн шектейдi. Жобаның мақсаты – осы мәселелердi шешу.
Бұл зерттеудiң мақсаты – диссертация процестерiн жеңiлдету/автоматтан-
дыру/цифрландыру үшiн әлеуметтiк желi тұжырымдамаларына негiзделген
веб-қосымшаны әзiрлеу. Егер мақсат процестердi автоматтандыру/цифрлан-
дыру болса, онда iске асыру үшiн осы процестердi анықтау және бұл жұ-
мысты ақпараттық технологияларға беру әдiстерi мен шешiмдерiн iздеу қа-
жет. Бiрақ зерттеу дәлелдi болуы керек. Бұл талапты қанағаттандыру үшiн
қолданыстағы жүйемен салыстырғанда тиiмдiрек жүйенi әзiрлеу мүмкiндiгiн
дәлелдейтiн критерийлердi әзiрлеу қажет. Бұл жобаның өзектiлiгiн қалыпта-
стырады және оның практикалық маңыздылығын көрсетедi. Диссертация-
лық зерттеудiң бiр бөлiгi ретiнде осы жобаны шешуде қолайлы болуы мүм-
кiн мәселелер анықталды. Адамдардың әлеуметтiк желiдегi және шынайы
өмiрдегi өзара әрекеттестiгi немен ерекшеленедi? Әлеуметтiк желi де, тiрi та-
нысу да «достар» сияқты семантикалық бiрлiкпен жұмыс iстейдi. Әлеуметтiк
желiлердiң ерекшелiгi неде, олар iскерлiк/достық қарым-қатынастарды қа-
лыптастырудың белгiлi алғышарттарын айналып өтуге мүмкiндiк бередi.

5
DEFINITIONS
Following terms are used in this work:

Social Network A social network is a digital platform that enables individuals


to connect, interact, and engage with each other based on
shared interests, fostering social relationships, facilitating
information exchange, and promoting collaboration in a
dynamic and personalized online environment.
Student A student at a university refers to an individual enrolled in an
educational institution pursuing higher education, typically at
the undergraduate or postgraduate level
Diploma work A diploma work or thesis is a comprehensive research project
or academic document undertaken by a student, typically
at the culmination of their studies, to demonstrate their
knowledge, skills, and proficiency in a particular field of study.
Instructor An instructor for thesis work in an academic context is a
qualified faculty member who provides guidance, supervision,
and expertise to students undertaking their research projects.
Coordinator A coordinator in an academic context is a faculty member
responsible for overseeing and managing various aspects of
the thesis/diploma work process.

6
DESIGNATIONS AND ABBREVIATIONS
Following designations and abbreviations are used in this work:

PBL Problem-Based Learning


DRF Django Rest Framework
MVC Model-View-Controller
MVT Model-View-Template
IDE Integrated Development Environment
AWS Amazon Web Services

7
INTRODUCTION
For the past three years, Astana IT University has developed a collection
of digital applications aimed at automating and simplifying various activities
within the institution. While some of these applications have been acquired from
external commercial organizations, others have been developed by students to
address specific tasks. Our project seeks to complement this existing system of
independent products by addressing the inefficiencies in the thesis evaluation
process, which consists of multiple stages, most of which are currently not
digitalized.
The project is contains "Social Network,"in name, implying the incorporation
of profile-based features commonly found in existing social networks. The initial
stage of the project involves user authorization within the application. In
contrast to the minimal information required for student and faculty profiles in
services like Moodle, which primarily focus on academic events, the authorization
process in our application will include user roles. Since diploma projects involve
three key user categories - students, their instructors, and university-appointed
administrators responsible for project approval and consolidation - it is evident
that each category will have distinct functional requirements. The main objective
of the social network web application project is to provide IT university students
with a comprehensive platform for finding suitable teammates and instructors
for their diploma projects, based on their skills and technology stack. This will
be achieved by delivering a fully functional web application encompassing various
components. These include a robust user authentication and authorization system,
comprehensive user profiles, project management functionalities, a matching
algorithm, communication and collaboration tools, an admin panel, thorough
documentation, rigorous testing and quality assurance measures, deployment and
maintenance plans, as well as training and support provisions.
By offering a platform that enables students to connect with potential
teammates and instructors based on their specific project requirements, the
project aims to resolve the challenges faced by IT university students when
searching for suitable collaborators. The social network web application will
streamline the process, making it easier for students to find project partners
and instructors who align with their skills and technology preferences. The
project scope encompasses the development of a user authentication and
authorization system, distinguished by different roles for students, instructors,
and administrators. Furthermore, the application will feature comprehensive user
profiles, enabling students to identify suitable teammates and instructors based
on their skill sets and previous project experience.
The project’s primary objectives include the creation of a fully functional
and user-friendly web application that empowers IT university students to find
8
appropriate teammates and instructors for their diploma projects. To achieve this,
the application will incorporate a matching algorithm, facilitating efficient partner
and instructor selection. Additionally, the application will provide communication
and collaboration tools to enhance project management and workflow. Rigorous
testing, quality assurance, and comprehensive documentation will ensure that the
project meets the highest standards of quality and performance.
To ensure the successful completion of the project, several key activities will
be undertaken. The development process will involve designing and implementing
the user authentication and authorization system, taking into account the
different roles and permissions for students, instructors, and administrators. This
system will safeguard the application’s security and restrict access to specific
functionalities based on user roles.
A crucial aspect of the project is the creation of comprehensive user profiles.
These profiles will enable students to showcase their skills, previous projects, and
technology preferences, providing valuable information for potential teammates
and instructors during the matching process. The profiles will be designed with
a user-friendly interface, allowing students to easily update and manage their
information.
The matching algorithm will play a pivotal role in the social network web
application. It will analyze the profiles of students and instructors, taking into
account their skills, project requirements, and other relevant factors to generate
suitable matches. The algorithm will aim to optimize the compatibility and
synergy between students and instructors, facilitating successful collaborations
and enhancing the overall quality of the diploma projects.
Effective communication and collaboration tools will be integrated into
the application to facilitate smooth project management and workflow. These
tools may include messaging systems, file sharing capabilities, and project task
management features. By providing a centralized platform for communication and
collaboration, the application will enhance coordination and productivity among
project team members.
To ensure the application’s reliability and performance, rigorous testing and
quality assurance processes will be implemented. Various testing methodologies,
such as unit testing, integration testing, and user acceptance testing, will be
employed to identify and rectify any issues or bugs. Additionally, the project
will adhere to best practices in software development, following coding standards,
version control, and documentation guidelines.
The social network web application project aims to provide IT university
students with a comprehensive platform for finding suitable teammates and
instructors for their diploma projects. Through the development of a user
authentication and authorization system, user profiles, a matching algorithm,

9
communication and collaboration tools, and other essential components, the
project seeks to streamline the process of forming project teams and enhance
the overall quality and efficiency of diploma projects at Astana IT University.

10
1 Topic analysis

1.1 Literature review


1.1.1 Clearly establish the focus and purpose of the literature
review
One of the main trends in developing countries is the emphasis on the
digitalization of processes in government institutions, in small and medium-sized
businesses. This trend also applies to educational organizations. Research on this
topic has been carried out since the beginning of the active use of web technology,
but various factors have reduced the relevance of these works or completely
refuted their conclusions. The work from Eid and Al-Jabri (2016) has revealed
many aspects of academic connections between students, but the technological
component of the research is small. [1] According to an article by Mousa (2019),
information technologies are developing rapidly and the price of projects using
them and the costs of maintaining them are also changing, which makes them
affordable even for non-profit organizations. [2] The literature review provides
a summary of several academic studies and explains their application to the
development of a social network for the digitalization of thesis processes.
1.1.2 Overview of the existing systems
In the context of the digital divide in higher education and the difficulties
of providing a high-quality education in the age of digitalization, Micari and
Pazos (2012) examine these issues. [3] The authors focus on Mexico and Spain
while examining this topic, emphasizing the need for educational processes to
be developed digitally and in particular the creation of a social network for the
digitization of the thesis process.
The study starts off by emphasizing the growing significance of digital
technologies in higher education and their ability to raise academic standards.
The writers also stress the existence of the "digital divide,"which is the gap
between students and educational institutions in terms of access to, proficiency
with, and knowledge of digital technology. According to Saichaie (2011), in
order to comprehend the current status of digitalization in universities and
the difficulties they encounter, a diagnostic investigation should be conducted
in Mexico and Spain. Various factors are investigated, including institutional
support, pedagogical integration, digital skills, and infrastructure. [4] The findings
reveal that while digitization efforts in both countries have advanced, there are
still large gaps that require attention.
The authors emphasize the advantages that students might get from the
development of a social network for the digitization of thesis processes. They
contend that a social networking platform can promote student networking,
information sharing, and collaboration, assisting them in locating mentors and
11
colleagues for their theses depending on their technological and skill sets. The
study emphasizes how important it is to close the university digital divide in
order to guarantee equal access to high-quality education. It emphasizes the
necessity of strategic planning, infrastructural investments, teacher preparation,
and the encouragement of student digital literacy. Universities may provide an
environment that encourages the effective adoption of a social network for the
digitization of the thesis process by bridging the digital divide.
Zaidieh (2017) share insightful information about the digital divide in
universities and the difficulties in providing high-quality education in the digital
era. [5] The paper underlines the necessity of addressing infrastructural, skill, and
access barriers in the digital world. Additionally, it emphasizes the social network
platform’s potential for digitizing the thesis-writing process and encouraging
student networking and cooperation. This study provides pertinent information
for comprehending the growth of social networks in relation to the digitization of
the thesis writing process as well as the more general difficulties associated with
digitalization in higher education.
Canuel, MacKenzie, Senior, and Torabi’s (2017) article "Apps for Academic
Success: Developing Digital Literacy and Awareness to Increase Usage"examines
the significance of digital literacy and awareness in raising the use and efficacy
of educational applications. The authors note a substantial disparity between the
accessibility and acceptance of educational applications, suggesting that students’
digital literacy and awareness are essential for their efficient use. In order to
close this gap and promote student use of instructional applications, the study
investigates various ways. [6]
Researchers looked at a variety of factors to determine what characteristics
affect college students’ use of educational apps. Quantitative information on
students’ app usage trends, digital literacy abilities, and awareness was gathered
through surveys. Qualitative interviews were also done to collect more information
about how students interpret and interact with educational applications. Students
from a range of academic levels and disciplines made up the study’s broad sample.

1 Digital Literacy and Awareness: The study showed that students’ usage habits
were highly influenced by their levels of digital literacy and awareness of
educational applications. Higher-achieving students were more likely to use
educational applications efficiently and incorporate them into their learning
activities.
2 App Features and Usability: The study found that student engagement and
satisfaction were significantly influenced by the features and usability of
educational apps. Interactivity, user-friendly interfaces, and clear instructions
were noted as major determinants of app usage.
12
3 Value perception: One of the key factors affecting the use of educational
applications is their perceived value. Apps that students believed were
pertinent, in line with their learning objectives, and capable of enhancing
their academic achievement were more likely to be used.
4 Integration into the curriculum: The study highlighted how important it is to
include educational apps in the curriculum in order to promote usage. Students
were more inclined to use apps and recognized their worth in enhancing their
learning outcomes when instructors suggested or required them as a part of
the course.
5 Support and training: It has been determined that providing students with
the necessary support and training is essential to developing their digital
literacy and raising their knowledge of educational applications. Giving
students instructions and tools to use the apps with boosted their interest
and utilization.
In order to increase student use and efficacy of educational applications, the
study underlines the significance of digital literacy and awareness. It highlights
how important it is for academic success to be improved by teachers and
institutions fostering digital literacy abilities, offering support and training, and
incorporating educational apps into the curriculum. The findings of this study
can aid in the development and deployment of educational applications as well as
programs focused at enhancing digital literacy in learning environments.
Incorporating social networking sites into medical education has a number
of benefits, according to Cartledge et al. (2013). [7] First, social networking
sites offer a forum for discussion and collaboration between medical students,
instructors, and healthcare specialists. Sharing of ideas, resources, and experiences
is made possible through these platforms, which can improve education and
career development. Social networking websites also aid in the creation of
online communities that aid in collaboration and mentoring. Social networking
platform use in medical education presents special possibilities for learning.
Students can participate in discussions, get feedback, and share their clinical
experiences using platforms. According to Cartledge et al. (2013), social network
platforms can generate an exciting and interactive learning environment that
encourages the growth of students’ analytical and problem-solving abilities.
Social networking websites also make it easier to access a variety of educational
resources. Social networking platforms give medical students the ability to
establish professional contacts and collaborate with colleagues and subject-
matter authorities. According to Cartledge et al. (2013), these networks can offer
beneficial possibilities for mentoring, career guidance, and research collaborations.
Students may deepen their knowledge, acquire insight into various medical
specializations, and develop professional relationships that can help their future
13
jobs by meeting with healthcare professionals and specialists.
Social networking services have numerous advantages, but they also come
with difficulties and moral dilemmas. Concerns about privacy, secrecy, and
upholding professionalism online are highlighted by Pandey and Bein (2018).
[8] It is crucial that educational institutions and organizations create policies
and instruct students on acceptable internet behavior and the potential risks
of disclosing confidential patient data. The study’s findings could be used to
build a social network that automates the thesis writing process. The study
underlines how social networks may help students communicate, work together,
and engage in informal learning. Students can participate in online discussions,
share resources, get help, and establish their professional identities in a digital
educational environment by integrating related features and functionalities into a
social network specifically designed for thesis processes. The study also highlights
how essential it is to address issues like privacy, security, and responsible use while
creating a social network for thesis-related tasks. To ensure moral and proper
usage of the platform while safeguarding private data, clear rules and standards
should be set.
In the context of higher education, Eid and Al-Jabri (2016) investigate how
social networks, knowledge sharing and student learning are related. Eid and Al-
Jabri (2016) draw attention to the importance of social networks in facilitating
knowledge sharing among college students. Social networking sites give students
the opportunity to connect with each other, work together, and share knowledge
and materials relevant to their academic interests. Through discussions, questions
and expert advice, these platforms give students the opportunity to better
understand the material taught as well as their own learning outcomes. [1]
Advantages of social networks for education: This paper lists numerous
advantages of social networking sites for education (Homola & Kubinchova, n.d.).
[9] In the first place, social networking sites establish a feeling of community and
encourage social connections between students, which can boost motivation and
engagement. Students can build support networks and gain access to a range of
viewpoints and expertise by interacting with their professors and other students.
Social networking platforms also offer opportunities for active learning and skill
development. Students can take part in online discussions, exchange ideas, and
work collectively to solve challenges. This active engagement encourages analytical
thinking, in-depth comprehension, and the practical application of knowledge.
The adoption and use of the Moodle platform in educational institutions is
being investigated by Huang et al. in his 2013 study. [10]The main topic of the
article is Moodle, an open source learning management system popular in colleges
and universities. The adoption and use of Moodle by teachers and students, and
how implementation affects productivity, is covered in this article. The study

14
offers an overview of the potential benefits of using the Moodle platform and its
impact on the creation of a social network for the digitization of theses. To gather
information on the adoption and execution of the Moodle platform at educational
institutions, the researchers carried out a survey. Teachers and learners were given
the survey questionnaire, and the responses were examined to look at factors
including system quality, perceived value, and enabling circumstances as potential
antecedents of Moodle adoption. The study also looked into how using Moodle
affected learning outcomes, satisfaction, and performance in terms of learning
performance.
1 Antecedents of Moodle Usage: The study found a number of aspects influencing
Moodle adoption and usage. Users’ intentions to use Moodle were found to
be significantly affected by the system’s quality, including accessibility and
technical functionality. The considered worth and advantages of Moodle, also
known as its perceived value, significantly impacted its adoption. In addition,
supportive circumstances like technical assistance and training were essential
in fostering the use of Moodle.
2 Performance Consequences: According to the research, using the Moodle
platform has advantages for performance. The use of Moodle has been
associated by students with improving their academic achievement, including
gaining knowledge and skill improvement. The perceived improvement in
educational results was strongly connected with Moodle usage satisfaction.
The study on the antecedents and performance consequences of using the
Moodle platform has direct relevance to the development of a social network for
the digitalization of diploma work processes.
1 User adoption: In their 2013 study, Huang et al. highlighted the significance of
elements including system quality, perceived utility, and simplicity of use in the
adoption and use of learning management systems like Moodle. By ensuring
that the platform is user-friendly, has useful features and functionality, and
offers the required technical support and training to encourage uptake and use
among graduate students, these findings can influence the design of a thesis
social network.
2 User Satisfaction: The study underlines the link between users’ perceptions of
improved learning outcomes and their satisfaction with the Moodle platform.
This implies that a social network for diploma work procedures that is well-
designed and easy to use can help to increase user happiness. The platform can
increase user happiness and engagement by taking user feedback into account,
implementing user-friendly interfaces, and offering a seamless user experience.
3 Digitization of thesis processes: This research is aligned with the objective of
digitizing thesis procedures and focuses on the usage of an online platform
(Moodle) for educational purposes. It is possible to streamline and digitize
15
the thesis-related activities, including selecting a project, cataloging all
projects, engaging with students and professors, and learning about professors’
backgrounds, by developing a dedicated social network. This improves the
thesis management process’ effectiveness, accessibility, and flexibility.
Overall, the results of the study provide valuable information about the factors
that contribute to the successful implementation and use of educational platforms
such as Moodle. By considering these factors and incorporating relevant features
into our social network, it is possible to create a platform that enhances learning
efficiency and enhances user satisfaction among graduate students.
Grevtsov et al.’s (2021) research focuses on environmental education’s value
and digitalization in the context of modernisation and reform. [11] According to
the researchers, incorporating digital technology into environmental education can
have a good impact on learning opportunities, accessibility, and sustainability. In
order to successfully handle environmental issues, they underline the significance
of employing digital tools and platforms. Analyzing the influence of digitalization:
The researchers want to look at how digitalization is affecting the field of
environmental education and how it might help modernize and reform it. They
want to know how using digital technologies can lead to better educational
outcomes.
Mentes and Turan (2012) seek to assess the influence of digitization on
modernization and reform in this field. [12] They are interested in learning
how the use of digital technology might enhance environmental education’s
overall potency and relevance. The authors hope to demonstrate how digitization
might change and advance conventional educational processes by looking at
its effects. This article’s evaluation of the effect of digital technology on the
results of environmental education learning is one of its primary objectives. The
authors want to discover if incorporating digital tools and platforms enhances
students’ environmental knowledge acquisition, critical thinking, and problem-
solving abilities. The authors’ aim to determine the benefits and drawbacks of
these technologies in enabling more profound and interesting learning experiences
by evaluating the effectiveness of digitalization. Grevtsov et al.’s aim is to
pinpoint and emphasize certain advantages associated with the digitalization of
environmental education. [11] They look at how using technological resources
and platforms might enhance instruction, encourage student participation, and
raise environmental consciousness. The authors also look at how digitalization
might support sustainable development by enabling students to comprehend
and successfully deal with environmental issues. Grevtsov et al. (2021) talk
about how digital technologies are becoming more and more significant in the
area of environmental education. The authors outline the possible advantages
of digitalization, such as enhanced learning opportunities, expanded availability,
16
and increased sustainability. They underline the significance of combining
technological resources and platforms to further environmental education by
addressing issues and emphasizing potential. For teachers, administrators, and
researchers looking to use digital technology to improve environmental education
and foster positive change, this research offers helpful insights.
The use of digital environments to enhance group work in a learning
environment is investigated by Brown et al. (2008). [13] The researchers outline
the design and deployment of the online platform and assess its efficacy through a
number of case studies. Avatar customization, collaborative spaces, and other
critical aspects of a virtual environment that are intended to enhance group
interaction and participation are highlighted. The article lists a number of
benefits of adopting virtual world settings for cooperative projects. Virtual worlds’
immersive features provide users a sense of presence and reality, which improves
learning in general. Second, synchronized communication tools make it possible to
connect in real time, encouraging group members to work together and socialize.
Additionally, the ability to personalize an avatar encourages a sense of community
in the virtual world and lets users express their unique personalities. These
advantages support more motivation and active group involvement. The authors
identify several difficulties and concerns with employing virtual world platforms
for collaborative work, despite the potential advantages. The platform may be
unable to function properly due to technical problems like connectivity problems
and system requirements. Additionally, some students may find it difficult to
learn how to engage and navigate in a virtual environment. Godin and Terekhova
(2021) highlight the use of virtual world environments as a promising tool for
facilitating teamwork and collaboration in educational settings. [14] The study
highlights the potential benefits of virtual worlds, such as increased presence,
real-time interaction, and customizable avatars, which contribute to increased
engagement and motivation. However, he also acknowledges the challenges of
technical issues and the learning curve. Further research and exploration is needed
to fully understand the effectiveness and potential of teamwork in a virtual world
environment.
Dolmans et al. (2001) investigate the function of group work in PBL and
the difficulties that may occur when it is put into practice. [15] The authors
stress the importance of group work being in line with PBL’s key principles,
which aim to encourage active learning, problem-solving abilities, and critical
thinking. The article discusses typical issues with group work in PBL and
offers suggestions for overcoming these difficulties while upholding the PBL
approach’s core values. Dolmans et al. (2001) identifies a number of issues with
PBL group projects. These obstacles include the potential for uneven labor and
responsibility distribution among group members, challenges in creating efficient

17
group dynamics, and variations in each student’s participation and motivation.
Additionally, documented difficulties in PBL group work include the conflict
between content-driven learning and process-oriented learning as well as the
possible impact of hierarchical relationships within the group. [15] Individual
student involvement and motivation levels may differ within a group, which
presents a barrier to the process of group work as a whole. While some students
may be very motivated and actively participate to the group work, others may
engage with it less. This could lead to unequal involvement and have an effect on
the caliber of the group’s results. Searching for an interested student in a group
or acquaintance for the same project you are interested in may not be enough.
For this reason our platform helps to find like-minded students to participate in
thesis work. Finding interested student for same project may be not enough.
Lin et al. (2011) look into how social networks affect how well overseas
students adjust to their new environment. [16] This study aims to comprehend
how social networking sites like Facebook benefit international students in their
new educational and cultural surroundings and facilitate social interactions.
Kumar (2012) emphasizes how social networking websites help overseas students
build social bonds. [17] Students can grow their social networks through social
networking, maintain contact with friends and family back home, and form
new friendships. Additionally, it offers a forum for social support, counseling,
and experience-sharing, all of which can enhance students’ social wellbeing
and reduce feelings of isolation and feeling alone. The study investigates how
social networks and academic achievement are related. This article provides
evidence that social networking platforms can be useful resources for academic
knowledge, collaborative learning, and peer support, despite other research
suggesting that social networking can be distracting and have a negative impact
on academic performance. Through these platforms, international students can
access educational resources, take part in group discussions, and request academic
support, potentially enhancing their academic performance. The essay discusses
how social networks might help overseas students more easily adapt to their
new environment. Social networking sites give students a virtual environment
where they can research and discover the host culture, connect with local friends,
and participate in cross-cultural exchanges. International students can benefit
from these connections by better understanding cultural norms, learning about
local practices, and navigating the difficulties of cultural acculturation. The value
of social networking sites in aiding overseas students’ adjustment processes is
highlighted by (Ruiz-Mercader et al., 2006). [18] The paper emphasizes social
networks’ beneficial effects on interpersonal interactions, academic achievement,
and cultural acculturation. focuses on the advantages of social networks for
cross-cultural communication, information exchange, and social support. The

18
authors do, however, agree that further study is required to fully understand the
complexity and potential drawbacks of social networks in the context of overseas
students adjusting.
In his 2005 article, Dineen introduces the Teamxchange project, a novel
team-based learning scenario including virtual teams and adaptable team
membership. [19] Examining how this strategy affects teamwork, satisfaction, and
student learning results is the author’s goal. The article explores Teamxchange’s
conception and execution, stressing its salient traits, difficulties, and advantages.
The key aspects of the Teamxchange project are described in the article. This
includes the formation of virtual teams so that students can work together across
distances and hone their virtual teamwork abilities. The project also integrates
the idea of fluid team membership, where team membership varies over the
course of the project to imitate real-world team dynamics and give students
access to a range of experiences and perspectives. The advantages of including
virtual teams and adaptable team membership in a Teamxchange project are
covered by Dineen (2005). [19] Students can practice teamwork, coordination, and
remote communication skills through virtual teams. They also present a chance
for intercultural appreciation and understanding. Students who are members of
flexible teams are exposed to the difficulties and advantages of working in a variety
of teams, developing their adaptability, flexibility, and capacity to function well
in a range of team dynamics.
The difficulties and aspects of implementing virtual teams and variable team
membership are covered in the essay. Time zone variations, technological hurdles,
and possible problems establishing trust and team cohesion in virtual teams
are some of the difficulties. To guarantee a smooth transition and productive
teamwork, teachers may need to provide additional support and direction due
to the dynamic nature of team composition. Dineen (2005) analyzes student
input and findings to assess the success of the Teamxchange project. According
to the article, students have positive feelings about the experience, which has
improved their problem-solving abilities, communication skills, and knowledge of
virtual teamwork. In comparison to conventional team projects, students reported
greater happiness and involvement. Dineen (2005) mentions the Teamxchange
project as an example of a ground-breaking strategy for team-based learning that
incorporates virtual teams and adaptable team membership. The paper highlights
the advantages of this strategy, such as fostering virtual cooperation abilities,
learning about various viewpoints, and raising student satisfaction. Instructors
can successfully create similar team project experiences that improve students’
cooperation and collaboration skills by knowing these issues and factors.

19
1.1.3 Summarise the key findings you have taken from the
literature and emphasise their significance
The above studies give an idea of several important aspects for this thesis: the
previous experience of implementing digital products in educational organizations,
the features of academic fields in the operation of such web applications. These
conclusions are useful for this work, because they tell about the feedback of the
audience on the change in the format of the usual organizational routine, as well
as the result of these projects and the conclusion about the appropriateness. This
can be useful both for making decisions in the development of the application,
as well as for drawing up a strategy for presenting the finished product to the
audience and analyzing their feedback.

20
2 Technology Stack

The final product is classified as web-application, meaning that it involves


latest standard technologies in industry and non-commercial development.
Nowadays, there are several ways to get web-application: no-code, low-code,
constructor tools, AI tools, etc. As the reason for the development is thesis research
for software enginerring degree, team will stick to the approach will coding and
minimal cognitive simplification.
1 Frontend Technology: ReactJS The frontend of the social network web
application will be developed using ReactJS. ReactJS is a popular JavaScript
library used for building user interfaces.
2 Backend Technology: Django, Django Rest Framework (DRF) The backend of
the social network web application will be developed using Django, a Python
web framework. The Django Rest Framework (DRF) will be used for building
RESTful APIs.
3 Database: PostgreSQL The application will use PostgreSQL as the relational
database to store all the data related to the users, their skills, and the projects.
4 Web Server: Nginx The web server used for hosting the application will be
Nginx. Nginx is a fast and efficient web server that can handle a large number
of simultaneous connections.
5 Hosting: AWS EC2 The application will be hosted on AWS EC2. AWS EC2
provides scalable computing capacity in the cloud.
6 Communication Protocol: HTTP/HTTPS The application will communicate
with the frontend and backend over HTTP/HTTPS protocol.
7 Programming Languages: JavaScript, Python The social network web
application will be developed using JavaScript and Python. JavaScript will
be used for the frontend and Python for the backend.
8 Version Control System: Git Git will be used as the version control system for
the project. Git provides an efficient way to manage and track changes in the
source code.
9 Integrated Development Environment: VSCode Visual Studio Code (VSCode)
will be used as the integrated development environment (IDE) for the project.
VSCode provides an efficient and user-friendly interface for coding.
10 API Documentation: Swagger Swagger will be used to document the
RESTful APIs developed using DRF. Swagger provides an interactive API
documentation that allows developers to test and explore the APIs easily.

21
3 Risk Assessment

1 Technical Risks: Technical issues with the development and integration of


Django, DRF, React, PostgreSQL, nginx, AWS, etc., which could lead to
project delays and increased costs.
Mitigation Plan: Conduct thorough testing of each technology before
integration. Hire experienced developers with expertise in these technologies.

2 Scope Risks:Expanding the scope of the project beyond its original objectives,
leading to scope creep and increased costs and time.
Mitigation Plan: Develop a comprehensive project plan that includes clear
objectives and deliverables. Regularly review and update the project plan to
ensure that it remains on track.

3 Resource Risks: Limited budget and resources could lead to project delays and
compromises on quality.
Mitigation Plan: Conduct regular budget and resource assessments to
identify areas where adjustments can be made. Prioritize critical features and
deliverables to ensure the most essential components are delivered within the
available budget and resources.

4 User Risks: Users may not use the platform as intended or fail to provide
accurate information, leading to unsatisfactory project outcomes.
Mitigation Plan: Conduct user research to identify user needs and preferences.
Develop clear and comprehensive user guidelines and policies. Regularly
monitor user activity and provide training and support as necessary.

5 Communication Risks: Miscommunication among team members and


stakeholders could lead to project delays and misunderstandings.
Mitigation Plan: Develop clear communication channels and protocols.
Regularly update stakeholders on project progress and any changes to the
project plan.

6 Integration Risks: Integrating the platform with external systems or third-


party applications could lead to technical issues and security risks.
Mitigation Plan: Conduct thorough testing of integrations before
implementation. Hire experienced developers with expertise in integration
and security protocols.

22
4 Methodology of the work

The concept of a social network whose topics are related to graduation projects
can be applied to any university. But the relevance and focus of this work is
closely related to Astana IT University. After all, the applied filters, fields for
databases directly depend on the characteristics of the academic environment.
For universities not related to IT, the requirement to specify the frameworks and
libraries used will be inappropriate. The idea behind this work was not directly
inspired by existing products. An oral survey recorded that among the projects
of past graduates there were projects related to the digitalization of the issuance
of certificates. This helped shape a more specific theme and define users. And
the concept of a social network is more generalized and abstract, and was chosen
because it most accurately describes the spectrum of the planned functionality
and service.
Global social networks are not suitable to form development patterns and
research methodology. They are focused on the general public, and the audience
itself gathers according to their interests in general groups, publics, chats.
Privileges and user roles are limited, and the administration is mainly responsible
for violations and commercial transactions.
Therefore, we proceeded from developments as social networks with a specific
theme, because they limit the range of users and also their functionality is focused
on performing certain tasks. For example, you can indicate your work experience
in your profile and also watch other companies. Look for instructors, as well as
submit your projects for approval.
Before starting to develop the application, a survey was conducted among
university students to confirm the relevance of the idea of our project. The
question was an attempt to determine all the inconveniences and various kinds
of problems that students encountered when choosing partners, as well as when
fulfilling the requirements of the university in order to obtain approval. The list
of questions we asked from students:
1. Who is your teammates in diploma project?
This question is useful to understand the dynamics of team formation in
diploma projects. It provides insights into how students collaborate and form
teams, which can help identify patterns and preferences in selecting project
partners. It resulted in fairly distributed answers to several parts, in figure, quarter
of respondents found teammates from not specially designed services such as
messangers, 30% decided to make team with groupmates, which does not allow
to assume that it based on mutual trust and confidence, because groupmates are
more available to contact to to the fact of being assigned to one social unit.

23
Figure 4.1 – Question 1

2. How it was to find teammates?

Figure 4.2 – Question 2

This question helps assess the ease or challenges students face when
searching for teammates for their diploma projects. Understanding the difficulties
encountered in team formation can highlight the need for a platform that
facilitates the process and improves efficiency.

3. Have you faced any problems in the team when choosing a technology stack?

This question aims to identify any issues students may encounter when
selecting a technology stack for their diploma projects. It helps uncover potential
barriers and challenges that can be addressed through the proposed social
network-based platform, which can provide resources and guidance in choosing
appropriate technologies.

24
Figure 4.3 – Question 3

4. How it was to find mentor?

This question explores the experiences students have had in finding mentors
for their diploma projects. It sheds light on the difficulties they may have faced
and the level of support available. The insights gained can inform the development
of features within the platform to facilitate mentor matching and support.

Figure 4.4 – Question 4

5. Does your mentor’s technology match your planned technology so that it


can be used well, and can it help and guide you?

This question assesses the alignment between students’ planned technologies


for their projects and the expertise of their mentors. It helps gauge the relevance
of mentorship in relation to the technical aspects of the projects. The responses
can guide the platform’s functionality to ensure effective mentor-student matches.

25
Figure 4.5 – Question 5

6. Do you think it is easy to find free and relevant students from other groups?

This question investigates the ease of finding suitable students from different
groups who are available to collaborate on diploma projects. It provides insights
into the challenges students may face when seeking cross-group partnerships and
informs the platform’s features to facilitate connections and broaden collaboration
opportunities.

Figure 4.6 – Question 6

7. Which way do you prefer to choose a diploma partner?

This question explores students’ preferences in selecting diploma project


partners. It helps identify the methods they find most effective or desirable, such
as personal connections, shared interests, or compatibility in skills. The responses
can inform the platform’s algorithms and search mechanisms to optimize partner
matching.
26
Figure 4.7 – Question 7

8. Whould you use special platform for searching diploma topics and partners?
This question gauges students’ willingness to utilize a dedicated platform for
searching diploma topics and partners. It serves as a validation of the need for
the proposed social network-based platform and its potential acceptance among
the target user group. The high percentage of positive responses demonstrates the
relevance and value of the platform.

Figure 4.8 – Question 8

According to results, we can track the tendency: in figure, pie chart shows
that 76,7% of respondents claimed they would use a special platform for searching
diploma topics and partners, 74,1 % of them faced some problems in the team
when choosing a technology stack, etc. Answers of respondents prove the relevance
of the work.
Were there works that influenced the idea of your project? As mentioned
earlier, since the idea of the application is local to IT universities, and besides,
it does not introduce a specific algorithm from computer science or engineering
discoveries of recent years, there is no specific prototype. But familiarization with
27
products such as Linkedin can give a vague idea.
There is a live non-commercial web application that was explored during the
Django boot camp at the educational portals. The application is less complex and
uses o Link: https://django-2021.herokuapp.com/
You can see that there is only registration, personal mail, projects and
developers. Projects only represent entities owned by a particular developer. You
can write to another developer, but you cannot influence his project.nly one
"batteries included"framework.

28
5 Software Architecture

Social network application for diploma work projects does not involve any
complex architectural patterns due to not dealing industrial or commercial level
load and user base. The server-side of the application is the REST API developed
by Django Rest Framework (DRF), in ecosystem of which all the necessary
security and network services are included. The client-side of the application is
developed using React library which allows to develop responsive UI based on
components.
5.1 SERVER-SIDE
5.1.1 API
Django REST Framework: Django REST Framework (DRF) is a
comprehensive toolkit for constructing Web APIs in Django. It offers a collection
of tools and libraries for facilitating the development of RESTful APIs,
encompassing request handling, serialization, authentication, and other related
functionalities.
5.1.2 Database Management System
PostgreSQL: PostgreSQL is an open-source relational database management
system (RDBMS). Renowned for its robustness, scalability, and rich feature set,
it serves as the underlying database for storing and retrieving data in the project.
5.1.3 Authentication and Authorization
SimpleJWT: SimpleJWT is a Django library designed to handle JSON Web
Tokens (JWT). JWT provides a stateless authentication mechanism allowing users
to authenticate and acquire a token, which subsequently authenticates subsequent
requests. SimpleJWT simplifies JWT authentication within Django, providing
utilities for token generation, validation, and other related operations.
5.1.4 Security mechanims
cors-headers: cors-headers is a Django library that handles Cross-Origin
Resource Sharing (CORS) headers. CORS is a security mechanism that permits
restricted resources, such as APIs, to be requested from a domain different
from the one hosting the resource. cors-headers simplifies the configuration and
management of CORS headers in Django, enabling cross-origin requests to the
API.
5.1.5 Documentation
drf-yasg: drf-yasg (Django REST Framework Yet Another Swagger Generator)
is a library that automatically generates OpenAPI (formerly Swagger)
documentation for Django REST Framework APIs. It facilitates the automatic
generation of API documentation by analyzing DRF views, serializers, and
29
viewsets. With drf-yasg, users can effortlessly explore and test API endpoints
via the Swagger UI interface.
5.2 CLIENT-SIDE
Client-Side (Front-End):

• React: React is a popular JavaScript library for building user interfaces. It


follows a component-based architecture, allowing developers to create reusable
UI components and efficiently manage state and rendering. React provides a
declarative approach to building interactive web applications, facilitating efficient
updates and rendering of components.
• ant-design: ant-design is a design system and React UI library that offers a
rich collection of customizable components and styles. It provides a comprehensive
set of ready-to-use components, icons, and layouts, enabling developers to create
visually appealing and consistent user interfaces.
• react-bootstrap: react-bootstrap is a React implementation of the Bootstrap
framework, providing a collection of reusable UI components. It combines the
power of Bootstrap’s CSS styling with the flexibility and reusability of React
components, allowing developers to create responsive and mobile-friendly web
applications.
• react-router-dom: react-router-dom is a routing library for React
applications. It enables declarative routing, allowing developers to define the
routing structure and navigation within their application. react-router-dom
provides components such as Router, Route, and Link, which facilitate the
creation of dynamic and navigable user interfaces.
• npm and yarn: npm (Node Package Manager) and yarn are package
managers for JavaScript. They simplify the management and installation of
dependencies required by the project. Developers can easily add, update, and
remove packages from their project using these package managers, ensuring
efficient dependency management.

Summary (Client-Side and Server-Side): The project incorporates a range of


technologies on both the client-side and server-side to create a robust and efficient
web application. On the server-side, Django REST Framework, PostgreSQL,
SimpleJWT, drf-yasg, and cors-headers are utilized. Django REST Framework
offers a comprehensive toolkit for building RESTful APIs, while PostgreSQL
serves as the underlying database. SimpleJWT provides a secure authentication
mechanism using JSON Web Tokens, and drf-yasg automatically generates API
documentation. cors-headers handles Cross-Origin Resource Sharing.
On the client-side, React forms the foundation of the user interface,
providing a component-based architecture and efficient rendering. ant-design and
30
react-bootstrap are employed to create visually appealing and responsive UI
components. react-router-dom facilitates declarative routing, enabling dynamic
navigation within the application. npm and yarn are used as package managers
for managing dependencies.
Together, these technologies enable the project to deliver a seamless user
experience, with a robust and secure backend API and a visually appealing and
interactive front-end. The server-side technologies provide efficient data handling,
authentication, and documentation, while the client-side technologies offer a
dynamic and responsive user interface. The combination of these technologies
ensures a comprehensive and user-friendly web application experience.
5.3 Services description
5.3.1 Database Schemas
In the context of developing the backend infrastructure for an application,
a combination of Django Rest Framework (DRF) and PostgreSQL, along with
the administration tool pgAdmin4, has been selected. This setup presents
a compelling approach for constructing RESTful APIs while leveraging the
advanced capabilities and scalability provided by PostgreSQL as the underlying
database management system. DRF offers a comprehensive toolkit that expedites
the development process by facilitating the creation of API endpoints, managing
authentication and permissions, and serializing data. Concurrently, PostgreSQL
serves as a dependable and feature-rich relational database system. With the
inclusion of pgAdmin4, users gain access to an intuitive graphical interface that
streamlines the administration and management of the PostgreSQL database.
This interface simplifies tasks such as schema creation, table management, and
query execution.
a. Abstract Model and Manager.
The usage of abstract models and managers in Django provides a convenient
and reusable way to define common functionalities and behaviors that can be
inherited by multiple models. Abstract models serve as a blueprint or template
for other models, encapsulating shared fields, methods, and meta options. By
setting the abstract attribute to True in the Meta class, Django recognizes that
the model is intended to be used as a base class and should not be created as a
separate table in the database.

31
Figure 5.1 – AbstractModel schema

In figure 5.1, we have an AbstractModel that defines several common fields like
public_id, created, and updated. These fields can be inherited by other models that
require these attributes. The public_id field, for instance, is defined as a UUID
field with unique constraints, automatically generated using uuid.uuid4() as the
default value. The created and updated fields are automatically updated with the
current date and time whenever a record is created or modified.
To complement the abstract model, an AbstractManager is defined
as a custom manager class. The manager provides a convenient method
get_object_by_public_id() to retrieve an instance of the model using the
public_id field. If an object with the specified public_id exists, it is returned;
otherwise, an appropriate exception, Http404, is raised. This manager can be
inherited by other models that share similar lookup requirements.
The abstract model and manager combination allows for code reuse, promotes
consistency, and simplifies the implementation of common functionalities across
multiple models. By inheriting from the AbstractModel, other models gain
access to the shared fields and can take advantage of the custom manager’s
methods, such as get_object_by_public_id(). This approach promotes modular
and maintainable code by centralizing shared logic and reducing code duplication.

32
b. Users app

Figure 5.2 – User schema

In figure 5.2, the fragment from global Entity-Relationship diagram related to


Users app is shown. The User model and UserManager class provided in the code
demonstrate the implementation of a custom user model in Django, inheriting
from AbstractBaseUser and PermissionsMixin. This allows for the creation of a
user model that meets specific requirements and includes additional fields and
methods.
The UserManager class serves as the manager for the User model and
extends both BaseUserManager and the previously mentioned AbstractManager.
It provides methods such as create_user() and create_superuser() for creating
regular users and superusers, respectively. These methods handle the creation of
user instances, including password hashing and saving them to the database.
The User model itself includes various fields relevant to user information,
such as username, email, first_name, last_name, gender, status, faculty, group,
skills, bio, avatar, is_active, is_superuser, projects_liked, and is_staff. These
fields represent attributes such as username, email, name, gender, role status,
faculty, group, skills, bio, avatar image, and related project likes. The model also
defines custom methods like like(), remove_like(), has_liked(), and name() to
33
handle project likes and user information retrieval. The User model overrides
the USERNAME_FIELD attribute to specify that the username field should be
used as the unique identifier for authentication. Additionally, the objects attribute
is set to an instance of the UserManager class, providing access to the custom
manager’s methods for user creation and retrieval.
This custom user model allows for the storage of extended user information
and provides flexibility in managing user authentication and authorization within
the Django framework.
c. Projects app

Figure 5.3 – Project schema

In figure 5.3, the Project model represents a project entity and includes
fields such as author, title, description, type, technologies, tags, participant1,
participant2, participant3, and edited. It also inherits from the AbstractModel
class, which provides common fields like public_id, created, and updated. The
Project model has a ForeignKey relationship with the User model, representing
the project’s author, and a ManyToManyField relationship with the Tag model
for categorizing the project. The ProjectManager class serves as the manager for
the Project model.
The ProjectSerializer is responsible for serializing and deserializing project
data. It extends the AbstractSerializer and includes additional fields such as
author, liked, and likes_count. The author field is a SlugRelatedField that
represents the project’s author by their public ID. The liked field and likes_count
field are calculated using the get_liked() and get_likes_count() methods,
respectively, which retrieve the current user’s like status for the project and
the count of total likes. The validate_author() method ensures that a project
can only be created for the authenticated user. The to_representation() method
34
is overridden to include the serialized author data in the representation. The
update() method is also overridden to set the edited field to True if it was not
previously edited. The ProjectSerializer has a nested Meta class that defines the
model as Project and lists the fields to be serialized, including read-only fields. d.
Joins app.

Figure 5.4 – Join schema

In the figure 5.4, the Join model represents a join request made by a user
to participate in a project. It includes fields such as applicant, project, message,
accepted, and edited. The applicant field is a ForeignKey to the User model,
representing the user who made the join request. The project field is a ForeignKey
to the Project model, representing the project for which the user wants to join.
The JoinManager class serves as the manager for the Join model.
The JoinSerializer is responsible for serializing and deserializing join request
data. It includes fields such as applicant and project, which are represented
as SlugRelatedField using the users’ and projects’ public IDs respectively. The
to_representation() method is overridden to include the serialized applicant data
in the representation. The validate_project() method ensures that the project
field is valid. The JoinSerializer has a nested Meta class that defines the model as
Join and lists the fields to be serialized, including read-only fields.
The JoinViewSet handles the API endpoints related to join requests. It
extends the AbstractViewSet and sets the queryset to Join.objects.all() and the
serializer_class to JoinSerializer. The JoinViewSet defines the perform_create()
method to automatically assign the authenticated user as the applicant when
creating a join request. The get_object() method is overridden to retrieve the
join request based on the public ID. The accept() method is decorated with
@action and handles the PATCH request for accepting a join request. It checks
if the authenticated user is the author of the project and updates the accepted
35
field of the join request accordingly. If the join request is accepted, it updates the
project’s participant slots and, if applicable, assigns the user as an instructor. The
JoinViewSet also includes the necessary import statements for models, serializers,
decorators, permissions, and responses.
These models, serializers, and viewsets work together to provide the
functionality for creating, retrieving, and accepting join requests for projects
within the Joins app.
5.3.2 Authentication
The authentication flow using simple-jwt in the server-side API of the project
can be described as follows:

Figure 5.5 – Register form

1. Registration:
• When a user wants to register, they make a POST request to the
RegisterViewSet endpoint.
• The create method in the RegisterViewSet class is called.
• The user data is validated using the UserSerializer. If the data is valid, a
new user is created using the create_user method of the User model.
• After the user is successfully created, a refresh token and an access token
are generated using the RefreshToken.for_user method.
• The user data, along with the tokens, is returned as a response.

36
2. Login:

Figure 5.6 – Login form

• To log in, a user makes a POST request to the LoginViewSet endpoint.


• The create method in the LoginViewSet class is called.
• The user credentials are validated using the LoginSerializer. If the credentials
are valid, a token is generated using the TokenObtainPairSerializer behind the
scenes.
• If the token is successfully generated, it is returned as a response.

3. Token Refresh:
• When a user needs to refresh their access token, they make a POST request
to the RefreshViewSet endpoint.
• The create method in the RefreshViewSet class is called.
• The refresh token is validated using the RefreshTokenSerializer. If the token
is valid, a new access token is generated.
• The new access token is returned as a response.

The authentication flow involves registering a user, logging in to obtain an


access token, and refreshing the access token when needed. The registration
process creates a new user and provides both a refresh token and an access token.
The login process validates user credentials and provides an access token. The
token refresh process verifies the refresh token and generates a new access token.
5.3.3 Data serialization to JSON standards
The data processing within the serializers is responsible for handling the
validation, transformation, and creation of data objects in the Django REST
Framework. In the LoginSerializer, the validate method is overridden to extend
the token validation process provided by the TokenObtainPairSerializer. After the
token is validated, additional data is added to the response. The user object is
serialized using the UserSerializer, and the refresh and access tokens are converted
to string representations. This allows the response to include the user information
37
along with the tokens for authentication.
The RegisterSerializer handles the creation of a new user object based on the
provided data. During the validation phase, the password field is validated using
the password_validation module, ensuring that it meets the required criteria. If
the validation passes, the create method is called to create a new user instance.
The password is set using the set_password method to properly hash the password
before saving it. By utilizing these serializers, the data processing tasks such
as validation, serialization, and object creation are handled seamlessly. The
serializers provide a convenient way to define the expected structure of the data
and perform necessary transformations and operations, ensuring the integrity and
consistency of the processed data within the Django REST Framework.
5.3.4 Projects app
The purpose of the app is to develop a web application to simplify, automate,
and digitize the processes related to the diploma work at Astana IT University.
The app is designed to be a part of the existing system of digital applications
within the university. The app revolves around the concept of a social network and
aims to facilitate various stages of the thesis research and defense process. It allows
students in their final year to conduct research for obtaining an academic degree,
with each student or group of students assigned a supervisor for guidance and
monitoring of academic quality. The app utilizes Django’s models, viewsets, and
serializers to handle the underlying data and provide API endpoints for various
operations. The main entity of the app appears to be the "Project,"represented
by the Project model. The ProjectViewSet handles the CRUD (Create, Read,
Update, Delete) operations for projects and includes additional custom actions
like "like"and "remove_like"to interact with project objects. The ProjectViewSet
defines permissions and specifies the allowed HTTP methods for accessing the
endpoints. It also includes additional actions like searching for projects based on
certain criteria. The ProjectSerializer is responsible for serializing and deserializing
project data when communicating with the API. The app aims to improve the
efficiency and digitalize the processes related to thesis work at the university
by providing a web-based platform for managing and interacting with projects.
It enables students, supervisors, and other authorized users to perform various
operations on projects, search for projects, and interact with them through the
API endpoints

38
Figure 5.7 – Project creation bar

The user that registered on system, has right to create a project. When user
is loged in, site navigates to main pages with listed projects, as shown in figure,
at the top of the page there is the field which allows user to create a project.
The scenario when user clicks the bar is modal appearing. In terms of
appereance of form to handle project creation, using react-bootstrap modals was
chosen.

Figure 5.8 – Project creation modal

In figure 5.8, modal windows provide a seamless and uninterrupted user


experience. Instead of redirecting the user to a new page, the Modal appears
as an overlay on the current page, allowing users to stay focused and engaged
within the context of the application. It avoids the need for page reloads and
provides a smooth workflow. With a Modal, the user can create a new project
without leaving the current page. This saves time and reduces the number of steps

39
required to perform the task. Users can quickly input the necessary information,
submit the form, and continue working on other tasks within the application.
By using a Modal, the form for creating a new project is displayed within the
context of the application. Users can reference existing project data, perform
actions related to other projects, or access relevant information without the
need to navigate away. It keeps the user connected to the overall application
flow and maintains context. Modals can draw attention to specific tasks or
actions, as they typically appear as a prominent overlay with a clear focus
on the form or content within them. By isolating the project creation process
within a Modal, it helps users understand that they are performing a distinct
action and reduces distractions from other elements on the page. Modals allow
for real-time validation and instant feedback. If there are any errors or missing
information in the project creation form, validation can be performed immediately
within the Modal, providing feedback to the user without requiring a page reload.
This immediate validation and feedback improve the overall user experience and
help users correct any issues efficiently. Using a Modal eliminates the need to
handle complex navigation and state management that comes with navigating to
a separate page. The Modal component can be easily controlled and managed
within the existing page structure, simplifying the overall application logic and
reducing code complexity. The use of a React-bootstrap Modal for creating a
project provides a more seamless, efficient, and focused user experience within
the context of the application, allowing users to create projects without the need
for navigating to another page.
Updating and Deleting of Project:

Figure 5.9 – Project card

40
In figure 5.9, the UpdateProject component in the frontend is responsible for
rendering a modal form that allows users to modify the details of an existing
project. When the user clicks on the "Modify"dropdown item, the modal form is
displayed with pre-filled fields containing the current project information. The user
can make changes to the project title, description, type, and technologies fields.
Upon submitting the form, an HTTP PUT request is sent to the backend API to
update the project with the new information. If the request is successful, a success
toast notification is shown, and the project list is refreshed. The ProjectViewSet in
the backend handles the API endpoints related to projects, including updating a
project. The update method is responsible for handling the HTTP PUT request to
update a specific project. The request data is validated using the ProjectSerializer.
If the validation passes, the project is updated with the new information. The
updated project is then serialized and returned in the response.
The ProjectViewSet also provides additional actions such as like and
remove_like to handle liking and unliking a project respectively. It implements
the create method to handle the creation of new projects. The search_projects
action allows users to search for projects based on a search query provided in the
request.

Other UI solutions:
a. Project Card: The Project component is responsible for rendering a single
project card. It displays information about the project, such as the project title,
author, creation date, type, technologies, description, and number of likes. The
component also includes buttons for liking the project and joining it (if it’s not a
single project view).The component uses various React Bootstrap components
to structure the card layout and display the project details. It also utilizes
icons from the Ant Design library for the like and join buttons. The Project
component provides functionality for liking/unliking a project and deleting a
project. When the like button is clicked, an HTTP POST request is sent to the
backend API to like or unlike the project, depending on its current state. The
handleLikeClick function handles this logic and triggers a refresh of the project
list. If the user viewing the project is the author, a dropdown menu with options
for updating the project and deleting it is displayed. Clicking on the update
option opens the UpdateProject modal form, while clicking on the delete option
triggers the handleDelete function to send an HTTP DELETE request to delete
the project.The component also includes a toast notification component (Toaster)
that is displayed when a project is successfully deleted.
b. Single Project: The SingleProject component is responsible for rendering a
single project page. It receives the projectId from the URL parameters using the
useParams hook from react-router-dom. The component uses the useSWR hook

41
from the swr library to fetch the project data and join requests from the backend
API. Inside the SingleProject component, a layout component (Layout) is used to
structure the page and provide a back navigation option. The layout component
includes a header and content section.
If the project data is available (project.data exists), the component renders the
project details using the Project component. It passes the project data as a prop
and sets the isSingleProject prop to true to indicate that it’s a single project view.
The Project component displays information about the project, such as the title,
author, type, technologies, description, and number of likes. Below the project
details, the component renders the CreateJoin component. This component allows
the user to create a join request for the project. It receives the projectId as a prop
and provides a form for submitting the join request. The refresh prop is passed to
both the Project and CreateJoin components, allowing them to trigger a refresh
of their respective data when necessary. Next, the component renders the list of
join requests (Join components). It checks if the join requests data is available
(joins.data exists) and if it’s an array (Array.isArray(joins.data.results)). If both
conditions are true, it maps over the join requests and renders a Join component
for each one. The Join component displays information about the join request,
such as the user, date, and status.
If the project data is not available, a "Loading..."message is displayed.
The SingleProject component is used in the routing configuration in the App
component. It is associated with the route path /project/:projectId/ and rendered
as a protected route. This means that the user must be authenticated to access
the single project page.
5.3.5 Joins app
The Joins app is designed to facilitate the process of users sending join requests
to project authors and allowing authors to accept or deny those requests. Users can
submit a join request with an accompanying message to express their interest in
participating in a project. Project authors have the ability to review and accept
join requests. When a request is accepted, the participant slots for the project
are updated accordingly, and the user who made the join request becomes a
participant in the project. If available, the user can also be assigned as the project’s
instructor. The app includes models to represent join requests, viewsets to handle
CRUD operations and request acceptance, and serializers to serialize and validate
the data. The goal is to streamline the process of joining projects and manage
participant assignments efficiently.

42
Figure 5.10 – Single Project page

In figure 5.10, The Join component represents a join request made by a user
for a specific project. It displays the user’s avatar, name, and the date of the
join request. If the user is the applicant of the join request, a dropdown menu is
shown, allowing them to update or delete the request. The join request message
is also displayed. The CreateJoin component provides a form for users to create
a join request for a specific project. It displays the user’s avatar and a text input
field where the user can enter their join request message. When the "Join"button
is clicked, the join request is sent to the backend using an HTTP POST request.
The UpdateJoin component allows users to update their existing join request for a
project. It displays a "Modify"option in a dropdown menu. When clicked, it opens
a modal that contains a form with a textarea where the user can update their join
request message. Clicking the "Modify"button in the modal sends the updated
join request to the backend using an HTTP PUT request. These components
are designed to provide an interactive user interface for creating, updating, and
managing join requests within the Joins app. The components use axios for making
HTTP requests to the backend API, and they also utilize hooks, context, and
Bootstrap components for UI rendering and interactivity.
5.3.6 OpenAPI Documentation
Swagger is a widely-used tool in the development community for documenting
and visualizing RESTful APIs. Its primary purpose is to provide an intuitive
interface for exploring and interacting with APIs. By integrating Swagger with
Django Rest Framework (DRF), developers can take advantage of the drf-yasg
package to generate Swagger/OpenAPI specifications based on their DRF views
and serializers.
43
Figure 5.11 – Swagger UI

In figure 2.11, the Swagger UI generated by drf-yasg automatically generates


documentation for your API endpoints based on the DRF views and serializers
you have defined in your project. It provides a comprehensive overview of
the available endpoints, request/response structures, and even allows users to
make test requests directly from the documentation. On the server side, the
get_schema_view function from drf_yasg.views is used to create a schema view
for the Swagger UI. This function takes parameters such as openapi.Info to provide
essential information about the API, including its title, version, description,
contact details, and license. Once the schema view is created, it can be included
in the Django URL configuration, making it accessible through a specific URL
endpoint. When users access this endpoint in a web browser, they are presented
with the Swagger UI interface, which automatically generates documentation for
the API endpoints based on the DRF views and serializers defined in the project.
5.3.7 Software testing
Test-driven development (TDD) is a software development approach that
emphasizes writing tests before writing the actual code. This methodology follows
a cyclic process where developers first create a failing test that describes the
desired behavior of the code. Then, they write the code to make the test pass,
followed by refactoring to improve the code’s design and maintainability. By
adhering to the principles of TDD, developers can ensure better code quality,
reduce the likelihood of introducing bugs, and improve overall software reliability.
44
In the context of testing Django applications, pytest-django is a powerful testing
framework that integrates seamlessly with the pytest framework. It provides
additional features and utilities specifically tailored for testing Django projects.
One of the notable benefits of using pytest-django is its support for the testing
pyramid, also known as the testing triangle.

Figure 5.12 – Testing pyramid

The testing triangle is a concept that emphasizes having a balanced


distribution of different types of tests in the software testing strategy. It consists
of three layers: unit tests, integration tests, and end-to-end tests. Unit tests
focus on testing individual components in isolation, while integration tests verify
the interaction between multiple components. End-to-end tests simulate real
user interactions and validate the entire system’s behavior. With pytest-django,
developers can easily write and run tests at each level of the testing triangle. The
framework provides a concise and expressive syntax for defining tests, along with
fixtures that simplify the setup and teardown of test environments. By leveraging
pytest-django’s capabilities, developers can ensure comprehensive test coverage,
faster test execution, and more efficient debugging of Django applications.

45
a) Configuration
The initial step in the workflow involves configuring pytest-django for the
project. The pytest.ini file is utilized to specify the Django settings module and
define the file patterns to identify the test files. In the provided configuration,
the DJANGO_SETTINGS_MODULE is set to "CoreRoot.settings and the
python_files option specifies the patterns for identifying the test files. This
configuration ensures that pytest-django can discover and execute the tests
correctly.
b) General fixtures
The conftest.py file is a powerful tool in pytest-django for sharing fixtures
across multiple test files. Fixtures provide a way to set up the necessary
environment for each test and provide reusable resources. In the provided
conftest.py snippet, a fixture named "client"is defined. The client fixture returns
an instance of the APIClient from Django’s rest_framework.test module. This
fixture is used to make HTTP requests to the API endpoints during the tests. By
utilizing fixtures, the testing process becomes more efficient, modular, and easier
to maintain.
c) Unit testing
In the unit tests for the Users Django app, the goal is to verify the functionality
of creating regular users and superusers. The code provided demonstrates two test
cases: test_create_user() and test_create_superuser(). The test_create_user()
function tests the creation of a regular user by calling the create_user() method
of the User model. The test passes in the data_user dictionary, which contains
the necessary user data such as username, password, first name, last name, email,
gender, status, and faculty. The assertions in the test validate that the created
user’s attributes match the corresponding values in the data_user dictionary.
Similarly, the test_create_superuser() function tests the creation of a
superuser using the create_superuser() method of the User model. The
data_superuser dictionary provides the required user data for the superuser. The
assertions in this test verify that the created superuser’s attributes match the
values specified in the data_superuser dictionary. Additionally, the test checks if
the user is marked as a superuser and staff member by asserting is_superuser and
is_staff as True.
Both test functions are decorated with @pytest.mark.django_db, which
instructs pytest to create a test database and enable database access for
the tests. This ensures that the tests are performed in an isolated database
environment, preventing interference with other test cases or the production
database. By running these unit tests, developers can validate that the user
creation functionality in the Users Django app is working correctly. These
46
tests provide confidence in the expected behavior of the create_user() and
create_superuser() methods and help identify any potential issues or regressions.
In the unit test for the Project Django app, the objective is to validate
the creation of a project. The provided code includes a single test case:
test_create_project(). The test_create_project() function utilizes the Project
model from the core.project.models module and the user fixture from the
core.fixtures.user module.

1 import pytest
2 from core . fixtures . user import user
3 from core . project . models import Project
4

5 @pytest . mark . django_db


6 def test_create_project ( user ) :
7 project = Project . objects . create ( author = user ,
description = " Test ␣ Project
8 description " )
9 assert project . author == user
10 assert project . description == " Test ␣ Project ␣
description "

The user fixture provides a pre-existing user object that will be used as
the author of the project. Within the test, a project is created by calling the
create() method of the Project model. The author parameter is set to the user
fixture, representing the user who created the project. The description field is
also specified with a sample description for the project. To verify the correctness
of the project creation, several assertions are made. The test asserts that the
author attribute of the project object matches the user fixture, ensuring that
the correct user is associated with the project. Additionally, the test verifies that
the description field of the project matches the provided sample description. The
@pytest.mark.django_db decorator is used to instruct pytest to create a test
database and enable database access for this particular test case. This allows
for isolation and ensures that the test operates within a controlled database
environment. By running this unit test, developers can ensure the accurate
creation of projects within the Project Django app. It helps verify that the create()
method of the Project model functions correctly, associating the appropriate
author and storing the provided project description accurately.
In the unit test for the Join Django app, the purpose is to validate the creation
of a join request. The provided code includes a single test case: test_create_join().
The test_create_join() function utilizes the Join model from the
core.join.models module, as well as the user and project fixtures from the
47
core.fixtures.user and core.fixtures.project modules, respectively. The user fixture
provides a pre-existing user object, and the project fixture provides a pre-existing
project object.

1 @pytest . mark . django_db


2 def test_create_join ( user , project ) :
3 join = Join . objects . create ( applicant = user ,
project = project , message = " I ␣ want ␣ to ␣ join , ␣ I ␣
have ␣ experience ␣ in ␣ React " )
4 assert join . applicant == user
5 assert join . project == project
6 assert join . message == " I ␣ want ␣ to ␣ join , ␣ I ␣ have ␣
experience ␣ in ␣ React "

Within the test, a join request is created by calling the create() method of the
Join model. The applicant parameter is set to the user fixture, representing the
user who wants to join the project. The project parameter is set to the project
fixture, representing the project to which the user wants to join. The message field
is also specified, containing a sample message expressing the applicant’s interest
and experience. To verify the correctness of the join request creation, several
assertions are made. The test checks that the applicant attribute of the join object
matches the user fixture, ensuring that the correct user is associated with the join
request. Similarly, the test ensures that the project attribute of the join object
matches the project fixture, confirming that the join request is associated with
the correct project. Additionally, the test validates that the message field of the
join request matches the provided sample message. The @pytest.mark.django_db
decorator is used to instruct pytest to create a test database and enable database
access for this particular test case. This allows for isolation and ensures that the
test operates within a controlled database environment.
d) Integration testing
In the integration testing for the Users app, the TestUserViewSet class is
defined, which contains multiple test methods for different endpoints. This class
utilizes the client fixture from the conftest.py file, which is an instance of the
Django REST Framework’s APIClient. The endpoint variable represents the base
URL for the Users API, which is set to /api/user/.
test_list(self, client, user): This test method verifies the behavior of the list
endpoint. The user is authenticated using client.force_authenticate() with the
user fixture. The test sends a GET request to the endpoint and asserts that the
response status code is 200 (HTTP_200_OK). Additionally, it checks that the
count field in the response data is equal to 1.
48
test_retrieve(self, client, user): This method tests the retrieve endpoint for
retrieving a specific user. Similar to the previous test, the user is authenticated,
and a GET request is made to the endpoint with the user’s public ID appended
to it. The response status code is asserted to be 200, and various fields in the
response data are checked for correctness, including the ID, username, and email.
test_create(self, client, user): This test examines the behavior of the create
endpoint. The user is authenticated, but the test attempts to send a POST request
to the endpoint with an empty data payload. The expected response status code is
HTTP_405_METHOD_NOT_ALLOWED, indicating that the create operation
is not allowed for this endpoint.
test_update(self, client, user): This method tests the update endpoint for
modifying a user’s details. The user is authenticated, and a PATCH request is
made to the endpoint with the user’s public ID appended to it. The data payload
contains an updated username. The response status code is asserted to be 200,
and the updated username is checked in the response data.
These integration tests validate the behavior and functionality of the Users
app’s API endpoints. By examining the responses and asserting the expected
results, developers can ensure that the API endpoints function correctly and
provide the intended behavior.
In the integration testing for the Project app, the TestProjectViewSet class
is defined, which contains multiple test methods for different endpoints. This
class also uses the client fixture from the conftest.py file. The endpoint variable
represents the base URL for the Project API, which is set to /api/project.
test_like(self, client, user, project): This test method verifies the behavior of
the like endpoint. The user is authenticated, and a GET request is made to the
endpoint. The response status code is asserted to be 200 (HTTP_200_OK), and
the count field in the response data is checked to ensure it matches the expected
value.
test_retrieve(self, client, user, project): This method tests the retrieve
endpoint for retrieving a specific project. The user is authenticated, and a GET
request is made to the endpoint with the project’s public ID appended to it. The
response status code is asserted to be 200, and various fields in the response data
are checked for correctness, including the ID, description, and author’s ID.
test_create(self, client, user): This test examines the behavior of the create
endpoint. The user is authenticated, and a POST request is made to the endpoint
with a data payload containing the project description and author’s ID. The
response status code is asserted to be 201 (HTTP_201_CREATED), indicating
successful creation, and the response data is checked to ensure the description and
author’s ID match the provided values.
test_update(self, client, user, project): This method tests the update endpoint

49
for modifying a project’s details. The user is authenticated, and a PUT request
is made to the endpoint with the project’s public ID appended to it. The data
payload contains an updated description and author’s ID. The response status
code is asserted to be 200, and the updated description is checked in the response
data.
test_delete(self, client, user, project): This test verifies the behavior of the
delete endpoint. The user is authenticated, and a DELETE request is sent to the
endpoint with the project’s public ID appended to it. The response status code
is asserted to be 204 (HTTP_204_NO_CONTENT), indicating that the project
was successfully deleted.
test_create_anonymous(self, client): This method tests the behavior of the
create endpoint when the user is not authenticated. A POST request is made
to the endpoint with a data payload, and the expected response status code is
HTTP_401_UNAUTHORIZED, indicating that authentication is required.
test_update_anonymous(self, client, project): This test examines the
behavior of the update endpoint when the user is not authenticated.
A PUT request is made to the endpoint with the project’s public ID
appended to it and a data payload. The expected response status code is
HTTP_401_UNAUTHORIZED, indicating that authentication is required.
Code:

1 def test_update_anonymous ( self , client , project ) :


2 data = {
3 " description " : " Test ␣ body ␣ description " ,
4 " author " : " test_user "
5 }
6 response = client . put ( self . endpoint +
str ( project . public_id ) + " / " , data )
7 assert response . status_code ==
status . HTTP_401_UNAUTHORIZED

test_delete_anonymous(self, client, project): This method tests the behavior


of the delete endpoint when the user is not authenticated. A DELETE request
is sent to the endpoint with the project’s public ID appended to it, and the
expected response status code is HTTP_401_UNAUTHORIZED, indicating that
authentication is required.

50
6 Conclusion

This study has successfully explored the implementation of a social network


platform to digitalize diploma work processes at Astana IT University. The
project has introduced several new features, including commenting on projects,
bug fixing, and resolving logical errors related to joining and accepting project
invitations. The social network web application for IT university students is a
sophisticated system that facilitates team building for diploma work projects. The
system is built using Django, DRF, React, PostgreSQL technologies. It consists of
several main components, including user authentication and authorization, project
management, student and instructor profiles, and a search engine.
The system architecture is designed with modularity in mind, with each
component and module designed to work together seamlessly. The data flow
within the system is carefully managed, with input and output clearly defined for
each component. The user interface is designed to be intuitive and easy to use,
with clear navigation and search functionality. Overall, the social network web
application provides a comprehensive solution for IT university students seeking
to find teammates and instructors for their diploma work projects. With its
search engine and user-friendly interface, the system enables students to easily
find and connect with potential team members and instructors who share their
interests and skills. While the current research has achieved its objectives, there
are avenues for further exploration and research in this area:

1 Usability and User Experience: Future research can focus on evaluating the
usability and user experience of the social network platform. Conducting
user studies, surveys, and interviews can provide valuable insights into user
satisfaction, ease of use, and areas for improvement. Feedback from students,
mentors, and faculty members can inform iterative design and development
processes to enhance the overall user experience.
2 Advanced Collaboration Features: Expanding the collaboration features of
the platform can be an interesting area for further research. Investigate
the integration of real-time communication tools such as chat or video
conferencing within the application. This would facilitate instant and
seamless communication among project teams, mentors, and faculty members,
promoting efficient collaboration and knowledge sharing.
3 Security and Privacy: As the social network platform handles sensitive
academic information, ensuring robust security and privacy measures is
crucial. Further research can focus on evaluating and enhancing the
platform’s security architecture, implementing data encryption, access
controls, and authentication mechanisms to safeguard user data and maintain
confidentiality.
51
4 Scalability and Performance Optimization: With the growth in user base
and project activities, it is essential to assess the platform’s scalability and
optimize its performance. Investigate techniques such as load testing, caching
mechanisms, and database optimization to ensure that the application can
handle increasing user demands and deliver a responsive and seamless user
experience.

This research has laid the foundation for the digitalization of diploma work
processes through the development of a social network platform. The introduction
of new features, bug fixing, and the deployment of the application on AWS have
enhanced its functionality and usability. However, further research in areas such
as usability, collaboration features, machine learning, security, scalability, and
performance optimization will contribute to the continuous improvement and
evolution of the platform, ultimately benefiting students, mentors, and faculty
members in their diploma work endeavors.

52
BIBLIOGRAPHY
1 Eid, Mohammad I. Social networking, knowledge sharing, and student
learning: The case of university students / Mohammad I Eid, Ibrahim M Al-
Jabri // Computers & Education. — 2016. — Vol. 99. — Pp. 14–27.
2 Mousa, Tareq S. The impact of attitude, subjective norm and information
communications technology on knowledge sharing among academic staff /
Tareq S Mousa, Ammar S Jameel, Abdul Rahman Ahmad // International
Journal of Psychosocial Rehabilitation. — 2019. — Vol. 23, no. 02. — Pp. 704–717.
3 Micari, Marina. Connecting to the Professor: Impact of the Student–
Faculty Relationship in a Highly Challenging Course / Marina Micari,
Patricia Pazos // College Teaching. — 2012. — Vol. 60, no. 2. — Pp. 41–47.
4 Saichaie, Kabir. Representation on college and university websites: An
approach using critical discourse analysis: Ph.D. thesis / The University of Iowa.
— 2011.
5 Zaidieh, Ahmad JY. The Use of Social Networking in Education:
Challenges and Opportunities / Ahmad JY Zaidieh // World of Computer Science
and Information Technology Journal (WCSIT). — 2017. — Vol. 7.
6 Apps for academic success: Developing digital literacy and awareness to
increase usage / Robin Canuel, Erin MacKenzie, Andrew Senior, Nima Torabi //
Education for Information. — 2017. — Vol. 33, no. 3. — Pp. 135–152.
7 Cartledge, Peter. The use of social-networking sites in medical education /
Peter Cartledge, Melissa Miller, Bob Phillips // Medical Teacher. — 2013. —
Vol. 35, no. 10. — Pp. 847–857.
8 Pandey, Nitish. Web application for social networking using RTC /
Nitish Pandey, Doina Bein // 2018 IEEE 8th Annual Computing and
Communication Workshop and Conference (CCWC) / IEEE. — 2018. — Pp. 336–
340.
9 Homola, Martin. Taking Advantage of Web 2.0 in Organized Education (A
Survey) / Martin Homola, Zuzana Kubincova // Conference ICL2009. — 2009.
https://dai.fmph.uniba.sk/ homola/download/papers/icl2009.pdf.
10 An Empirical Analysis of the Antecedents and Performance Consequences
of Using the Moodle Platform / Chiu-Chu Huang, Yi-Ming Wang, Ting-Wen Wu,
Po-An Wang // International Journal of Information and Education Technology.
— 2013. — Pp. 217–221.
11 Digitalization of environmental education is the trend of its modernization
and reform / Konstantin Grevtsov, Olga Kadeeva, Valeria Syritsyna et al. // E3S
Web of Conferences. — 2021. — Vol. 258. — P. 10011.
12 Mentes, Sinan Alper. Assessing the usability of university websites:
An empirical study on Namik Kemal University / Sinan Alper Mentes,
Ali Hikmet Turan // Turkish Online Journal of Educational Technology-TOJET.
53
— 2012. — Vol. 11, no. 3. — Pp. 61–69.
13 Strokov, A. A. Digitalization of education: Problems and prospects /
A. A. Strokov // Vestnik of Minin University. — 2020. — Vol. 8, no. 2. —
P. 15.
14 Godin, Victoria V. Digitalization of Education: Models and Methods /
Victoria V Godin, Anastasia Terekhova // International Journal of Technology.
— 2021. — Vol. 12, no. 7. — P. 1518.
15 Solving problems with group work in problem-based learning: hold
on to the philosophy / Diana HJ M Dolmans, Ineke HA P Wolfhagen,
Cees PM van der Vleuten, Wim HF W Wijnen // Medical Education. — 2001. —
Vol. 35, no. 9. — Pp. 884–889.
16 Social networking and adjustments among international students /
Jingyan Helen Lin, Wei Peng, Misook Kim et al. // New Media & Society. —
2011. — Vol. 14, no. 3. — Pp. 421–440.
17 Kumar, Nitesh. User perception and use of social networking sites by
Sikkim University students / Nitesh Kumar // Education Today. — 2012.
18 Ruiz-Mercader, José. Information technology and learning: Their
relationship and impact on organisational performance in small businesses /
José Ruiz-Mercader, Angel L Meroño-Cerdan, Ramon Sabater-Sánchez //
International Journal of Information Management. — 2006. — Vol. 26, no. 1.
— Pp. 16–29.
19 Dineen, Brian R. Teamxchange: A Team Project Experience Involving
Virtual Teams and Fluid Team Membership / Brian R Dineen // Journal of
Management Education. — 2005. — Vol. 29, no. 4. — Pp. 593–616.

54
Appendix A

Figure A.1 – Sequence diagram

55
Figure A.2 – ERD diagram

56

You might also like