docs: added proposal
This commit is contained in:
parent
6d18d7146b
commit
c94a1321d5
@ -1,95 +1,106 @@
|
|||||||
# School of Computing — Year 4 Project Proposal Form
|
# School of Computing — Year 4 Project Proposal Form
|
||||||
|
|
||||||
> Edit (then commit and push) this document to complete your proposal form.
|
|
||||||
> Make use of figures / diagrams where appropriate.
|
|
||||||
>
|
|
||||||
> Do not rename this file.
|
|
||||||
|
|
||||||
## SECTION A
|
## SECTION A
|
||||||
|
|
||||||
| | |
|
| | |
|
||||||
|---------------------|-------------------|
|
|---------------------|------------------------------------|
|
||||||
|Project Title: | xxxxxx |
|
|Project Title: | Panoptes - Modular Admin Interface |
|
||||||
|Student 1 Name: | xxxxxx |
|
|Student 1 Name: | Malachy Byrne |
|
||||||
|Student 1 ID: | xxxxxx |
|
|Student 1 ID: | 19463716 |
|
||||||
|Student 2 Name: | xxxxxx |
|
|Student 2 Name: | Gary Murphy |
|
||||||
|Student 2 ID: | xxxxxx |
|
|Student 2 ID: | 19310381 |
|
||||||
|Project Supervisor: | xxxxxx |
|
|Project Supervisor: | Stephen Blott |
|
||||||
|
|
||||||
|
|
||||||
> Ensure that the Supervisor formally agrees to supervise your project; this is only recognised once the
|
|
||||||
> Supervisor assigns herself/himself via the project Dashboard.
|
|
||||||
>
|
|
||||||
> Project proposals without an assigned
|
|
||||||
> Supervisor will not be accepted for presentation to the Approval Panel.
|
|
||||||
|
|
||||||
## SECTION B
|
## SECTION B
|
||||||
|
|
||||||
> Guidance: This document is expected to be approximately 3 pages in length, but it can exceed this page limit.
|
|
||||||
> It is also permissible to carry forward content from this proposal to your later documents (e.g. functional
|
|
||||||
> specification) as appropriate.
|
|
||||||
>
|
|
||||||
> Your proposal must include *at least* the following sections.
|
|
||||||
|
|
||||||
|
|
||||||
### Introduction
|
### Introduction
|
||||||
|
|
||||||
> Describe the general area covered by the project.
|
Panoptes is an administrator interface that allows the user to write custom modules to monitor and control services. This will be useful for many users, as this will allow systems administrators to control many different services from one place, as well as write their own modules to control and monitor custom services. The system will also allow for users to have different permission levels to suit a more hierarchical organisation.
|
||||||
|
|
||||||
### Outline
|
### Outline
|
||||||
|
|
||||||
> Outline the proposed project.
|
Panoptes will allow users to install modules which are ran as containers, allowing them access to any services or files that they require to run. User accounts will be stored in a relational database, which will also store permissions for various aspects of each module.
|
||||||
|
|
||||||
|
The backend will consist of a Go server which will be responsible for interacting with containers, modules and updating the frontend using a REST API.
|
||||||
|
|
||||||
|
The frontend will be displayed using Blazor to render data sent from modules through the Go server which will describe what components they require, and the data to be contained in them.
|
||||||
|
|
||||||
|
We also plan to implement a set of default modules such as:
|
||||||
|
* Monitoring - Monitor server statistics
|
||||||
|
* PiHole - DNS server with an adblocking black hole
|
||||||
|
* Traefik - Web server
|
||||||
|
|
||||||
### Background
|
### Background
|
||||||
|
|
||||||
> Where did the ideas come from?
|
While trying to set up homelabs, we grew frustrated with administrator interfaces, as they could not be used to control several of the services we were installing.
|
||||||
|
|
||||||
|
We also regularly use a piece of software called Foundry, which allows users to install user-created modules to cover use cases that the developers couldn't, and we thought that would be a perfect solution to our problem.
|
||||||
|
|
||||||
### Achievements
|
### Achievements
|
||||||
|
|
||||||
> What functions will the project provide? Who will the users be?
|
This project will allow the installation of user-created modules with permission settings to aid with administration of a server or set of servers.
|
||||||
|
|
||||||
|
The two main use-cases of this project are systems administrators and homelab administrators. Panoptes can be a replacement for traditional admin interfaces as it offers a more modular approach into how the user installs it.
|
||||||
|
|
||||||
### Justification
|
### Justification
|
||||||
|
|
||||||
> Why/when/where/how will it be useful?
|
Systems administrators can get use from this project by being able to easily create or install modules for their custom services, like any monitoring tools that they set up, without having to find an interface that has everything that they want. They will also particularly benefit from the permissions system, which will allow them to give access to certain functions to more junior members, while allowing more senior members access to more privileged functions.
|
||||||
|
|
||||||
|
Homelab administrators will benefit from the ability to create or install modules to monitor and control services they have set up themselves in a way that suits their niche use case.
|
||||||
|
|
||||||
### Programming language(s)
|
### Programming language(s)
|
||||||
|
|
||||||
> List the proposed language(s) to be used.
|
- Go - Backend
|
||||||
|
- C# - Frontend
|
||||||
|
|
||||||
### Programming tools / Tech stack
|
### Programming tools / Tech stack
|
||||||
|
|
||||||
> Describe the compiler, database, web server, etc., and any other software tools you plan to use.
|
- Mux - A backend library for Go which will be used
|
||||||
|
- Blazor - A web framework which uses .NET to render components in the frontend
|
||||||
|
- Postgresql - A relational database
|
||||||
|
- Docker - A tool for managing containers
|
||||||
|
- Protobuf - A serialised data transfer format
|
||||||
|
|
||||||
### Hardware
|
### Hardware
|
||||||
|
|
||||||
> Describe any non-standard hardware components which will be required.
|
N/A
|
||||||
|
|
||||||
### Learning Challenges
|
### Learning Challenges
|
||||||
|
|
||||||
> List the main new things (technologies, languages, tools, etc) that you will have to learn.
|
- C#/Blazor
|
||||||
|
- Go/Mux
|
||||||
|
- Controlling and communicating with Docker containers using Go
|
||||||
|
- Protobuf
|
||||||
|
|
||||||
### Breakdown of work
|
### Breakdown of work
|
||||||
|
|
||||||
> Clearly identify who will undertake which parts of the project.
|
- Create schema
|
||||||
>
|
- Create backend server
|
||||||
> It must be clear from the explanation of this breakdown of work both that each student is responsible for
|
- Create frontend server
|
||||||
> separate, clearly-defined tasks, and that those responsibilities substantially cover all of the work required
|
- Design interface between containers and backend
|
||||||
> for the project.
|
- Create sample modules
|
||||||
|
|
||||||
#### Student 1
|
#### Student 1
|
||||||
|
|
||||||
> *Student 1 should complete this section.*
|
- Create schema
|
||||||
|
- Create proto files to communicate between backend and frontend
|
||||||
|
- Create backend server
|
||||||
|
- Write container management functions
|
||||||
|
- Create frontend server
|
||||||
|
- Write components used on web interface
|
||||||
|
- Create sample modules
|
||||||
|
- Monitoring
|
||||||
|
- PiHole
|
||||||
|
|
||||||
#### Student 2
|
#### Student 2
|
||||||
|
|
||||||
> *Student 2 should complete this section.*
|
- Design interface between containers and backend
|
||||||
|
- Create backend server
|
||||||
## Example
|
- Write the REST API
|
||||||
|
- Create frontend server
|
||||||
> Example: Here's how you can include images in markdown documents...
|
- Create layout of components and design UI/UX
|
||||||
|
- Create sample modules
|
||||||
<!-- Basically, just use HTML! -->
|
- Traefik
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<img src="./res/cat.png" width="300px">
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user