-
Notifications
You must be signed in to change notification settings - Fork 0
Software Requirement Specification
Created Monday 18 February 2019
What should the application of software do? (Purpose) The application is creating a bridge between the current and futurue zeus contributors and the running or upcoming zeus projects. We want to make the experience of searching for something to do or for persisting and managing a project and it's information and issues smoother, generally more pleasant and a lot more transparent. We want to group existing items into projects which can be more easily managed and maintained. We also want to engage our users by creating a badge/medal system which you can earn by being the best at something or by reaching certain goals. Engagement in a project can be coupled to your role in the group thus creating a reward for contributing in a project.
The gateway is not a way of overtaking the current use of a repository management system. Instead of this we want to enhance the current tools with extra functionallity, encouriging user engagement.
Intended audience/use The gateway's content will be open to view for everyone. You'll have to be logged in to add issues. Project leaders will have extra permissions over the assigned items and nested projects. They manage these item's and keep order and structure in the project. They also manage nested projects. The gateway global administrators have full permissions to solve any coflicts to asé&ign leaders to root-projects. They are responsible the management of the system. They will also manage the creation of badges, rewards and automatic role assignments.
Timeframe There is not set end date when the application should be ready. It's build by student on their free and commitment is welcome but not binding. An implementation off all currently written out features would by estimation take about a year, setting the target date on February 2020.
Definitions and Acronyms Items: Everything in a repository including issues, branches, files, etc... Root project: A project which can not be a sub project of any other project.
The users will access the main application via the programmed web interface. A part of the functionality will be usable via the linked repository managers. Creating issues and branches can result in changes in g2 based on the enabled triggers.
The app will have a main dashboard containing the featured (most active?) projects. Together with a menu bar containing links to the list of root projects, ...
- Homepage
- Menu
- All projects
- About
- Login
- Most active projects
- Menu
- All projects
- Menu ...
- A list containing all projects added to g2
- Project
- The linked items (issues, branches, tags, ...)
- Some static information
- Name of the project
- Creation and last changed date
- An overview of the contributors of a project and their roles
- The documentation of the project
- Usefull links (repository)
- Listing of subprojects
- Indictation of parent project
- As a coder I am interested in zeus's activities and want to know what they do.
- As a new joined member I would like to know what I can do and what projects are easier to start on then others.
- As a person not familiar with the scope and all the information of a big project I want to know what's relevant info in the development of a smaller part of such a project.
- As a frequent contributor I would like to have an acknowledgement of my efforts.
- As a contributor I want to know who I can contact to get more information about a certain project.
- As a user I would like to be able to access and modify content without having to create a new user account.
- As a user I would be very interested to see who is active in which projects.
- As a contributor I want to add/modify/delete information concerning the project i'm active in.
The program will be build as a web server. It will have a few seperatable parts.
Data storage For structured data storage an sql database will be used, this will probably be mysql but using an abstraction layer for modifications any sql-based database would do.
For file storage like project-documentation the file system or g2 github repository can be used. Repo storage is an option if one is linked to the project.
Web server The web server will be written in Clojure. A functional, multipurpose language with lisp syntax. The server can optionally be extended to serve a fully functional REST interface although this is not necessarily needed to begin with.
It will also be splitted in a several logically separatable parts. The division will probably result in 3 parts.
- The webserver receiving the requests of the users, serving the correct webpages on simple get-requests.
- A webserver listening to all the repository hooks made as a result of project-repository links. This server will correctly propagate all repo changes into the g2 project structure in an asynchronous way.
- And lastly there is a bussiness layer independent of the webserver controllers which will be used by both the parts above to save, edit and serve data.
Authentication on the server will initially be done using the github oauth system. This can later be expanded to include zeus oauth and gitlab auth.
Front-end The front-end will be programmed using basic html templating. The application does not need a reactive or live updating interface which makes a SPA not neccessary as it would only create an extra level of complexity.
Base structure of the project.
- Create a project
- connect a repository to the project (during creation or afterwards)
- import all relevant repo info into the project on connection
- keep repo info up to date
- assign items to a project
- set a maintainer to a project
- create sub-projects of a project
- have specific project documentation
- Get an overview of the projects