Thank you for considering contributing to Level Up! We have been on a mission to build the best one-stop solution for developers to build the future of Ethereum. We greatly appreciate your help and are excited to collaborate with you. This document will guide you through the process of contributing.
At this time of writing, there are 25 Solidity modules available designed for aspiring developers as well as those looking to enhance their skills in Solidity.
-
Start a Discussion
- Discuss new modules that you would like to see added into the Solidity curriculum.
- Please utilise the template below when proposing a new module:
🌟 Title of Module - Name of Solidity module 🧠 Module Overview - Briefly describe key topics or concepts that the module will cover - How does this module complement or enhance current offerings? - Are there any overlaps with existing modules? 📖 Learning Objectives - List the specific outcomes for this module. What should participants ideally be able to do upon successful completion? 💭 Prerequisite - High-level description of the 5 levels of exercises which will be created. (Aim of exercises are to help devs level up their concept/coding proficiency via repetition in progressive difficulty.) 🌐 Resources - Are there any resources that you would like to add to support the development of this module?
📌 Note: The discussion template has already been created here. You may directly start a discussion via the link above.
-
Level Up maintainer will review the discussion.
-
If suggestion is accepted, proceed with creating a PR to add the module. Name your branch as
solidity-"discussionTitle"
. Title of PR should ideally beAdd Solidity Module: "Discussion Title"
.- For example, if you are planning to create a module about Events, you can follow the following naming guide:
- Branch name:
solidity-events
- PR Title:
Add Solidity Module: Events
- Branch name:
- PR shall include exercises and solutions pair. The code can be referenced here
- For example, if you are planning to create a module about Events, you can follow the following naming guide:
-
Keep commit messages short and concise to focus on change.
-
Ensure the Vercel checks passes.
-
Request for the maintainer to review the PR.
-
Your PR will be merged, amended, closed, or you will be asked for changes.
- Fork this repo
- Create a pull request (PR)
- If improving or updating previous solidity module, name your branch with the
patch-solidity-"name"
prefix. Title of PR should ideally bePatch Solidity: "Patch Name"
- If improving or updating previous solidity module, name your branch with the
- Keep commit messages short and concise to focus on change.
- Ensure the Vercel checks passes.
- Request for the maintainer to review the PR.
- Your PR will be merged, amended, closed, or you will be asked for changes.
We welcome various types of content, primarily focused on the following categories:
- Zero-Knowledge Technology (ZK)
- Smart Contracts
- Decentralised Finance (DeFi)
- Attestation
- Protocol
We encourage contributions that explore these topics in-depth, in the form of articles, tutorials, guides and blog posts.
📌 Note: Please note that while these are the current categories we accept, we may update the categories depending on contributions and education needs. You may also propose new categories by creating a forum discussion here.
- Fork this repo
- Create a pull request (PR)
- If adding new content, name your branch as
content-"name"
. Title of PR should ideally beAdd Content: Name of Content
- If updating or fixing previous content, name your branch with the
patch-content-"name"
prefix. Title of PR should ideally bePatch Content: "Patch Name
" - For example, if you are planning to create a content about building with circom, you can follow the following naming guide:
- Branch name:
content-how-to-build-with-circom
- PR Title:
Add Content: How to Build with Circom
- Branch name:
- If adding new content, name your branch as
- Keep commit messages short and concise to focus on change.
- Ensure the content builds on Vercel
- Someone will review your PR
- Your PR will be merged, amended, closed, or you will be asked for changes
- Always include the metadata structure at the top of your content in the frontmatter:
---
name: "Content Title";
index: 1; // This is for content indexing. Follow the next sequential number based on current repository.
summary: "Content Description"; // This appears in card description
author: "Your Name"; // A preferred name for us to credit you
authorIcon: "Link to your icon"; // GitHub or X icon link can be used here
authorLink: "Link to your profile"; // Can be any profile you want linked (GitHub, X, LinkedIn, Warpcast, etc.) but only one
published: "Mmm dd, yyyy"; // Date of article written
readTime: "xxx min read"; // Estimated read time in minutes
labels: ["Protocol"]; // Current options are ZK, Smart Contract, DeFi, Attestation and Protocol (labels can be more than one)
---
- If you touch any infrastructure, ensure the site builds with
yarn build
Level Up challenges are currently categorised into decentralised finance (DeFi) and NFT challenges, with difficulty levels ranging from Level 1 to 3, where Level 1 is the easiest and Level 3 being the most difficult.
We encourage contributions by hosting your code in the Level Up repository, allowing developers to learn and engage through your contributions.
📌 Note: Please note that while these are the current challenge categories, we may update the categories depending on contributions and education needs. You may also propose new categories by creating a forum discussion here
-
Start a Discussion
- Discuss new modules that you would like to add into Level Up Challenges.
- Please utilise the template below when proposing a new challenge:
🌟 Title of Challenge(s)
- List the name of the challenge(s)
🧠 Challenge(s) Overview
- Briefly describe the challenge(s).
- What concepts or skills does it cover?
- Are there any overlaps with existing challenges?
📖 Learning Objectives
- List the specific outcomes for this challenge(s).
- What should participants ideally be able to do upon successful completion?
💭 Prerequisite
- High-level outline of required knowledge or skills needed before attempting this challenge.
- Do they need to complete previous challenge(s)?
📍 Category
- Is this a DeFi or NFT challenge?
- Or is this a new type of challenge which you would like to propose?
🔥 Difficulty Level(s)
- Select the difficulty level(s)
- When building challenges, you do not need to create for all 3 levels
🌐 Resources
- Are there any resources that you would like to add to support the development of this challenge?
📌 Note: You can link content that you have created as a guide to the challenges you have developed.
- Level Up maintainer will review the discussion.
- If suggestion is accepted, the maintainer will create the repository in Level Up to host Challenges code. Repository title will be
discussionTitle-Challenge
. (See example here: https://github.com/LevelUpWeb3/0xSwapAPI-Challenge) - The maintainer will include you as a collaborator in the repository.
- Proceed with creating a PR to add the challenge. Name your branch as
challenge-"discussionTitle"
. Title of PR should ideally beAdd Challenge: "Discussion Title"
.- For example, if you are planning to create a challenge about gaming, you can follow the following naming guide:
- Branch name:
challenge-gaming
- PR Title:
Add Challenge: Gaming
- Branch name:
- Include tests for your challenges, if applicable (not all challenges requires tests i.e. CTF Challenges)
- For example, if you are planning to create a challenge about gaming, you can follow the following naming guide:
- Keep commit messages short and concise to focus on change.
- Ensure the Vercel checks passes.
- Request for the maintainer to review the PR.
- Your PR will be merged, amended, closed, or you will be asked for changes.
- Fork this repo
- Create a pull request (PR)
- If improving or updating previous challenge, name your branch with the
patch-challenge-"name"
prefix. Title of PR should ideally bePatch Challenge: "Patch Name"
- If improving or updating previous challenge, name your branch with the
- Keep commit messages short and concise to focus on change.
- Ensure the Vercel checks passes.
- Request for the maintainer to review the PR.
- Your PR will be merged, amended, closed, or you will be asked for changes.
- Use markdown to write content.
- Bold key terms or any terms the user must absolutely know when reading a doc.
- Italicize terms for emphasis but only when necessary.
- The introduction should inform the readers what they can expect from the content.
- Use a consistent voice. When writing documentation, avoid first person plural "we" and opt for second person singular "you".
- Be clear and concise. Avoid using filler words and redundant phrases.
- Example of redundant sentence constructions:
You would think that this is really very important, but it is just the end result of X input
. - Example of clear writing:
The response from X input is not significant.
- Example of redundant sentence constructions: