@@ -0,0 +1,60 @@
1++++
2+title = "Gora: QR Edition"
3+date = "2022-09-25"
4+
5+[taxonomies]
6+grant_type = [ "Apprenticeship" ]
7+grant_category = [ "App Dev", "Other" ]
8+
9+[extra]
10+image = ""
11+description = "Extend Gora with QR-code generation and scanning for sending and recieving gorae"
12+reward = "1 star"
13+mentor = ["~rabsef-bicrym"]
14+assignee = [""]
15+grant_id = "A0192"
16+completed = false
17+canceled = false
18+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=A0192&prefill_Grant+Name=Gora%20Apprenticeship
19+"
20++++
21+
22+# Gora QR Edition - Updating Urbit's Premier Sticker Software
23+
24+The Gora QR Edition Apprenticeship is a userspace application apprenticeship focused on experiential learning in Earth-to-Mars communication (web interfacing) using [sail](https://developers.urbit.org/guides/additional/sail) (urbit's XML markdown language) and [rudder](https://github.com/Fang-/suite/blob/master/lib/rudder.hoon) (urbit's leading library for raw http-request handling), as well as airlock through the [urbit/http-api npm library](https://www.npmjs.com/package/@urbit/http-api).
25+
26+## Apprentice Expectations
27+Apprentice is familiar with Urbit and Gora. Apprentice has some familiarity with hoon, and ideally has a functional understanding of gall applications. Apprentices with an understanding of encoding data in QR codes preferred.
28+
29+## Team
30+
31+The Gora QR Edition apprentice will work with the Quartus Team and ~rabsef-bicrym (Gora's creator) directly. The apprentice and Quartus team will participate in an initial "kick-off" call to talk through the user stories and the expected implementation, and will proceed with weekly or biweekly (at the apprentice's preference or need) meetings with ~rabsef-bicrym thereafter.
32+
33+## Deliverable
34+
35+Production-ready pull request to the [gora repo](https://github.com/dalten-collective/gora) and [vue-front-end repo](https://github.com/dalten-collective/gora-frontend) updating both Vue and Sail versions to allow for QR-code generation and scanning to give/receive a gora, as described in the user stories, below.
36+
37+## User Stories
38+
39+* As a Gora Issuer (host)
40+ * For Gorae that I host, which are either stakable or standard, which (if standard) are not at or beyond their max # of hodlers, I am able to:
41+ * Generate a one-time-use QR code in the application which, when scanned by another gora user, would request the gora for which I have generated the code;
42+ * Receive pokes from external ships who have scanned that QR code, containing the information of the QR code;
43+ * Decipher and validate the incoming, poked, QR code information;
44+ * and, where appropriate, provide the gora to the ship requesting it via the QR code.
45+ * I am able to complete these behaviors in both the Vue and Sail implementations of Gora.
46+* As a Gora Requester (hodler)
47+ * In my gora application, I can request a gora by scanning a QR code (amongst other methods).
48+ * When I scan a QR code, I automatically poke the host ship of the gora who's code I have scanned, with the information of the QR code for validation.
49+ * I am able to complete these behaviors in both the Vue and Sail implementations of Gora.
50+
51+## Implementation Notes
52+
53+We are amenable to suggestions of strategies from our apprentice as to the nature of the implementation of this feature, particularly in the Front-End presentation. We have a suggestion for the general implementation details on the backend, but are nonetheless open to input:
54+
55+- Gora will get a state upgrade to include a `(jug gora-id nonce)`
56+- Each time a QR code is generated, a nonce will be randomly generated, checked to be unique against the `(set nonce)
57+
58+## Schedule & Compensation
59+
60+The Gora QR Edition apprenticeship should take no longer than 3 months, but is likely executable within a month. The apprentice will recieve 1 star upon successful completion of the apprenticeship.