Code Monkey home page Code Monkey logo

solana-attendance-deposit-dapp's Introduction

Solana Attendance Deposit Dapp

Overview

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.

Components

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.

Anchor Source

Interaction Flow

  1. Course Manager ➡️ Creates courses ➡️ Specifies required deposit and number of lessons in course
  2. Students ➡️ Register courses ➡️ Deposit Funds (SPL tokens)
  3. Course Manager ➡️ Creates lessons and sets a deadline for logging attendance
  4. Students log their attendance for every lesson before the deadline
  5. If students miss the deadline, students are marked absent
  6. When the number of lessons created equals the number of lessons specified when creating the course, the course is considered completed.
  7. Students can withdraw their deposit after the course is completed if all of their attendances are checked.

Getting Started

Prerequisites

  • 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

Installation

Clone the repo

git clone <repo-url>
cd <repo-name>

Install Dependencies

npm install

Start the web app

npm run dev

Apps

anchor

This is a Solana program written in Rust using the Anchor framework.

Commands

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.

Sync the program id:

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

Build the program:

npm run anchor-build

Start the test validator with the program deployed:

npm run anchor-localnet

Run the tests

npm run anchor-test

Deploy to Devnet

npm run anchor deploy --provider.cluster devnet

web

This is a React app that uses the Anchor generated client to interact with the Solana program.

Commands

Start the web app

npm run dev

Build the web app

npm run build

solana-attendance-deposit-dapp's People

Contributors

chochinlu avatar mikerniker avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.