Skip to content

Latest commit

 

History

History
147 lines (117 loc) · 4.95 KB

File metadata and controls

147 lines (117 loc) · 4.95 KB

MyPortfolios GEIADE API

Run locally

On Windows PowerShell, use the Maven wrapper included in this repository:

.\mvnw.cmd spring-boot:run

If you prefer a global Maven installation, mvn spring-boot:run also works once mvn is available on your PATH.

Template for a Spring Boot project including Spring REST, HATEOAS, JPA, etc. Additional details: HELP.md

Open Issues CI/CD Deployment status

Vision

For ... who want to ... the project ... is an ... that allows ... Unlike other ...

Features per Stakeholder

CREATOR ADMIN ANONYMOUS
Register Add Admin View public creator profiles
Login Login List public portfolios
Logout Logout List portfolio projects
Edit profile Suspend Creator List project content
Create portfolio List flagged content Search public content
Edit portfolio Remove content Report public content
Create project
Edit project
Add content
Edit content
Create tag
Tag content
Set public / private / restricted
Share restricted with user
List public and shared portfolios
List public and shared portfolio projects
List public and shared project content
Search public and shared content
Report content

Entities Model

classDiagram
%% Interface Definition
    class UserDetails {
        <<interface>>
    }

%% Base Entity
    class UriEntity {
        uri : String
    }

%% User Hierarchy
    class User {
        username : String
        password : String
        email : String
    }

    class Admin {
    %% Placeholder fields 'i' in image omitted
    }

    class Creator {
    %% Placeholder fields 'i' in image omitted
    }

%% Core Domain Entities
    class Portfolio {
        name: String
        description: String
        created: ZonedDateTime
        visibility: Enum
        modified: ZonedDateTime
    }

    class Project {
        name: String
        description: String
        created: ZonedDateTime
        visibility: Enum
        modified: ZonedDateTime
    }

    class Content {
        name: String
        description: String
        created: ZonedDateTime
        visibility: Enum
        modified: ZonedDateTime
    }

    class Tag {
        name: String
        description: String
        created: ZonedDateTime
        modified: ZonedDateTime
    }

    class Report {
        user: String
        reason: String
        created: ZonedDateTime
    }

%% Inheritance Relationships (Hollow Triangles)
    UriEntity <|-- User
    UriEntity <|-- Portfolio
    UriEntity <|-- Project
    UriEntity <|-- Content
    UriEntity <|-- Tag

    UserDetails <|.. User : implements
    User <|-- Admin
    User <|-- Creator

%% Associations and Multiplicities

%% Portfolio is owned by 1 User
    User "1" <-- "*" Portfolio : ownedBy

%% Portfolio contains many Projects
    Portfolio "1" <-- "*" Project

%% Project contains many Content items
    Project "1" <-- "*" Content

%% Content has many Tags (Many-to-Many)
    Content "*" <--> "*" Tag

%% Report refers to 1 Content
    Content "1" <-- "*" Report

%% Creator has access to many Content items
    Creator --> "*" Content : has acces to
Loading