A simple, beginner-friendly guide to learning Sui Move programming in 21 days.
Each day has its own folder with everything you need:
day_01/- Day 1: Modules + Primitive Typesday_02/- Day 2: Functionsday_03/- Day 3: Structs- ...
day_21/- Day 21: Final Tests
Each day folder contains:
README.md- Explanation of concepts + reading materialsMove.toml- Move package configurationsources/main.move- Your code file with TODO comments
New to programming? Start with day_00_setup/README.md for detailed setup instructions!
- Sui CLI installed (Quick Install Guide or see
day_00_setup/) - Code editor (VS Code recommended)
- Git installed
- Basic terminal knowledge
Not sure if you're ready? Check the setup guide in day_00_setup/README.md for step-by-step instructions.
# Clone or download the project
cd 21Challenge
# Navigate to day 1
cd day_01
# Read the README
cat README.md
# Build and test
sui move build
sui move testFirst time? See detailed explanation of these commands below ⬇️
- Setup First (if needed): Check
day_00_setup/README.mdfor installation help - Start with Day 1: Go to
day_01/folder - Read the README: Each day's README explains:
- What you'll learn
- Key concepts (with examples)
- Your tasks
- Reading materials (Move Book links)
- Related Days - see which days connect to this one
- Code: Open
sources/main.moveand complete the TODOs- Look for
TODO:comments with instructions - Code examples and hints are provided as comments
- Look for
- Test: Run
sui move testin that day's folder - Stuck? Check the solution:
- Look at
sources/solution.movefor the complete answer - Try solving it yourself first!
- Solutions include helpful comments explaining the logic
- Look at
- Commit: Commit your work
- Move to next day: Repeat for
day_02/,day_03/, etc.
21Challenge/
├── README.md # This file
├── GLOSSARY.md # Terms and definitions reference
├── TROUBLESHOOTING.md # Solutions to common problems
├── day_00_setup/ # Setup instructions (start here if new!)
│ └── README.md
├── day_01/
│ ├── README.md # Day 1 guide
│ ├── Move.toml # Package config
│ └── sources/
│ ├── main.move # Your code (complete the TODOs)
│ └── solution.move # Solution (check if stuck)
├── day_02/
│ ├── README.md
│ ├── Move.toml
│ └── sources/
│ ├── main.move
│ └── solution.move
├── ...
└── day_21/
├── README.md
├── Move.toml
└── sources/
├── main.move
└── solution.move
- GLOSSARY.md - Quick reference for Move terms (module, struct, ownership, etc.)
- TROUBLESHOOTING.md - Solutions to common errors
- day_00_setup/ - Detailed setup guide (Sui CLI, VS Code, terminal basics)
- sources/main.move - Your code file with TODOs
- sources/solution.move - Complete solution (try first, then check!)
After completing this challenge, you'll understand:
- ✅ Move syntax and basic concepts
- ✅ Structs, enums, vectors
- ✅ Ownership in Move
- ✅ Sui object model
- ✅ Entry functions
- ✅ Events
- ✅ Testing
For each day:
- Read (15-30 min) - Read the README and Move Book links
- Code (30-60 min) - Complete the TODOs in
main.move - Test (5 min) - Run
sui move test - Commit (1 min) - Commit your work
What it does: Compiles your Move code into bytecode
Where to run: In each day's folder (e.g., inside day_01/)
When to run: After writing or changing code
Success looks like:
BUILDING day_01
Build successful
Error? See TROUBLESHOOTING.md or check the error message (it shows the line number!)
What it does: Runs all test functions to verify your code works
Where to run: In each day's folder
When to run: After completing tasks
Success looks like:
Running Move unit tests
Test result: OK. Total tests: 3; passed: 3; failed: 0
Failure? Fix the code until all tests pass. The error message shows which test failed.
# Show current directory
pwd
# List files
ls
# Change directory (move to a folder)
cd folder_name
# Go back one folder
cd ..
# Go to home directory
cd ~
# Read a file
cat filename.mdNeed more help? Check day_00_setup/README.md for terminal basics!
This challenge includes 3 different projects to help you practice:
Focus: Move basics
- Learn: structs, vectors, ownership, control flow
- Build: A simple habit tracking system
Focus: Intermediate concepts
- Learn: enums, Option, visibility, aggregations
- Build: A task management system with rewards
Focus: Sui-specific features
- Learn: Objects, UID, entry functions, events
- Build: A farm with on-chain state
Each project reinforces previous concepts while introducing new ones!
This challenge includes several features to help you learn effectively:
- GLOSSARY.md - Quick reference for all Move terms (alphabetically organized)
- TROUBLESHOOTING.md - Solutions to common errors with examples
- day_00_setup/ - Step-by-step installation guide using suiup
- Related Days sections in each day's README show:
- Prerequisites (which days to complete first)
- What comes next (where this leads)
- Connected concepts across days
- TODO comments with clear instructions
- Code examples showing syntax and patterns
- Hints for tricky parts
- Complete solutions with explanatory comments
- Move Book links for deeper understanding
- Each day includes tests to verify your code
- Tests fail until you complete the tasks correctly
- Immediate feedback on your progress
- Re-read the day's README - the answer is often there
- Check GLOSSARY.md - understand the terms
- Look at code examples - see how it's done
- Check TROUBLESHOOTING.md - common errors and fixes
- Peek at solution.move - but try first!
- Move Book - Main learning resource
- Sui Documentation - Sui platform docs
Need help or want to connect with other learners?
- WhatsApp Community: Join our support group
- X (Twitter): @ercandotsui
Don't hesitate to ask questions - learning together is better!
- Work in the day's folder: Each day is self-contained
- Read before coding: Understanding concepts is crucial
- Use the learning aids: TODO comments, hints, and examples are there to help
- Try before checking solutions: Learning happens through struggle!
- Follow Related Days links: They help you understand the learning path
- Keep it simple: This is educational material, not production code
- Test often: Run tests after each change
- Use reference docs: GLOSSARY and TROUBLESHOOTING are your friends
- Commit daily: Track your progress
- Clean commits: The
.gitignorefile is set up to exclude build artifacts - commit only your source code
🎉 Success!
After 21 days, you'll have:
- 21 working Move modules
- Understanding of Sui Move fundamentals
- Ability to build your own Move programs
Happy learning!