Code Monkey home page Code Monkey logo

ledger-bootcamp's Introduction

Bootcamp Ledger / Bootcamp Deposit-Refund System

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.

Features

  • 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.

Components

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.)

Project Details

This project is generated with the create-solana-dapp generator.

Contributors

To be added

Getting Started

Prerequisites

  • 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

Development

  1. Make sure you are at localnet, build the anchor program and deploy it:
cd anchor
anchor build
  1. Open a termial:
solana-test-validator
  1. Open a terminal:
solana logs
  1. Open a terminal and run the web2 backend api server (make sure the environment of mongdb is ready):
cd web2-api
npm run dev
  1. Open another terminal and run the react app (make sure at the root directory):
npm run dev
  1. 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

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

ExpressJS Web2 backend

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

React App

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

License

This project is licensed under the MIT License.

ledger-bootcamp's People

Contributors

chochinlu avatar mikerniker avatar

Stargazers

shnae avatar

Watchers

 avatar

Forkers

mikerniker

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.