Skip to content

Repository files navigation

Stellar Philippines UniTour β€” University Campus Bootcamp Tour

Platform: Rise In
Track: Stellar Smart Contract Bootcamp
Duration: 4 Hours | 4:00 PM - 8:00 PM


Overview

Welcome to the Stellar Philippines UniTourβ€”a university-wide campus bootcamp tour that brings Soroban and Stellar to students across Philippine campuses. In this session, you’ll receive an assigned Soroban smart contract, complete it, deploy to Stellar testnet, then submit your work on Rise In for certification.

No prior Web3 experience neededβ€”follow the steps below.


Your Goal

  1. Receive your assigned Soroban smart contract
  2. Complete the contract code as instructed
  3. Test it locally using cargo test (with 3+ passing tests)
  4. Deploy it to the Stellar testnet
  5. Submit your Contract ID + GitHub repo on Rise In

Step-by-Step Guide

Step 1 - Set Up Your Environment

For full installation instructions and troubleshooting, use the local guide:

  • [ENG] Pre-Workshop Setup Guide.pdf

Install the following before or at the start of the session:

  • Rust

  • Add WASM target:

  • macOS (Terminal):

rustup target add wasm32-unknown-unknown
  • Windows (PowerShell):
rustup target add wasm32-unknown-unknown
cargo install --locked stellar-cli
  • Windows (PowerShell):
cargo install --locked stellar-cli

Step 2 - Complete the Contract

Open src/lib.rs and complete the contract logic as instructed.

Make sure you have at least 3 passing unit tests in src/test.rs.

  • macOS (Terminal):
cargo test
  • Windows (PowerShell):
cargo test

Step 3 - Deploy to Stellar Testnet

Create an identity (first time only):

  • macOS (Terminal):
stellar keys generate --global my-key --network testnet
stellar keys address my-key
  • Windows (PowerShell):
stellar keys generate --global my-key --network testnet
stellar keys address my-key

Fund your testnet account:

  • macOS (Terminal):
stellar keys fund my-key --network testnet
  • Windows (PowerShell):
stellar keys fund my-key --network testnet

Fund XLM to your Freighter Testnet wallet (macOS + Windows):

  1. Open Freighter and switch network to Testnet.
  2. Copy your wallet public address (starts with G...).
  3. Open Friendbot and fund your address:
  4. Paste your G... address and submit.
  5. Wait a few seconds, then refresh Freighter to see test XLM.

If Friendbot UI is unavailable, use this CLI fallback:

  • macOS (Terminal):
curl "https://friendbot.stellar.org?addr=<YOUR_FREIGHTER_TESTNET_ADDRESS>"
  • Windows (PowerShell):
Invoke-WebRequest "https://friendbot.stellar.org?addr=<YOUR_FREIGHTER_TESTNET_ADDRESS>"

Build your contract:

  • macOS (Terminal):
cargo build --target wasm32-unknown-unknown --release
ls target/wasm32-unknown-unknown/release/*.wasm
  • Windows (PowerShell):
cargo build --target wasm32-unknown-unknown --release
Get-ChildItem target\wasm32-unknown-unknown\release\*.wasm

If you do not see a .wasm file, confirm your contract crate name and retry the build command.

Deploy to testnet:

  • macOS (Terminal):
stellar contract deploy \
  --wasm target/wasm32-unknown-unknown/release/soroban_community_treasury.wasm \
  --source my-key \
  --network testnet
  • Windows (PowerShell):
stellar contract deploy `
  --wasm target/wasm32-unknown-unknown/release/soroban_community_treasury.wasm `
  --source my-key `
  --network testnet

Copy the Contract ID from the output (starts with C...).

Verify on Stellar Expert:

https://stellar.expert/explorer/testnet/contract/<YOUR_CONTRACT_ID>

Step 4 - Submit on Rise In

Submit the following on your Rise In program page:

Field What to Submit
GitHub Repository Public repo link with your contract source code
Contract ID Your deployed testnet contract address
Stellar Expert Link https://stellar.expert/explorer/testnet/contract/<CONTRACT_ID>
Short Description 2-3 sentences on what your contract does

Submit on the Rise In program page your facilitator shares for your campus stop, or browse programs at risein.com/programs.


Git Workflow Guide

Use this Git workflow during the bootcamp, including .gitignore setup. Submit using your own GitHub repository (not this bootcamp/facilitator repository).

1) Clone the Repository

  • macOS (Terminal):
git clone <facilitator-provided-repo-link>
cd <contract-folder>
  • Windows (PowerShell):
git clone <facilitator-provided-repo-link>
Set-Location <contract-folder>

2) Connect the Project to Your Own GitHub Repository

Create a new empty repository in your GitHub account first, then update origin to your own repo URL:

  • macOS (Terminal):
git remote -v
git remote set-url origin <your-github-repo-url>
git remote -v
  • Windows (PowerShell):
git remote -v
git remote set-url origin <your-github-repo-url>
git remote -v

Make sure origin points to your GitHub username/repo before pushing.

3) Add a .gitignore File

Create .gitignore to avoid committing build artifacts and secrets.

Recommended .gitignore content:

/target/
Cargo.lock
.DS_Store
.env
*.log
  • macOS (Terminal):
touch .gitignore
nano .gitignore
  • Windows (PowerShell):
New-Item -Path .gitignore -ItemType File -Force
notepad .gitignore

Track .gitignore in Git:

git add .gitignore
git commit -m "Add gitignore for Soroban project"

4) Create Your Branch

git checkout -b <your-name>-contract-submission

or

git checkout -b <your-name>-contract-submission

5) Stage and Commit Changes

git add .
git commit -m "Complete assigned Soroban contract"

or

git add .
git commit -m "Complete assigned Soroban contract"

6) Push to GitHub (Your Own Repo)

git push -u origin <your-name>-contract-submission

or

git push -u origin <your-name>-contract-submission

7) Useful Git Checks

git status
git log --oneline -n 5
git branch -vv

πŸ“ Required Repo Structure

For EC Contract Certificate:

contract/
└── src/
    β”œβ”€β”€ lib.rs
    └── test.rs

For Prize Pool Joiner Submission:

<project-root>/
β”œβ”€β”€ contract/
β”œβ”€β”€ frontend/
β”œβ”€β”€ backend/ (optional)
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ build-contract.sh
β”‚   β”œβ”€β”€ build-contract.ps1
β”‚   β”œβ”€β”€ deploy-testnet.sh
β”‚   └── deploy-testnet.ps1
β”œβ”€β”€ codes/
β”‚   β”œβ”€β”€ contract-snippets/
β”‚   β”œβ”€β”€ frontend-snippets/
β”‚   └── backend-snippets/
β”œβ”€β”€ learning/
β”‚   β”œβ”€β”€ hello-world/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   β”œβ”€β”€ rust-syntax/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   β”œβ”€β”€ variables-and-types/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   β”œβ”€β”€ conditionals-and-loops/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   β”œβ”€β”€ functions-and-errors/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   β”œβ”€β”€ state-storage/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   β”œβ”€β”€ events/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   β”œβ”€β”€ auth-and-admin/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   β”œβ”€β”€ maps-and-keys/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   β”œβ”€β”€ token-ledger-basics/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   β”œβ”€β”€ enums-and-matches/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   β”œβ”€β”€ structs-and-methods/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   β”œβ”€β”€ storage-ttl/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ lib.rs
β”‚   β”‚       └── test.rs
β”‚   └── scripts/
β”‚       β”œβ”€β”€ run-tests.sh
β”‚       └── run-tests.ps1
└── soroban-examples/
    β”œβ”€β”€ hello-soroban/
    β”‚   β”œβ”€β”€ Cargo.toml
    β”‚   └── src/
    β”‚       β”œβ”€β”€ lib.rs
    β”‚       └── test.rs
    β”œβ”€β”€ counter-storage/
    β”‚   β”œβ”€β”€ Cargo.toml
    β”‚   └── src/
    β”‚       β”œβ”€β”€ lib.rs
    β”‚       └── test.rs
    β”œβ”€β”€ auth-check/
    β”‚   β”œβ”€β”€ Cargo.toml
    β”‚   └── src/
    β”‚       β”œβ”€β”€ lib.rs
    β”‚       └── test.rs
    β”œβ”€β”€ events-demo/
    β”‚   β”œβ”€β”€ Cargo.toml
    β”‚   └── src/
    β”‚       β”œβ”€β”€ lib.rs
    β”‚       └── test.rs
    β”œβ”€β”€ simple-voting/
    β”‚   β”œβ”€β”€ Cargo.toml
    β”‚   └── src/
    β”‚       β”œβ”€β”€ lib.rs
    β”‚       └── test.rs
    └── scripts/
        β”œβ”€β”€ run-tests.sh
        └── run-tests.ps1

Each module under learning/ and soroban-examples/ should include its own Cargo.toml, src/lib.rs, and src/test.rs.


πŸ† Certificate Requirements

Requirement Status
βœ… Attend the bootcamp session Required
βœ… Complete the assigned smart contract Required
βœ… Pass cargo test with 3+ tests Required
βœ… Deploy contract to Stellar testnet Required
βœ… Submit on Rise In (repo + contract ID) Required

Certificates are typically issued within 3-5 business days after review.


πŸ”— Resources

Resource Link
Rise In Programs risein.com/programs
Stellar Docs developers.stellar.org
Soroban SDK docs.rs/soroban-sdk
Stellar CLI Docs developers.stellar.org/docs/tools/stellar-cli
Freighter Wallet freighter.app
Stellar Expert (Testnet) stellar.expert/explorer/testnet
Stellar Lab lab.stellar.org

πŸ‡΅πŸ‡­ About Stellar Philippines UniTour

The Stellar UniTour is a multi-campus roadshow: the same Stellar Smart Contract Bootcamp format travels to universities across the Philippines so more students can build and deploy on testnet with guided support. It is run in partnership with Rise In.


Questions? Ask your facilitator during the session or reach out via the Rise In platform.

About

Welcome to the Stellar Philippines Bootcamp 2026

Resources

Stars

159 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages