Coder Social home page Coder Social logo

af-gang-mail's Introduction

Getting Started

To run the site locally, run:

  • make setup to set up the environment;
  • make dotenv to write a default .env file;
  • make db to create a database; and then
  • make site to start the website.

Run make help for information on how to run tests, linting, etc.

Running Cypress Tests Locally

Getting Cypress tests to run locally is a little bit involved.

First, make sure you stop any running web or worker processes.

Next, run the following commands:

  • make cypress-db to create the database the site under test will use;
  • make queue to run RabbitMQ;
  • make cypress-worker to run a worker process;
  • make cypress-web to run the site to test; and finally
  • make cypress or make cypress-interactive to run the tests (make cypress-interactive will run Cypress' GUI and allow you to observe the tests running).

af-gang-mail's People

Contributors

craiga avatar dependabot[bot] avatar

Watchers

 avatar  avatar

af-gang-mail's Issues

Set up real hostname

As a user I want to have a recognisable, legitimate address to go to so that I can check on the mail exchange.

Require email verification to participate in exchange draw

As the product owner I want to make sure that all users in an exchange have verified email addresses so that I can be certain that users will get notifications.

Acceptance Criteria

  • A user with a verified email address is included in exchange draws
  • A user who hasn't verified their email address:
    • will not be included in exchange draws
    • will see a message reminding them to verify their email address when they visit the site
    • will have easy access to a link to re-send a verification email
    • will still be able to join and leave exchanges
  • Draw timing tests have been re-run and the system re-configured.

Task to draw names is really long-lived

With its current configuration, the task to drawn names for an exchange with 10,000 users will be started with a soft timeout of 50 minutes!

That's not good.

Send emails to users after draw

As a user, I would like to receive an email once the draw has taken place so that I know who to send my mail to.

Acceptance Criteria

  • Email should be sent soon after the draw is completed
  • Each exchange needs to opt-in to emails.
  • An end-to-end test should exist for this.
  • We should avoid errors which might come about due to hitting Sendinblue limits. It looks like messages go into a backlog which is sent whenever there is capacity available, but I'm still testing this.
  • Email should appear something like this:

Subject: You've drawn Recipient Name in the exchange name AF GANG mail exchange!

Hi Recipient Name,

Thanks for taking part in the exchange name AF GANG mail exchange!

You've been assigned … (drum roll…)

Recipient Name
Recipient Address Line 1
Recipient Address Line 2
Recipient Address Line 3

Please send a gift to this person before send date!

You can also get this information at url-of-draw-detail-page.

xo

AF Gang Mail Exchange

Privacy Notice

As a site manager, I want to be compliant with GDPR so that I'm not fined two million euros.

Needs to cover:

  • What personal information you collect
  • How and why you collect it
  • How you use it
  • How you secure it
  • Any third parties with access to it
  • If you use cookies
  • How users can control their data
  • Who collects the data
  • What data is being collected
  • The legal basis for processing the data
  • Who, if anyone, the data be shared with
  • How the information will be used
  • How long will the data be stored
  • What rights users have to their data
  • How users can raise a complaint

The privacy policy should address these eight rights: https://ico.org.uk/for-organisations/guide-to-data-protection/guide-to-the-general-data-protection-regulation-gdpr/individual-rights/

GDPR? What impact does it have?

As far as I can tell, to be compliant with GDPR this site needs to:

  • have a privacy policy/notice which includes:
    • What personal information you collect
    • How and why you collect it
    • How you use it
    • How you secure it
    • Any third parties with access to it
    • If you use cookies
    • How users can control their data
    • Who collects the data
    • What data is being collected
    • The legal basis for processing the data
    • Who, if anyone, the data be shared with
    • How the information will be used
    • How long will the data be stored
    • What rights users have to their data
    • How users can raise a complaint

The privacy policy should address these eight rights: https://ico.org.uk/for-organisations/guide-to-data-protection/guide-to-the-general-data-protection-regulation-gdpr/individual-rights/

  • get user consent before storing any personal information—for this app, that would mean getting consent before signing up.

In order to participate in the AF GANG Mail Exchange, we require:

  • your email address;
  • your name; and
  • your postal address.

Your name and address will be shared with one other user for each exchange is drawn. For example, if you participate in two exchanges, two people will be sent your name and address.

If you don't provide us with those details, we're not able to have you take part in the mail exchange. Sorry!

Sources:

Show details of the draw to users on the web site

As a user I want to see the details of the currently active draw so I know where to send my mail.

Acceptance Criteria

  • If a draw is active and I'm participating in it:
    • that exchange is highlighted on the home page;
    • I can click through to a page which shows:
      • the name of the recipient;
      • the address of the recipient; and
      • the date I should send the mail by.

Automatically do the draw

As a user, I would like the draw to happen when it's supposed to.

Acceptance Criteria

  • The draw happens when it's scheduled to happen.
  • The draw can only happen once.
  • Once the draw of an exchange has started, nobody can enter that exchange.

Related: #55 (email users about draw) and #56 (show draw on the web site)

Can draw a user with no name or address

As a user I want to know that other users have entered their name and address so that I know where to send things when I draw them.

Acceptance Criteria

  • The name and address form shouldn't accept submissions without a name or an address
  • Draws shouldn't include users without a name or address
  • If a user hasn't entered a name or an address, a message should be displayed on the home page explaining that they won't be able to participate in exchanges until they enter a name and/or an address.

Get consent for data collection and processing

As a site manager, I want to be compliant with GDPR so that I'm not fined two million euros.

We need to get user consent before storing any personal information—for this app, that would mean getting consent before signing up.

In order to participate in the AF GANG Mail Exchange, we require:

  • your email address;
  • your name; and
  • your postal address.

Your name and address will be shared with one other user for each exchange is drawn. For example, if you participate in two exchanges, two people will be sent your name and address.

If you don't provide us with those details, we're not able to have you take part in the mail exchange. Sorry!

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.