Tracking issue for the WMDE Fundraising frontend "rewrite".
This "rewrite" will happen by starting from scratch architecture and design wise. As top down implementation is done, the corresponding parts of the old codebase can be used as they are, used in a refactored form, or thrown away and replaced entirely as we see fit.
**Proposed approach**
First we identify a use case that we predict is easy to implement and minimally depends on behaviour we'd need to implement for another one. We can then implement this use case in top down manner, creating the needed services, entities and other stuff as we see fit. This is where we decide for each part of the implementation if we simply use some old code, use a refactored version of some old code, or start from scratch. Once the use case is completed, we repeat the process, until we have all use cases (and thus completed both the red and yellow circles in this diagram). The next step then is to decide how we want to proceed with the presentation mechanism(s).
(https://www.youtube.com/watch?v=Nsjsiz2A9mg, https://blog.8thlight.com/assets/posts/2012-08-13-the-clean-architecture/CleanArchitecture-81565aba46f035911a5018e77a0f2d4e.jpg)
**Use case identification**
Visualization of conceptual components and their dependencies in the current codebase:
{F2624061}
Identified use cases:
* Add Comment
* List Comments 1
- list includes N comments,
- list allows continuation (list next N comments)
- list entry consists of author's name (may by anonymous), comment text, donation amount, date of donation
* List Comments 2
- list includes N comments
- list only includes comments from donors who agreed to have their name published with the comments (ie. no anonymous comments)
- list entry consists of author's name, comment text, donation amount
* Add Membershop Request
* Add Subscription Request
* Confirm Subscription Request
* Add Donation
* Cancel Donation
* Confirm Donation
* Validate Email
* Validate Bank Account
* Handle Callback (Credit Card Handler)
* Handle Callback (PayPal Handler)
* List Recent Donors
- list includes N recent donor names (only donations with a comment, and only those where donor wanted to have his name publish with a comment, i.e. donations with anonymous comments are excluded)
- list entry include donor's name or text saying anonymous donor
* List Recent Donations (for "Donation Liveticker")
- list includes N recent donations
- each entry consists of donation date and time, and donation amount
- this list covers all donations, not only those that have a donor added a comment
**The new code**
So far the idea is to put the rewrite in a new git repository at https://github.com/wmde/FundraisingFrontend. This way we get rid of any issues present in the old git repository history and can easily see what has been "rewritten" and what still needs to be done. (The code already there is for exploration and demonstration purposes and is not intended to be used or seen as a replacement of the original code.)
**Next steps**
(In no particular order)
* Implement "list comments" use case to get a better idea of the amount of work involved and the types of issues we'll run into (to be able to better estimate total project cost).
* Describe use cases in more detail, figure out which ones actually describe multiple use cases and which ones we missed.