Team project within the course of Software System Design and Analysis.

Overview

📗 InnoBookCrossing - Application for sharing books at Innopolis

gh-md-toc

🔍 General Information

Description

The application is designed to help people share books with each other. All you need to do - register on a website using your Telegram Alias.

The motivation of the project

We all have books that we are not currently reading. Why should a book lay on a shelf if it can be useful for another person? Using the InnoBookCrossing application book owners can easily borrow available books and book lovers take it!

Features

  • User can publish books which he\she has.
  • User can borrow the book, if it is available or wait in a queue otherwise.
  • User can search for an interesting book using filters.
  • User can publish the book which he\she wants to find in the printed version.
  • Book owner can leave feedback on a user, who took the book recently.

Frameworks or technology

  • Java
  • Spring
  • Swagger
  • Javascript
  • React

Authors

  • Dariya Vakhitova
  • Alexandr Kedalo
  • Ruslan Nurutdinov
  • Roman Mukhtarov

📍 Requirement Engineering

Link

📜 Design Documentation

Sequence diagram Sequence diagram

Use cases Use case

In the development process the following principles were followed as closely as possible

  • SOLID

    • single responsibility
    • open–closed
    • Liskov substitution
    • interface segregation
    • dependency inversion

    Code Example:


    public class Book {
    @Id
    @SequenceGenerator(name = "IdSeq", sequenceName = "book_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "IdSeq")
    Integer id;
    @Column(name = "title")
    String title;
    @Column(name = "author")
    String author;
    @Column(name = "genre")
    String genre;
    @Column(name = "owner")
    String owner; // заменить на юзера
    @Column(name = "description")
    String description;
    @Column(name = "image")
    String image;

    @ManyToOne//(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "user_id", nullable = false)
    @JsonIgnore
    private User user;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}
  • REST

    • Client–server architecture
    • Statelessness
    • Cacheability
    • Layered system
    • Code on demand
    • Uniform interface

    Code Example:

export default function BookInfo({book}){
   return(
       <div className="info">
           <div className="imgCover">
               {book.image ? (
                   <img className="bookImg" src={book.image}/>
               ) : (
                   <img className="bookImg" src="no_image.png"/>
               )}
           </div>
           <div className="bookInfo">
               <h1>{book.title}</h1>
               <h2>{book.author}</h2>
               <h3>Genre: {book.genre}</h3>
               <br/>
               <p>Book owner: {book.owner}</p>
               <p>{book.description}</p>
           </div>


       </div>
   )

Frameworks:

  • Composite pattern

🔨 Architecture

The architecture of the project is based on Model-View-Controller architecture. We separated the business logic of the application (Model) and the visual part of the application (View). We choose MVC type of architecture for several reasons:

  1. Separation on View and Model will increase the reusability of the code.
  2. This separation makes it easier to expand and maintain the system in the future.
  3. MVC simplifies the program writing and improves code readability

picture

Screenshots

will be soon

Code example

will be soon

Demo

will be soon

Installation

will be soon

You might also like...

A UI library by WeChat official design team, includes the most useful widgets/modules in mobile web applications.

A UI library by WeChat official design team, includes the most useful widgets/modules in mobile web applications.

WeUI - tailor-made for WeChat web service 中文版本 Introduction WeUI is an WeChat-like UI framework officially designed by the WeChat Design Team, tailor-

Nov 21, 2022

Customise this Figma plugin template for your own design team.

Design Toolkit Customise this Figma reference plugin to provide useful resources and automations for yourself or your team. Inspect the code to see ho

Jul 7, 2022

A UI library by WeChat official design team, includes the most useful widgets/modules.

A UI library by WeChat official design team, includes the most useful widgets/modules.

WeUI for 小程序 为微信小程序量身设计 概述 WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。包含button、cell、dialog、 progress、 toast、article、actionsheet、

Nov 14, 2022

pos-system-team-1 created by GitHub Classroom

pos-system-team-1 created by GitHub Classroom

Hip Hop, Pizza, and Wangs (HHP+W) Get Started READ ALL INSTRUCTIONS BEFORE BEGINNING THIS PROJECT. Take notes as you read. Everything that needs to be

Jun 14, 2022

I built a full-stack project using Node, Express, Mongo, webRTC, socket.io, and of course React JS. This project is inspired by the awesome Clubhouse 😊

codershouse-mern - This Project is Under Development. Below are some of the implemented interface and the remaining features will be updated in future

Nov 18, 2022

A quick and easy to use security reconnaissance webapp tool, does OSINT, analysis and red-teaming in both passive and active mode. Written in nodeJS and Electron.

A quick and easy to use security reconnaissance webapp tool, does OSINT, analysis and red-teaming in both passive and active mode. Written in nodeJS and Electron.

ᵔᴥᵔ RedJoust A quick and easy to use security reconnaissance webapp tool, does OSINT, analysis and red-teaming in both passive and active mode. Writte

Oct 31, 2022

A high-resolution local database that uses precise algorithms to easily record data in local files within a project with persistent JSON and YAML support designed to be easy to set up and use

A high-resolution local database that uses precise algorithms to easily record data in local files within a project with persistent JSON and YAML support designed to be easy to set up and use

About A high-resolution local database that uses precise algorithms to easily record data in local files within a project with persistent JSON and YML

Sep 21, 2022

JavaScript package for predictive data analysis and machine learning

scikit.js JavaScript package for predictive data analysis and machine learning. Generic math operations are powered by Tensorflowjs core layer. We are

Nov 16, 2022

Nouns On-Chain Proposal Simulation and Analysis

Nouns Diligence Nouns On-Chain Proposal Simulation and Analysis For Voters Technical reports for all reviewed proposals can be found in the reports fo

Jun 20, 2022
Owner
Dariya
Innopolis University 3-year student.
Dariya
⚡ Archive of all Zotero Translators co-created by participants of the Information Analysis course in 2018 to date.

awesome-translators 1. awesome-translators 维护小组 1.1 Translators 更新流程 1.2 Zotero 安装流程 1.3 Zotero 进阶资料 2. Translators 2.1 Translators 总览表 2.2 Translator

开智学堂 93 Nov 15, 2022
The Frontend of Escobar's Inventory Management System, Employee Management System, Ordering System, and Income & Expense System

Usage Create an App # with npx $ npx create-nextron-app my-app --example with-javascript # with yarn $ yarn create nextron-app my-app --example with-

Viver Bungag 5 Oct 3, 2022
This is a website for solving IT issues and providing IT solutions as answers to submitted tickets from clients. It is a project from Software Interns Team in Safecotech Internship Program 2022.

CONNECT IT-Solutions Table of Contents Built With Getting Started Description Documentation Commit History Screenshots Contributors Built With : Node

null 4 Sep 24, 2022
iX is a design system for designers and developers, to consistently create the perfect digital experience for industrial software products.

Siemens Industrial Experience (iX) monorepo iX is an open source design system for designers and developers, to consistently create the perfect digita

Siemens 46 Nov 23, 2022
This is project for 1-st course of "Software Engineering"

Сar-Racing Управління: Гравець № 1: W, A, S, D Гравець № 2: ArrowUp, ArrowLeft, ArrowDown, ArrowRight Це гонки на виживання для двох гравців. Виграє т

Volodymyr Vikulin 11 Nov 24, 2022
Veselin Petranchev 2 Oct 11, 2022
How often do you get asked about the gadgets or software that you use? If the answer is quite often, you should be trying show off out. Curate the list of gadgets and software and share it with your fans and followers.

Show Off - Showcase your setup! How often do you get asked about the gadgets or software that you use? If the answer is quite often, you should be try

Adithya Sreyaj 15 Nov 24, 2022
Full-stack-todo-rust-course - we are building this out now in prep for the real course

full-stack-todo-rust-course wip - we are building this out now in prep for the real course Plan Come up with the requirements Create user stories Desi

Brooks Builds 69 Nov 26, 2022
Course material for a ~10 hours introductionary course for Julia. Topics: Introduction, Parallel Programming, Data Science

Development We use Franklin.jl to generate the lecture material. To do so, simply activate the environment, use Franklin and run the local server: act

GregorE 3 Jul 21, 2022
Team Empire offers an innovative and intuitive game based on puzzles solved by two players working in a team.

Team Empire offers an innovative and intuitive game based on puzzles solved by two players working in a team. The user can create an account to monitor their results and achievements. The whole idea of the product is to make the player think and develop his logical thinking.

Vocational school for computer programming and innovation 14 Aug 8, 2022