Giter Club home page Giter Club logo

felixrdl / seeance Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 4.36 MB

SEEance offers a chance for inspecting student github repositories via a set of analyses taken from related research work. The analyses help you understand better, what is going on within the projects and visualize potential problems of your students for better and timely intervention.

License: MIT License

Dockerfile 0.11% TypeScript 72.16% JavaScript 0.66% HTML 8.22% SCSS 18.85%

seeance's People

Contributors

felixrdl avatar jaff92 avatar

Stargazers

 avatar

Watchers

 avatar

seeance's Issues

Data Analysis

All features referring to the analysis framework.

As A User, I want to register on the Platform in order to use it.

  • Registering requires also acknowledging the terms of usage.
  • Registering is only possible, if the user is not already registered in the system.

Backend

  • Create MongoDB Container
  • Use mongoose ODM
  • Add User Repository + Provider
  • Define User Entitiy
  • Define User Model
  • Add Use Case
  • Implement Use Case and connect it to routes

Frontend

  • Create register landing page
  • Implement User Service
  • Implement register and create user
  • Implement Registered User Route

#1 #2

As a Course Authorizee, I want to add a new authorizee for the course.

  • Only registered Users can be authorized
  • Needs an Autocomplete on registered users x Github Account
  • A user cannot be added twice to a course (duh)

Backend

  • Use Case GetAuthorizeesForCourse

  • Use Case GetUserAutocomplete + Repository function

  • Use Case PostuserToCourse

-- Check if user is already added

  • Link Use Cases

  • Owner must not be able to be added to authorizees

  • Add authorized courses to /course endpoint

  • Protect all course related contents

Frontend

  • Implement Service Methods

  • Implement Authorizee List

  • Implement Authorizee Autocomplete

#3 #2

As a Course Owner, I want to delete a course, so that I do not have to keep irrelevant courses

  • this requires the requestor to be at least authorizee or owner of the course
  • this has to be confirmed by a dialog window
  • this has to return 404, if the resource is not existing
  • deleting the course also requires deleting all associated projects

backend

  • add use case and repo functions
  • check for existence of course
  • implement user authorization
  • implement repo function
  • also delete projects for course!
  • link up stuff

frontend

  • add service method
  • add GUI buttons for deletion
  • add confirm dialogue
  • add error handling
  • link up stuff

#3

Access Control

Everything related to allowing for the right users to access the right stuff.

As A Project Supervisor, I want to add an a Analysis to a project

Backend

  • Add logic layer for "Add Analysis To Project" Use Case
  • Implement and connect "Add Analysis To Project" Use Case

Frontend

  • Add data service for plugin retrieval
  • Add data service method for post request
  • Add tab in config
  • Add analysis autocomplete component
  • Link everything together

As a user, I want to know, which projects within a course I can access with my credentials

Currently: The system allows accessing unauthorized items, as long as they are held in cache.
By requirement, the system must decline access on these resources.

Requirements

  • check authorization of user for repository on github
    -- if repository is public, allow access
    -- if repository is private and user owns the repository, allow access
    -- if repository is private and user is contained in collaborators list, allow access
    -- else access is declined

  • display unauthorized projects separately (e.g. as grayed out symbol or "" label

Backend

  • At first, a good caching strategy for content should be introduced.

#1 #2 #3

Initialize Frameworks

  • this requires initializing
    -- a angular2 project
    -- a expressjs server
    -- a docker-compose project
    -- dockerfiles for both projects
    -- an nginx reverse proxy
    -- ssl
    #19

As a project supervisor, I want to see the current analyses for a project, so that I can recognize problematic tendencies for a team or discuss their progress in a live session

Requirements

  • Authorization for github repository of logged-in user

Technical

  • As it is very laborous, this may need a whole lotta caching on backend side (e.g. cached-request js, or manually saving temporary products)

Backend

  • Create "GetAnalysisResult" Use Case
  • Implement and Link "GetAnalysisResult" Use Case

Frontend

  • Create Service Method
  • Implement "Mosaique" for analyses

#5

As A Project Supervisor, I want to configure the analyses for a project, to adapt it to my specific requirements

Requirements

  • Analyses self-describe their configuration

Technical

  • Embedding System must not know about specific configuration of plugin

Backend-Side

  • Implement GetAnalysisTemplateByNameTemplate UseCase
  • Implement GetAnalysisById Use Case
  • Implement Store Configuration Use Case
  • Bootstrap everything

Frontend-Side

#5

Fix JSON Forms Module

Currently, the module only renders text input fields correctly, but no dropdowns, radio selects etc.

As a User, I want to delete my account, if I do not need to use the platform any more

Requirements

  • Account can only be deleted by authorized user her- or himself
  • Deleting the account will also delete all courses created by the user.
  • Deleting the account will remove the user from all projects, where he or she has been authorized.
  • Deleting the account will remove all projects owned by user and their configurations

Backend

  • Add DeleteUserById, DeleteProjectsForUser, DeleteProjectsForCourse Repository functions
  • Add DeleteUseryByIdUserCase
  • Link everything up

Frontend

  • Add Profile Module
  • Add Profile Root Component
  • Add DeleteUserComponent
  • Add Service Method
    #1

Project Management

Everything related to managing an individual github repository within a course.

As A User, I want to login to the platform via Github

Login is handled via Github OAuth:

NGINX

  • Add Proxy Route to Login

Frontend

  • Initialize Visual Framework
  • Initialize Auth Service
  • Add Link to Github Auth in Header
  • Add Callback Route for Login
  • Setup Callback Link in Github
  • Store Token In Cookies within Auth Service

Backend

  • Add Middleware for Token Validation

Frontend

  • Add Guard Route For Token Validation

#1

As a Course Instructor, I want to create a new course, so that I can structure the student projects, that I want to analyse.

  • Courses are identified by a name
  • Courses can be also refered to in a short description
  • Duplicate course names are not allowed for the same user
  • Beware of illegal characters, such as /

Backend

  • Define Course Entity and Course Schema
  • Define Course Provider
  • Define Provider Functions 'Get Course' and 'Has Course By Name'
  • Define Create Course Use Case
  • Create Course Controller
  • Create Course Routes
  • Link and Test Components

Frontend

  • Create Course Service
  • Create Sidenav
  • Create Course Editor

#3

As a Course Authorizee, I want to add new projects to a course, so that I can include it in the analyses

  • this requires an autocomplete for valid projects
  • valid projects are projects, that the user can currently access with his or her github credentials
  • a project can only be added once to the repository

Backend

  • Create Project entity + model
  • Create ProjectRepository
  • Add Project array field for course entitiy
  • Create get project autocomplete repository function
  • Create add project to course repository function to course repository
  • Create GetProjectAutocomplete Use Case
  • Create AddProjectToCourse Use Case
  • Link Use Case in routing

Frontend

  • Create projects service
  • Implement use cases in services
  • Adapt data models
  • Add courses form field for displaying repositories
  • Implement dropdown autocomplete
  • Implement validation

#4 #3

Bug: Analyses stuck between projects

Expected Behavior:

  • Browsing between projects will only show analyses for the current project.

Experienced Behavior:

  • Analyses of previously called projects remain on page.

As a Project Supervisor, I want to see, which analyses have been added to a project, so that I know, what is already being inspected

This feature will contain a list placed in the project settings, containing:

  • the analysis name
  • the analysis type (can be identical, in this case, only show name)

Backend steps:

  • Implement GetAnalysesForRepositoryUseCase
  • Link Everything up (GET course/courseId/projects/projectId/analyses)

Frontend steps:

  • Create service method in project service
  • Create AnalysesListComponent

Implement infrastructure for data retrieval

This requires

  • Define entities for Analysis structures (Datasources, Analyses etc.)

  • Define repository for Analysises

  • Define GetAnalysis Use Case (stub)

  • Implement routing

  • Implement repository cloning

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.