A mini deposit-refund system for Encode Club that enables users to deposit 250 USDC from any platform and automatically receive a refund based on specific conditions.
- Refund Condition: Users are eligible for a refund if they meet a minimum 90% attendance requirement.
- Authorization: Authorized Encode Club accounts can approve refund requests.
Smart Contract for Deposit and Refund
Manages the logic for depositing USDC, tracks attendance, and processes refunds.
Frontend Application
Interfaces with the smart contract for users and staff. Allows users to deposit USDC, view their attendance, and check refund status. Authorized accounts can verify and approve refunds.
Oracles or Integrations for Attendance Tracking
Tracks and records attendance data, likely interfacing with the educational platform's backend. (Note: Oracles may be needed for this integration.)
This project is generated with the create-solana-dapp generator.
To be added
-
Node v18.18.0 or higher
-
Rust v1.70.0 or higher
-
Anchor CLI 0.29.0 or higher (we use 0.29.0 here)
-
Solana CLI 1.17.0 or higher
- Make sure you are at localnet, build the anchor program and deploy it:
cd anchor
anchor build
- Open a termial:
solana-test-validator
- Open a terminal:
solana logs
- Open a terminal and run the web2 backend api server (make sure the environment of mongdb is ready):
cd web2-api
npm run dev
- Open another terminal and run the react app (make sure at the root directory):
npm run dev
- open http://localhost:3000 and make sure you have installed the browser wallet plugin like Phantom, set it to the development and use the local network
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
We use MongoDB as the backend database.
You can host MongoDB by yourself, or use the cloud solutions like mongodb atlas
Create a .env
file at the web2-api
directory:
DB_PASSWORD=[DB_PASSWORD]
Modify the connection string at web2-api/index.js
(TODO)
Then:
cd web2-api
npm run dev
Add the organizer:
cd web-api
npm run manage
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
This project is licensed under the MIT License.