Code Monkey home page Code Monkey logo

esn-assembly's People

Contributors

bigboss98 avatar mightgenie avatar uatisdeproblem avatar

Watchers

 avatar  avatar  avatar

Forkers

fab-p

esn-assembly's Issues

Drafts

  • Save (online) draft of questions and answers; user-based.

Voting: download voting results as spreadhseet

  • The feature should be available:
    • In the votingSession.page, in case the results are public.
    • In the manageVotingSession.page (analytics tab), in case the session has ended.

Buttons placeholders are in place.

Email notifications

  • If you are subject of a topic and get new questions or messages.
  • Need for blacklist (DDB table).
  • Request SES production access

Voting: import of voters from CSV/Excel

The placeholder button is already in place. More or less, this is the expected result:

Screenshot 2023-12-22 at 19 50 37

Everything must happen front-end.

If possible, let's also add the export of the same list.

Note: the maximum amount of voters is 1000.

The import substitute the previous values (i.e., remove all → import).

Duplication of entities

(button placeholders are already in place in the upcoming branch)

  • Voting sessions (includes voters and questions — but no results)
  • Topics (doesn't include questions/answers/messages/drafts)
  • Opportunities (doesn't include applications)

The status of the entities must be Draft.

Refactor timezone pickers

Refactor timezone as idea-select (since the list is very numerous).

There are @todo placeholders in the code.

Voting: how to manage absents from Quorum Check?

Wait for an answer from the team; should leave the voter's field empty to avoid changing weights? → they wouldn't receive the token to vote → they can't vote.

Also, decide how to display absent in the results.

Dashboard improvements

  • News, Deadlines and Links can optionally refer to an Event (the same Events used in the Topics); this information should be displayed in the UI.
  • Add a field to the Deadlines to let users know who is the target of the deadline; e.g. Registrations GA Autumn — All participants; Vote delegations GA Autumn — NOs representatives; ecc.
  • Deadlines should have an "action" text field (and related color), to better represent the type of deadline visually.

Statistics

Objective: statistiche di visualizzazione: valorizzazioni durante richieste GET.

Back-end

  • Modello dati:
    • PK
      • Categoria (topic, link, news, deadlines)
      • (optional) Risorsa (specifico topic, specifico link, specifica news); concatenazione #.
    • SK:
      • slot temporale di 1 ora.
      • userId
    • Scopo: non inseriamo doppioni per lo stesso timeslot/categoria+risorsa + utente.
    • ExpiresAt su tabella DDB di 1 anno per non appesantire le PK.
    • AttributI: country (unico importante per anonimizzazione).
  • Inserimento nella tabella in fase di richieste di tipo GET.
  • In fase di richiesta dei log, dovrà essere fatto un raggruppamento per time slot+country e sommati i contatori.

Front-end

  • Inizialmente disponibile solo agli admin.
  • Widget generico (popover/modal) che, aperto da determinati contesti, visualizzi le statistiche di tale categoria/risorsa.
    • Selezione periodo temporale: ispirarsi ad AWS. Inizialmente va bene anche la soluzione relative con dei valori di default
      Screenshot 2023-10-06 at 15 26 43
    • Selezione granularità: oraria, giornaliera, mensile.
      Screenshot 2023-10-06 at 15 33 59
    • All'avvio della ricerca, le informazioni mostrate saranno:
      • Un contatore con il numero di utenti totali e distinti nel periodo
      • Un contatore con il numero di countries totali e distinti nel periodo.
      • Grafico a barre o linee (a scelta) con i vari valori (quale libreria per grafici?).
  • Ogni lista Categoria e ogni specifica Risorsa avrà un bottone che aprirà il widget filtrato su essa.
  • Su homepage, widget generico: "nell'ultima settimana abbiamo avuto N utenti da X paesi", sfruttando il GET a una risorsa caricata sempre nella homepage (es: lista news).

Manage open calls and candidacies within the app (opportunities)

Create open call

  • Fields:
    • Title
    • Content of open call (single textarea or N sections)
    • Attachments (N)
    • Deadline to apply (after it, the open call is closed automatically)
    • Scheduled publishing (date)
    • Expected attachments (N) — to suggest the attachments to include during the application
  • Add a list of users that can manage the opportunities (configurations).
  • Add a list of users that can manage the specific opportunity.

Apply to open call

  • Fields:
    • Short motivation
    • Expected attachments (e.g. CV, full motivation)
    • No need for name, surname, ESN section, picture, etc. because it comes from ESN Accounts.
  • Include "my applications" area in which to review the applications sent.
    • From here applications can be edited in case are rejected (see the following feature).
  • Include the possibility of writing a message (sent as email) to the open call managers, in case the applicant has a question.

Manage open calls applications

  • List of open calls (for opportunities managers)
  • Manage the state of an application:
    • Reject + message (e.g. an attachment is missing or wrong)
    • Approve + message (template from configurations + possibility of customizing it)

Other

  • Archive: filter by year.
  • Check permissions to download and upload attachments.
  • S3: rename all attachments to remove ending '.png' + adding prefix 'public-attachment' (bug-fix)

Insert dates in a more timezone-friendly way

Dates and deadlines are saved with the administrator's timezone and then displayed always in the timezone Europe/Brussels; ideally, we would want any administrator (regardless of its timezone) to insert dates in the Europe/Brussels timezone without making manual calculations.

Votings

✅ Create a voting session

  • Only admins and scrutineers.
  • Fields:
    • Title.
    • Description.
    • Secret/public.
    • Weighted votes (Y/N).
    • States: draft, published, voting in progress, closed.

✅ Manage voters in the voting session

  • Only admins and scrutineers.
  • Add and manage voters (of a voting session); use EGM table component.
  • Fields:
    Screenshot 2023-08-10 at 17 18 03
    • Name (ESN Italy)
    • Voter ID (ABCDEF)
    • Voter key (asdalksd) — protected
    • Email
    • Vote weight
  • Allow CSV/Excel import (as we do today in ElectionRunner). #46
  • If a voting session is started (or finished), don't allow changes.

✅ Manage ballots of a voting session

  • Only admins and scrutineers.
  • Add and manage questions (of a voting session), with fields:
    • Title
    • Type of majority (with explanation)
    • Options (N)
  • Defaults to classic ballots/answers (ballot templates?); e.g. Yes/No/Abstain and CandidateA, CandidateB, None of the above, Abstain.
  • If a voting session is started (or finished), don't allow changes.

✅ Start a voting session

  • Only admins and scrutineers.
  • Provide a preview page before continuing.
  • Set dateTime end time + timezone.
  • Check for repeated emails (for whom I'm voting?).
  • Open voting session and send emails.

✅ Vote in a voting session

  • Everyone (see below).
  • To vote, you need a pair of codes (ID and secret) you received in an email; the email contains a link that includes the pair of codes.
  • You must add exactly one answer to each ballot.
  • Before proceeding, you can see a preview of the votes.
  • By confirming, the vote is received, and you can't edit it anymore.

✅ Monitor voting session

  • Live stats of the number of people who voted (and specifically who voted); websocket.
  • Remove logs from voting RC (secret).
  • End voting session when the last vote is received.
  • Missing quorum check → should leave email empty to avoid changing weights? #52
  • Resend email to voter (/show token?) in case of issues. #54
  • Extend duration voting session. #54

✅ ### View results

  • Can see:
    • Only the scrutineers, before the results have been announced (PATCH).
    • Everyone, after the voting results have been announced (aggregate in votingSession)
  • Each result should have an explanation of the majority (avoid Ex. GA August case).
  • Based on the majority, provide the calculated results for each question. The result may also be displayed as a graph. #51
  • Download the results as a spreadsheet. #50

✅ Duplication of voting sessions

  • Allow duplication (includes voters and questions — but not results). #44

✅ Email templates

  • In the configurations, email templates for:
    • Vote instructions.
    • Vote confirmation (you have voted) — or receipt?

✅ Voting sessions archive

  • For voting sessions archived.

Generally, it should be tested during NOs calls and always have ElectionRunner ready for backup.

Timer during live topics

Visual timer to help participants know how much time they have left to speak their intervention.

Slido-like live questions (QT)

Live topics creation

  • Only administrators.
  • Fields for the topic:
    • Name;
    • Notes (can include text, links, etc.);
    • Config for messages: anonymous/signed/user choice.
    • Date and time (for sorting in list).
    • Linked event.
    • Linked category.
    • Linked related Q&A (non-live) topic (if any).
    • Activate appreciation tab for the topic.
    • Open/close (accept or not messages).
    • Active/Archived.
  • Adjuste topic creation page with new fields.

Live topics list

  • Active vs archived (like regular topics).
  • Open topics are highlighted in the UI (they come first than close topics); usually it's only one open topic at the same time.

Messaging inside a topic

  • Appreciations are simple texts, whereas Q&A messages are summary (obligatory) + text (optional) for the full question.
  • Users can read in the closed topics and read + add messages in open topics.
  • For now, anyone can write: it requires moderation to ignore messages from non-relevant users; in the future, we could have a list of users attending an event to restrict features.
  • A topic could have appreciation messages (configuration) but always have Q&A messages: the two modes are separated by tabs/segments.
  • Based on the configurations, a user could choose how to post a Q&A message: anonymous, signed. Appreciations can always be anonymous (or signed).
  • Messages are divided among archived and active.
  • Messages can be deleted or marked as “covered”.
  • Administrators can:
    • Mark a message as "done" (archive).
    • Reject a message (with or without a note).
    • Choose the sorting for the messages (more recent, oldest, more supported, etc.).
  • Users can upvote messages in open topics.

Presenter mode

  • A tab to present which shows the current messages/appreciations.
  • Show a QR code that links to the page.
  • Possible issue: live reload/web-socket.

Blocked users

  • Administrators can block a user (by username) to avoid messages on the topic (spam).
  • The feature is also available as a shortcut from messages.

Data transformation

  • Add "type = 'STANDARD'" to all existing topics.

Voting: voters audit

To improve audit on the voters, make available to download a list similar to the following:

1

The feature should be available from the actions on the voters (import/export/etc.).

✅ This requires adding the IP address and User Agent to the vote.

Promote application to Q&A

Through a button on the management page of an Application, create a draft of a Q&A topic with all the fields pre-filled.

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.