Journey 1: voting (UC-03, UC-04, UC-05)
- The visitor opens the Vote screen and selects a candidate.
- If not signed in, the dapp asks for an email and sends a magic link or code.
- They verify it; a session opens and their choice is preserved.
- They confirm their vote; the candidate's share updates.
- Before closing, they can choose another candidate; the previous vote is removed.
Edge cases:
- Disposable email: rejected with a clear message.
- Account less than 24 h old (from cycle 2): voting rejected; the dapp shows when the account becomes eligible.
- Too many accounts from one IP or device: new account blocked.
- Vote after closing: rejected; the dapp shows the result.
- Expired magic link (15 min): the dapp offers a new one.
- Team account: vote rejected.