Giter VIP home page Giter VIP logo

open-sea's People

Contributors

hennyk99 avatar nielsrowinbik avatar tijmende avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

open-sea's Issues

Allow user to change profile details

  • Within the settigs component, set input's defaultValue to the field within the user object (e.g., user.name).
  • Use linkState to update within the settings component.
  • Save only changed fields, setDoc will handle merging old and new values.

Process YAML configuration files

SEA methods are to be provided to the application through a YAML configuration file. The application will, after validating the configuration file, present the user with the appropriate input fields for the desired metrics. It will then compute the indicators.

Progress:

  • Parse YAML file to a string
  • Convert YAML string to JSON, making it easier to process in code
  • Validate the JSON model using a predefined schema
  • If invalid, display errors and don't store the model in the database

As a user, I want to create new organisations

  • Check if name already exists by using (slugify) and seeing if the document exists in DB
  • Display error if it exists
  • Create organisation if it does not exist
  • Add user as owner for the newly created organisation
  • Redirect user to newly created organisation

Determining the type of visualisation of each indicator

The system shall read from the indicator model file what type of visualisation mechanism the user wants for each indicator.
In the documentation, we should have a list of candidate visualisation mechanisms with a brief explanation of when each is convenient. E.g. number, percentage, bar chart, pie chart, line chart, etc.). The OZP by Ewan Klomp contains a discussion on visualisation mechanisms (not yet published), but it should be easy to find many more sources.
We will prioritise them to decide which to implement first.

Allow users to define networks (groups of organisations)

  • Allow creation of a new organisation with the isNetwork label.
  • Separate organisations from networks in all views
  • Add setting in organisations to convert to network (removes all reports and data)
  • Add setting to networks to add organisation

Support user authentication

  • User without account is able to register one with email and password
  • User with existing account is able to login with email and password
  • User is able to log in or create an account through Google
  • Upon user creation, store some information in the database:
    • First name
    • Last name
    • Full name
    • Creation timestamp
    • E-mail address
  • Upon user login, store some information in the database:
    • Last succesful login

Support different user roles

Initially, we will just define a single role, the administrator , who has all permissions and can carry out all types of actions in SEAMan (e.g. set up an auditing project, enter data, view results in the dashboard). In following releases, we will support new roles and their corresponding permissions.

This is an example of what those roles could look like, but further investigation of user needs is required.

  • Each auditing project will have one or several auditors, who are responsible for the auditing project and therefore have many permissions; e.g. set up auditing projects, enter data, view results in the dashboard.
  • Interest groups are sets of users sharing some characteristic; e.g. employees, clients, suppliers, neighbours. They receive links to surveys where they can enter data (facts or subjective perceptions). They might also be granted permissions to view partial or final results of the auditing project (e.g. an infographic).
  • Attesters are third party auditors who certify that the data and evidences collected during the audit are accurate and genuine. They have access to the results of the auditing process and usually carry out inquiries within the organisation and the relevant interest groups to make their assessment.

Handle password resets

Possibly move the entire Firebase action URL to a custom implementation, but at least make the "Forgot password?" link actually work and send a password reset e-mail.

Gracefully handle updates

Create a custom Link component that functions like normal except it will set window.location when window.swHasUpdated is set to true, resulting in the user's window being refreshed not immediately when the update is ready, but when he/she navigates to the next page.

Add offline support

  • App works when offline thanks to offline-plugin.
  • Firebase errors are caught and handled appropriately.
  • A notification is shown to the user that the app is offline.

Allow sharing of organisation's dashboard

Each organisation has their own unique URL. Users with the appropriate rights will be able to enable sharing for this organisation in a number of ways:

  • Sharing the dashboard / report to specified users
  • Making the dashboard publicly available
  • Assigning read-only access to the data in addition to the dashboard to specified users
  • Adding organisation "administrators" / "assessors" that have full access to the dashboard and the data
  • Transferring ownership of the organisation to an existing administrator or assessor

Split up mobx stores

Move from a single file that holds all functionality to:

  • fbStore that holds all Firebase related functions (setListener, getRef, etc)
  • authStore that covers user authentication and access management
  • orgStore will hold everything organisation related
  • snackStore handles Snackbar notifications
  • appStore handles app states such as loading or opening the drawer

A list of similar tools

Add manifest.json

This will allow the app to be "installed" to Android users' phones.

Separate self-made material components from app-specific components

Move away from having a Drawer component implement the material guidelines and implement app-specific routes and such. Instead, have a Drawer component that is imported and used in the app's Drawer component. Consider publishing the material components as a separate library.

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.