GithubHelp home page GithubHelp logo

djolee00 / university-board-full-stack Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 1.0 594 KB

UBMS is a full-stack web application developed for a Bachelor's Thesis defense on Faculty of Organizational Sciences. The primary objective of this system is to streamline the management of university boards and facilitate efficient communication between university employees and board members. Tech Stack: Spring Boot 3, React, AWS, MySQL

Java 47.48% HTML 4.68% CSS 1.30% TypeScript 46.54%
aws-s3 axios builder file-service hibernate-jpa java lombok mail-sender mapstruct material-ui

university-board-full-stack's Introduction

University Board Management System

Welcome to the University Board Management System (UBMS) README! This comprehensive document will provide you with an in-depth understanding of the UBMS project, its purpose, use cases, and the technologies used to develop it.

Project Overview

UBMS is a full-stack web application developed for a Bachelor's Thesis defense on Faculty of Organizational Sciences. The primary objective of this system is to streamline the management of university boards and facilitate efficient communication between university employees and board members. The application allows users to create, delete, modify, search, and sort boards. It also enables employees to upload comments and files to boards, with the added functionality of downloading those files.

Craig Larman's Software Development Method

UBMS was developed following Craig Larman's software development method, which emphasizes an iterative and incremental approach to software development. My software development went through 5 phases:

1. Requirements Gathering
2. Analysis
3. System Design
4. Implementation
5. Testing

Requirements Gathering

Thoroughly understanding the requirements for the university board management system. I managed to identify 18 use cases and diveded them in 4 groups:

1. Board administration
2. Employee management
3. File management
4. Comments section

Also I realized that users should have different privileges and roles (group of privileges) so different sections and actions can be enabled/disabled for different users. For thesis writing purpose, I analized in detail 10 of 18 Use Cases, although in application all Use Cases were implemented in the end. Below is UML Case Diagram for my project:

Screenshot_1

Analysis

For every Use Case defined in previous phase, in Analysis I defined UML Sequence Diagram which describes interaction between System and User. Here is an example of one Sequence Diagram:

Screenshot_1

As a result of this phase I got description of the structure and behavior of the software system. Structure is described using UML Class Diagram and behaviour using list of system operations:

Screenshot_2

System Design

In Design phase I worked on details about previously defined System Operations through UML Sequence Diagrams.In addition, the design of screen forms and user interaction with them was carried out too. As result of this phase we get the final architecture of the software system:

Picture1

As we can see there are 3 layers of system. UI layer is an client application made primarily using React library. Application logic layer consists of 2 Web Services made using Spring framework. One web service is main who is responsible for almost whole business logic and also there is file service which is made for only file management. It is responsible for downloading, uploading and deleting files to/from AWS S3 service. This service can be use for any other project which needs file management system and storage. Storage layer is implemented using MySQL RDMS and Amazon S3

Implementation

In this phase, my task was to choose techonologies and implement everything till now was specified in previouse phases.

Frontend techonologies:

  • Typescript
  • React
  • Axios
  • Material UI (MUI)

Backend techonologies:

  • Java 18
  • Spring Boot 3
  • Spring Security 6
  • MySQL
  • Amazon AWS S3

Notable libraries and plugins:

  • Spring WebFlux
  • Lombok
  • Mapstruct
  • Maven spotless plugin
  • Hibernate JPA Metamodel Generator
  • Thymeleaf
  • JWT
  • JavaMailSender
  • Amazon SDK S3

Testing

In this study example, manual testing of all use cases was performed, during which the behavior of the software and its response were monitored. Testing included validation of all possible data and their permitted values. By entering the correct and incorrect data values, the validation and operation of the software was checked, and during the testing, all the errors and deficiencies that were discovered were incrementally removed. Testing also included checking the safety and security of the software system itself, that is, its resources depending on the users themselves and their privileges.

Screenshots

Picture9 1 2 3 4 5 Picture6 Picture8

Future Improvements

  • Dockerization
  • Unit and Integration testing
  • Implementing Microservice architecture
  • Hosting whole system
  • API and User documentation

university-board-full-stack's People

Contributors

djolee00 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

ruisunon

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.