# 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?