This is a Solana program that allows users to deposit funds into a program account and then withdraw them after meeting two conditions:
- Payment will be returned after a lock-in period, specified by the course manager (ex. after the last day of classes).
- Student has to check-in within a given timeframe and have 100% attendance.
The program is designed to be used as a way to incentivize attendance at events, such as courses, hackathons or meetups.
Smart Contract for Deposit and Refund
- Manages the logic for depositing USDC and processes refunds.
This project is generated with the create-solana-dapp generator.
- Course Manager ➡️ Creates courses ➡️ Specifies required deposit and number of lessons in course
- Students ➡️ Register courses ➡️ Deposit Funds (SPL tokens)
- Course Manager ➡️ Creates lessons and sets a deadline for logging attendance
- Students log their attendance for every lesson before the deadline
- If students miss the deadline, students are marked absent
- When the number of lessons created equals the number of lessons specified when creating the course, the course is considered completed.
- Students can withdraw their deposit after the course is completed if all of their attendances are checked.
-
Node v18.18.0 or higher
-
Rust v1.70.0 or higher
-
Anchor CLI 0.29.0 or higher
-
Solana CLI 1.17.0 or higher
git clone <repo-url>
cd <repo-name>
npm install
npm run dev
This is a Solana program written in Rust using the Anchor framework.
You can use any normal anchor commands. Either move to the anchor
directory and run the anchor
command or prefix the command with npm run
, eg: npm run anchor
.
Running this command will create a new keypair in the anchor/target/deploy
directory and save the address to the Anchor config file and update the declare_id!
macro in the ./src/lib.rs
file of the program.
You will manually need to update the constant in anchor/lib/basic-exports.ts
to match the new program id.
npm run anchor keys sync
npm run anchor-build
npm run anchor-localnet
npm run anchor-test
npm run anchor deploy --provider.cluster devnet
This is a React app that uses the Anchor generated client to interact with the Solana program.
Start the web app
npm run dev
Build the web app
npm run build