7 | Your one-stop journey to mastering Arweave AO development, organized by ArweaveOasis.
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | ## Overview
19 |
20 | The School of DumDum is a part of Arweave Academy developer education program. We offer developers free, high-quality courses and practical tasks to help them start building applications on Arweave and AO from scratch.
21 |
22 | Special thanks to [@K4y1s](https://x.com/K4y1s), [@sayestheorem](https://x.com/sayestheorem), [@rosmcmahon_real](https://x.com/rosmcmahon_real) and [@developer_dao](https://x.com/developer_dao) for support, and to [@OpenBuildxyz](https://x.com/OpenBuildxyz) for their guidance and assistance with the event process.
23 |
24 | We divided this event into two parts: one for beginners and one for advanced developers.
25 |
26 | - **Beginners** can enter the `Learning section`, where they will complete their learning by studying courses and submitting tasks.
27 | - **Advanced Developers** can directly participate in the `Practice section` competition. You can choose a topic of your interest from the challange list and complete the practice by developing and writing tutorials. The best practices will be selected by judges and rewarded.
28 |
29 | ## Preparation
30 |
31 | Before participating in the event, here’s what you need to prepare:
32 |
33 | - An Arweave/AO wallet -- [Arconnect](https://www.arconnect.io/)
34 | - An all-in-one Arweave AO relevant documentation list -- [awesome-ao](https://github.com/ArweaveOasis/awesome-ao)
35 | - Arweave block explorer -- [viewblock](https://viewblock.io/arweave)
36 | - AO explorer -- [aolink](https://www.ao.link/)
37 |
38 | ## Registration
39 |
40 | Developers need to complete GitHub registration by following these steps:
41 |
42 | 1. **Star**, **Watch** and **Fork** this repository and `git clone` it to your local machine. 👉 Not familiar with Git/Github? Check out [Using Arweave Academy Github](./doc/Using%20Arweave%20Academy%20Github.md).
43 | 2. Navigate to the `submissions` folder and create a new folder named after your GitHub username, e.g. `submissions/YourName`.
44 | 3. Copy the [Template.md](./template.md) file into the newly created folder and rename it to your name: `YourName.md`.
45 | 4. Open the `submissions/YourName/YourName.md` file, fill in your information as instructed, and save it.
46 | 5. Commit your changes and create a Pull Request to this repository. Once your PR is merged, your GitHub registration is complete.
47 | 6. Once completed, you are welcome to join in the Arweave Academy [Discord Channel](https://discord.gg/mmFjtTjxzf)!
48 |
49 | ## Task Submission
50 |
51 | > 📣📣📣 **Due to the recent influx of participants, the size of this repository has grown significantly. we've decided to archive the files in the Submissions folder that have already been merged. This step is being taken to reduce the repository size and ensure that the event can continue smoothly.** [More Information](./submissions/Archive%20Announcement.md)
52 |
53 |
54 | After each course there will be a series of tasks. These tasks will test whether you have mastered the course content. You will be redirected to the @OpenBuildxyz platform to complete the task and submit a screenshot of the result to your folder in the GitHub repository.
55 |
56 | For example, to submit `task1`, follow these steps:
57 |
58 | 1. Create a `task1` folder under `submissions/YourName`.
59 | 2. Click [task1](https://openbuild.xyz/quiz/202501081) to open the `task1` page.
60 | 3. Please **log in** to the OpenBuild platform using your **GitHub account** to facilitate the subsequent statistical work.
61 | 4. Answer all the questions, take a screenshot of the result, and upload it to your `submissions/YourName/task1` folder.
62 | 5. Submit a Pull Request to this repository. Once your PR is merged, `task1` will be marked as complete.
63 |
64 | Developers who complete all the courses and submit the tasks will receive a Level 1 Certification. If you earn all 4 Levels of Certifications in the future, you will be awarded a **Final Graduation Certificate** and become a priority candidate in our talent pool, gaining access to more job opportunities within the ecosystem.
65 |
66 |
67 |
68 | ## Course Guideline
69 |
70 | ### Level 1 Introduction to Arweave and AO
71 |
72 | #### Module 1: Understanding Arweave
73 |
74 | 1. Intro to Arweave | [Learn](https://academy.developerdao.com/tracks/arweave-101/1)
75 | - What is Arweave?
76 | - How does Arweave Work?
77 | - Permanent Storage Through Consensus and The Endowment
78 | - Arweave Transactions
79 | - Smart Contracts as Add-Ons
80 |
81 | 2. Storing Data on Arweave | [Learn](https://academy.developerdao.com/tracks/arweave-101/3)
82 | - How to Store Small Files on Arweave?
83 | - What are Popular Arweave Bundling Services and SDKs?
84 | - What are Popular Arweave Wallets?
85 |
86 |
87 |
88 | | Task | Topic | Status | Review |
89 | |-------|-------|-------|-------|
90 | | [task1](https://openbuild.xyz/quiz/202501081) | 6 Quizs for "Intro to Arweave" | stop |[Review](https://x.com/ArweaveOasis/status/1881249788186022397) |
91 | | [task2](https://openbuild.xyz/quiz/202501082) | 8 Quizs for "Intro to Arweave" | stop | [Review](https://x.com/ArweaveOasis/status/1881619329768468865) |
92 | | [task3](https://openbuild.xyz/quiz/202501083) | 9 Quizs for "Storing Data on Arweave" | stop |[Review](https://x.com/ArweaveOasis/status/1882347369234387277)|
93 |
94 | #### Module 2: Basic development on Arweave
95 |
96 | 1. Access Data on Arweave | [Learn](https://academy.developerdao.com/tracks/arweave-101/2)
97 | - How to Access Files on Arweave?
98 | - How to Access Directories on Arweave?
99 | - How to Find Files on Arweave With GraphQL?
100 | - How to Find Files on Arweave With Subdomains?
101 |
102 | 2. Building a static website on Arweave | [Learn](https://academy.developerdao.com/tracks/arweave-101/4)
103 | - Creating Your Website
104 | - Deploying Your Website to Arweave
105 | - Creating a Human-Friendly Name For Your Website
106 |
107 | 3. Build a Dapp on Arweave | [Learn](https://academy.developerdao.com/tracks/arweave-101/5)
108 | - Creating the DApp
109 | - Deploying the DApp
110 | - Creating a Human-Friendly Name for the DApp
111 |
112 | | Task | Topic | Status |
113 | |-------|-------|-------|
114 | | [task4](https://openbuild.xyz/quiz/202501084) | 6 Quizs for "Access Data on Arweave" | stop |
115 | | [task5](https://openbuild.xyz/quiz/202501085) | 6 Quizs for "Access Data on Arweave" | stop |
116 | | [task6](https://openbuild.xyz/quiz/202501086) | 6 Quizs for "Building a static website on Arweave" | stop |
117 | | [task7](https://openbuild.xyz/quiz/202501087) | 6 Quizs for "Building a static website on Arweave" | stop |
118 | | [task8](https://openbuild.xyz/quiz/202501088) | 6 Quizs for "Build a Dapp on Arweave" | stop |
119 | | [task9](https://openbuild.xyz/quiz/202501089) | 6 Quizs for "Build a Dapp on Arweave" | stop |
120 | | [task10](https://openbuild.xyz/quiz/202501090) | 6 Quizs for "Build a Dapp on Arweave" | stop |
121 |
122 | #### Module 3: Introduction to AO (TBD)
123 |
124 | #### Module 4: Connecting Arweave and AO (TBD)
125 |
126 | ## Practice
127 |
128 | The Practice section is designed for advanced developers. If you have significant development experience, consider giving it a try.
129 |
130 | Practice challenges will be released continuously, and for each challenge, the Best Practice will be selected and merged into the [awesome-ao](https://github.com/ArweaveOasis/awesome-ao) repository. Winners will receive **150 USDC** as rewards sponsored by Forward Research.
131 |
132 | How to submit the challenge:
133 |
134 | 1. Navigate to the `practice submissions` folder and create a new folder named after your **GitHub username**, e.g. `practice submissions/YourName`.
135 | 2. Create a `challenge1` folder under `practice submissions/YourName`.
136 | 3. Copy the [challenge1.md](./practice/challenge1.md) file into your `challenge1` folder. You can also create a `readme.md` file to give an introduction/tutorial for your code.
137 | 4. Upload your code and the necessary content to the `practice submissions/YourName/challenge1` folder.
138 | 5. Submit a Pull Request to this repository, and make sure the **Pull Request name** is `YourName Challenge1`.
139 | 6. ⚠️ Each challenge must be submitted separately. A single PR containing multiple challenges and tasks will be closed.
140 |
141 | | Challenge | Type | Tag | Topic | Prize | Status |
142 | |-------|--------|-------|-------|-------|-------|
143 | | 1 | Frondend | Arweave | [File-based Routing](./practice/challenge1.md) | 150 U | Ongoing |
144 | | 2 | Frondend | Arweave | [Static Site Generation](./practice/challenge2.md) | 150 U | Ongoing |
145 | | 3 | Frondend | Arweave | [Client-Side Rendering](./practice/challenge3.md) | 150 U | Ongoing |
146 | | 4 | Frondend | Arweave | [Hash-Based SPA Routing](./practice/challenge4.md) | 150 U | Ongoing |
147 |
--------------------------------------------------------------------------------
/doc/Using Arweave Academy Github.md:
--------------------------------------------------------------------------------
1 | # Using Arweave Academy GitHub
2 |
3 | Contributing to open-source projects is a great way to improve your coding skills, collaborate with others, and give back to the community. In this developer online education event, we will also encourage you to participate by submitting Pull Request (PR). Here’s a step-by-step guide.
4 |
5 | ## 1. Fork the Repository
6 |
7 | - Go to the [Arweave-Academy](https://github.com/ArweaveOasis/Arweave-Academy) repository on GitHub which is produced by Arweave Oasis.
8 | - Click the **`Fork`** button at the top right corner to create your copy of the repository.
9 |
10 | 
11 |
12 | 
13 |
14 | - You can find the repository you have forked in your GitHub account.
15 |
16 | 
17 |
18 | ## 2. Clone Your Fork
19 |
20 | - Copy the repository URL from your forked repository.
21 |
22 | 
23 |
24 | - Open your terminal and run:
25 |
26 | ``` bash
27 | git clone
28 | ## Exmaple: git clone https://github.com/gerrywang1117/Arweave-Academy.git
29 | ```
30 |
31 | 
32 |
33 | ## 3. Set Upstream Remote
34 |
35 | - Navigate to the cloned directory:
36 |
37 | ``` bash
38 | cd
39 | ## Example: cd Arweave-Academy
40 | ```
41 |
42 | - Verify the remotes:
43 |
44 | ``` bash
45 | git remote -v
46 | ```
47 |
48 | 
49 |
50 | - As we can see, the connection has been established. Next, we need to connect to the upstream, which refers to the original project source that was forked initially, in this case, Arweave-Academy.
51 |
52 | ``` bash
53 | git remote add upstream
54 | ## Example: git remote add upstream https://github.com/ArweaveOasis/Arweave-Academy.git
55 | ```
56 |
57 | - At this point, if we enter `git remote -v`, we can see that the local repository is now connected to both the remote repository and the upstream.
58 |
59 | 
60 |
61 | ## 4. Update the Latest Code
62 |
63 | Why do we do this? Because while you’re developing, others might also be working on the project. It’s likely that the code you forked is no longer up-to-date. In such cases, you need to continuously update your code, ensuring that you update it at least once before pushing. This ensures that code conflicts are minimized.
64 |
65 | ```bash
66 | git fetch upstream main
67 | ```
68 |
69 | ## 5. Make Changes
70 |
71 | - Edit the code or documentation in your local repository.
72 | - Thoroughly test your changes to ensure they function as intended.
73 | - Stage your changes:
74 |
75 | ```bash
76 | git add .
77 | ```
78 |
79 | - Commit your changes with a meaningful message:
80 |
81 | ```bash
82 | git commit -m "Description of changes"
83 | ```
84 |
85 | ## 6. Push Changes to Your Fork
86 |
87 | - Push your changes to your forked repository. This allows you to push all changes to your forked repository.
88 |
89 | ```bash
90 | git push origin main
91 | ```
92 |
93 | 
94 |
95 | ## 7. Open a Pull Request
96 |
97 | - Go to the original repository on GitHub. Click the **Pull Requests** tab.
98 |
99 | 
100 |
101 | - Click **New Pull Request**.
102 |
103 | 
104 |
105 | - Click **Create Pull Request.**
106 |
107 | 
108 |
109 | - Write a clear title and description for your PR, explaining what you’ve changed and why. Then submit the Pull Request.
110 |
111 | 
112 |
113 | ## 8. Celebrate Your Contribution!
114 |
115 | - Wait for maintainers to review your PR and merge to the main repository.
116 |
117 | 
118 |
119 | - Once your PR is merged, congratulations! You’ve successfully joined the event.
120 |
121 | ## Tips for Successful Contributions
122 |
123 | - Be respectful and patient when communicating with maintainers.
124 | - Follow the project’s coding style and guidelines.
125 | - Make small, focused changes rather than large, complex updates.
126 |
--------------------------------------------------------------------------------
/doc/image/Clone tutorial_fork_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/Clone tutorial_fork_1.png
--------------------------------------------------------------------------------
/doc/image/Clone tutorial_fork_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/Clone tutorial_fork_2.png
--------------------------------------------------------------------------------
/doc/image/Clone tutorial_fork_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/Clone tutorial_fork_3.png
--------------------------------------------------------------------------------
/doc/image/PR tutorial_fork_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/PR tutorial_fork_1.png
--------------------------------------------------------------------------------
/doc/image/PR tutorial_fork_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/PR tutorial_fork_2.png
--------------------------------------------------------------------------------
/doc/image/PR tutorial_fork_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/PR tutorial_fork_3.png
--------------------------------------------------------------------------------
/doc/image/PR tutorial_submission_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/PR tutorial_submission_1.png
--------------------------------------------------------------------------------
/doc/image/PR tutorial_submission_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/PR tutorial_submission_2.png
--------------------------------------------------------------------------------
/doc/image/PR tutorial_submission_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/PR tutorial_submission_3.png
--------------------------------------------------------------------------------
/doc/image/PR tutorial_submission_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/PR tutorial_submission_4.png
--------------------------------------------------------------------------------
/doc/image/PR tutorial_submission_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/PR tutorial_submission_5.png
--------------------------------------------------------------------------------
/doc/image/Upsteam tutorial_fork_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/Upsteam tutorial_fork_1.png
--------------------------------------------------------------------------------
/doc/image/push tutorial_fork_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/push tutorial_fork_1.png
--------------------------------------------------------------------------------
/doc/image/school of dumdum.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ArweaveOasis/Arweave-Academy/2e95a3e9d01c825314b476eb31b2ee8b8c2e62e7/doc/image/school of dumdum.jpg
--------------------------------------------------------------------------------
/practice/challenge1.md:
--------------------------------------------------------------------------------
1 | ### Frontend Challenge 1: File-based Routing
2 |
3 | - **Decription**
4 | Build a simple website with multiple HTML files that link to each other and deploy it on Arweave.
5 | - **Why?**
6 | This is the easiest way to build a website and fits Arweave’s permanent storage model, and AR.IO gateways can’t execute server-side code. Use it for very simple websites when additional tooling would create too much overhead.
7 | - **Tools**
8 | Dragondeploy, etc.
--------------------------------------------------------------------------------
/practice/challenge2.md:
--------------------------------------------------------------------------------
1 | ### Frontend Challenge 2: Static Site Generation
2 |
3 | - **Decription**
4 | Build a simple website rendered at compile time and deploy it to Arweave.
5 | - **Why?**
6 | Because it fits Arweave’s permanent storage model, and AR.IO gateways can’t execute server-side code. Use SSG for content-heavy websites that don’t change often.
7 | - **Tools**
8 | Arx, Hexo, Eleventy, etc.
--------------------------------------------------------------------------------
/practice/challenge3.md:
--------------------------------------------------------------------------------
1 | ### Frontend Challenge 3: Client-Side Rendering
2 |
3 | - **Decription**
4 | Build a simple web app that renders on the client and deploy it to Arweave.
5 | - **Why?**
6 | Because it fits Arweave’s permanent storage model, and AR.IO gateways can’t execute server-side code. Use CSR for interactive apps that change often.
7 | - **Tools**
8 | Arx, Next.js, Nuxt, SvelteKit, etc.
--------------------------------------------------------------------------------
/practice/challenge4.md:
--------------------------------------------------------------------------------
1 | ### Frontend Challenge 4: Hash-Based SPA Routing
2 |
3 | - **Decription**
4 | Build a simple web app that uses the hash part of the URL for client-side routing and deploy it to Arweave.
5 | - **Why?**
6 | This routing method is easy to implement and fits Arweave’s permanent storage model. AR.IO gateways can’t execute server-side code, so it's best for small apps that don’t need SEO optimization.
7 | - **Tools**
8 | Arx, Next.js, Nuxt, SvelteKit, etc.
--------------------------------------------------------------------------------
/submissions/Archive Announcement.md:
--------------------------------------------------------------------------------
1 |
2 | # Archive Announcement
3 | Due to the recent influx of participants, the number of PRs has continued to rise, and more and more PRs are being merged. As a result, the size of this repository has grown significantly. Some participants have even found that cloning the repo has become more difficult due to its large size.
4 |
5 | After discussions with the team, we've decided to **archive** the files in the **Submissions** folder that have already been merged. This step is being taken to reduce the repository size and ensure that the event can continue smoothly.
6 |
7 | Thank you for your understanding and cooperation.
8 |
--------------------------------------------------------------------------------
/template.md:
--------------------------------------------------------------------------------
1 | ## Arweave Academy Personal File
2 |
3 | ### Personal information
4 |
5 | - github account:
6 | - Email:
7 | - Arweave Address:
8 | - ETH Address:
9 | - Please finish this [form](https://docs.google.com/forms/d/e/1FAIpQLSfWA5fIIcBgmRppm3jNz5vmf9Mai_QMVil-2pO4r7YKn_Zhtw/viewform?usp=sf_link) to join in the talent pool.
10 |
11 | ### Introduce Yourself
12 |
--------------------------------------------------------------------------------