# blockheads workshop 1 ## learning outcomes - students will be able to design and develop the sample app (see screenshot) - students will understand NEAR accounts, contract basics, project basics, `create-near-app` - ... ## week 1: basics of NEAR - what is NEAR? - what's an account? - what's a contract? - how do i wire things up? - how does NEAR store data? --- 1. create an account - Creating My Wallet - What are Near Tokens? - Where are my Tokens? - What are Keys? - where are my keys? - how do i use this thing? 2. working with `create-near-app` a. `npx create-near-app --help` - what's supported? - what's preferred? b. `npx create-near-app <app_name>` - what was produced? - how do i run (deploy) it? - how do i edit the frontend? - how do i edit the contract? c. `npx create-near-app --frontend=React <app_name>` - what's different from before? - how do i edit the frontend? d. `npx create-near-app --contract=Rust <app_name>` - what's different from before? - how do i edit the contract? 3. wiring up a contract - how do i add new methods to a contract? - how do i connect those methods to the frontend? - how do i call those methods from the frontend? ## week 2: intermediate NEAR - what is NEAR CLI? - what can i do with it? --- 1. observing contracts - what is `code_hash`? - how do i use keys? - `FullAccess` vs `FunctionCall` access keys <!-- 2. working with multiple contracts - what are cross-contract calls? - what are "iTx" calls? - what are "iMx" calls? --> 2. upgrading contracts - how do i redeploy a contract? - how do i limit redeployment? 3. account state - what is account state? - how do i edit account state? - what are custom collections? <!-- 4. sending money - how do i send money? - what kind of key do i need to send money? --> ## week 3: project design 1. envisioning - how do i model blockchain applications? - how is a contract like a database? - how do interact with the blockchain? - `near-api-js` - JSON RPC API - how do users interact with the contract? - async user experience 2. design - what tools can i use to design the app? - Miro - Balsamiq - how do i design the contract interface? - activity / sequence diagrams <!-- 3. development - how do i unit test a contract? - how do locally run integration tests for a contract? --> ## week 4: project development - specification - what's the goal of the project? - what's does the final product look like? - build-out - where can i deploy the project?