Giter Club home page Giter Club logo

epsilon's Introduction

Epsilon

Epsilon is an application for students from Fontys HBO-ICT education that are following open innovation. These students usually have a personal course within Canvas (from Instructure), which contains all of their study submissions and acts as a portfolio of sorts. During each semester, it is requested to take note of all KPI's which have been proven. To aid in these efforts, this application will gather all your mastered/proven KPI's and export your KPI's to a file format (e.g., JSON, Exel, CSV).

Application demo

Supported formats

Currently we support exporting assignment outcomes to the following formats:

  • Word
  • Excel
  • CSV
  • Console

Usage

Read how to use the application in our Wiki located here.

Contributors


Want to join the list by fixing bugs, enhancing or adding functionality or simply have a look at the source code? Have a look at our Wiki page here to learn more about contributing.

License

Epsilon is licensed under the terms of GPL v3. See LICENSE for details.

epsilon's People

Contributors

dewikimc avatar elinevooijs avatar hansensven avatar i404788 avatar jendafojtik avatar koen253janssen avatar nealgeilen avatar typiqally avatar wouterpennings avatar xl3ehindtim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

epsilon's Issues

Separating logic and CLI sections

The main logic of the application is now held inside the Epsilon.Cli project.
It is best that we separate the CLI and the main Logic.
When we separate these two the application is more open for future development.

  • An user interface can be created.
  • The application can become a web application.
  • Other Fontys students can fork the repository and create their own applications with the main logic.

CI pipeline

Creating a CI pipeline that will build the project for Windows, Linux and Mac use.
The pipeline needs to publish artefacts

If possible it would be nice that the CI pipeline creates new releases when the main branch is updated

As a student using Canvas, I want to experience fast page load times and quick access to frequently used data, so that I can see my competence document without any unnecessary delay or frustration.

Fetching results from Canvas takes a long time, while not always being necessary. If I perform a run and decide I want to export it in a different format, I have to wait for the requests to finish again. This even though nothing was probably changed in the last 5 minutes or maybe even an hour. Therefore, I think we should implement an expiration policy on the Canvas results and apply caching on it.

For example, if we perform a run and the results are not older than an hour, then we reuse them. If they are older, we fetch the latest version from Canvas. This can also be overridden by using a --no-cache parameter option for example.

Maybe it's not necessary for now, since runs are not very frequent at the moment. For the future this might change however, if we create an online webpage which can be accessed by peer students and teachers.

Improve awkward format arguments

Currently, specifying formatters is quite awkward, having to use long arguments such as --export:formats:0. This has to be improved with an easier implementation.

Weird colors

The colors of the download menu are weird. The dates and actions are bearly readable and the colors look weird.

Relocate data formatting logic

Currently, the data format that is needed for all the exports and future views is built inside the exports themselves.

This logic will need to be moved to the main logic of the application so it can be used more efficiently.
It needs to be a function that can be called to reformat the data that is given. NOT override the existing data

As a developer, I want proper nullability validation and error checking, so that I can be sure that problematic values are handled correctly

Currently, the code is very prone to nulls and errors if something is not quite right such as Canvas downtime or faults with the authentication. We should implement some proper null checks and error validation to ensure the user can see what has gone wrong and maybe provide a link to this issue board to post it for the contributors to fix. This may also be combined with some initial tests.

Performance dashboard

I propose that the next step for Epsilon is generating the competence matrix shown below. image

In my opinion, we should make this available for at least Excel and if possible Word, keeping in mind the goal of this project: automating the entire competence document. Optional is LaTeX, which is a niche feature but would still be helpful for some Deltas at least.

So in summary then, create an export pipeline for generating competence matrices together with KPI tables in the following formats:

  • Excel, Must
  • Word, Must if possible
  • LaTeX, Should
  • Others?

Return processed data from exporters

Currently, the exporters return void when finished. This is something that is not sustainable when moving to an API application.

The export functions will need to return a value that will represent the contents or the exported file itself.
Importantly it can not be a string representing the location of the file.

Downloading results takes a while

The "Downloading results..." message can take a real long time. Maybe add like a "fake" progress bar so people don't think its frozen

Excel export format

After the addition of the export architecture (#5), we can add more file types to the export functionality. This issue is regarding the Excel data exporter.

Improve release assets

Epsilon binaries are currently published as zip archives. These ZIP archives require an extra extraction step before Epsilon can be used. This can be greatly inconvenient, especially when trying to update to the latest version of Epsilon.

One proposed solution to this issue is to release the binary without compressing it into a zip archive. This causes one  issue, which is the missing configuration file. It may be possible to resolve this issue by creating a default configuration file when one does not already exist.

User interface / production build

The creation of a production build version of the application.
The production build can be a user interface or a CLI application.

The application will need a workflow

  1. Give access token
  2. Select the personal course from a list that is given
  3. Collect KPIs
  4. Choose an export format

What will it be? User interface or CLI?

Filtering modules when exporting

Giving the user the option to filter listed modules to export.

This gives the user the option to export only data from a suratun semester

XLS export doesn't work as intended

Looks like something goes wrong when exporting with XLS, only one assignment is in the result with only two columns.
image
The output in the terminal is the same however as when exporting with CSV (which works great!!!)
image

.NET 7.0 support

.NET 7.0 just released, meaning we should update at least the CLI to support this newer version, as the CLI is runtime dependent. I think we should also think about multiversional .NET support, meaning we should support multiple .NET versions such as 5, 6 and 7.

Word export format

The final aim of the project is to generate a competency document with as little human intervention as possible. To achieve this goal, it is a good idea to implement an exporter for Word files that can export achieved KPIs in the form of a table.

Get all assignments flag

Can there be a few flags to specify more or other assignments? It would be nice to be able to get assignments with certain statuses or a getall function for assignments that have not been graded.

Optimizing release builds

At the moment the releases contain multiple files.
Only the Epsilon.Cli.exe and the appsettings.json are file that the user interacts with.
Seeking for an solution that will reduce the included files.

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.