# African Public Library Hackathon (Idea Map)
## Goals
- Broaden ALP's donor and collector base through a digtal portal
- Develop an incentivized, points-based donation process that facilitates consistent use
- Create a seamless donation system for new and returning donors
- Create a seamless cataloguing experience for collectors that can be expanded to librarians
- Help donors and collectors visualize the impact of their donations
- Make donating easier during COVID-19 by digitizing the donation process
- Bring awareness to black owned businesses
- Generate socially conscious partnerships that further strengthen incentive/point system
#### Figma Greybox Wireframes: https://www.figma.com/file/I2Prt07ufgnl2XV220HuDm/Kitabu-Greybox-Wireframes?node-id=0%3A1
#### Static Wireframes: https://miguel-lorenzo.dev/kitabu-wireframes/index.html
##### Tech used:
- ISBN db (https://isbndb.com/isbn-database)
- Barcode scanner
(https://www.dynamsoft.com/Products/Dynamic-Barcode-Reader.aspx
#### TO-DO's
[X] Build static mobile-friendly wireframes
[x] Connect necessary 3rd Party API's (Dynamsoft + Google Books)
[X] Port to React using Material UI w mock data
[x] Skeleton out fetch requests on client side
[x] Create schema, models and endpoints necessary for all use-cases
[x] Connect client to backend
[] Polish & design
[x] Housekeeping/Submission
[] Add tests if there's time

### User Stories
#### As a donor...
- I want to login using phone number (or existing credentials / google / facebook)
- I want to scan books on my browser
- I can list the condition of each book I donate
- I can create a ticket logging my donation batch (i.e. list of books they'll be sending out)
- I can view where to drop off the books to based on my location
- I can select who to give to
- I can see past books I've sent and points I've accumulated, and the status of each donation
- I can show the collector a QR code with my donation
- I can see other information near the QR code detailing the name of the collector, their address, business hours and phone number for help
#### As a collection partner...
- I can recieve tickets of users donating books via QR code which adds their donation to my queue
- I can add my whole queue into my shipping box in one button
- I can create shipping details out of my donations that has a QR code to scan the whole inventory
- I can approve and deny donations based on their condition
- I can add individual books to my shipping list if I want to ship a collection
- I can log out and log back in to view my saved queue in case I want to revisit later
- Shipped books are deleted from my queue
#### Technical considerations:
- Need to consider when to make the request to the ISBNdb API --- is there a callback function built in on the barcode scanner that we can create a request afterwards?
## Client-side:
### Components
- App.js
- Nav bar
- Book item
- Book list
- Ticket with QR Code
- User card
- Login/Register Form
- QR/Barcode Scanner (with state)
- Queue Widget
### Views
General:
- Landing page
- Login Page
- Register Page
Donors:
- Donor Dashboard Page
- Donation History/Pts Page
- QR Code/Ticket Pages
- *Edit information Page [Low Priority]*
Collectors:
- Collector Dashboard Page
- Shipping list final page (for printing)
- *Shipping History page [Low Priority]*
- *Edit information page [Low Priority]*
## Routes