/bankless-academy

Bankless Academy

Primary LanguageTypeScriptMIT LicenseMIT

Bankless Academy

Project Links

  • Whitelabel: Build your own web3 educational platform in no time by leveraging Bankless Academy’s infrastructure.
  • Documentation: Understand how you can integrate Bankless Academy to your website.
  • FAQ: Frequently Asked Questions about Bankless Academy.
  • Sponsor: Sponsor a Bankless Academy lesson.
  • Gitcoin Grant: Donate on Gitcoin Grant to support the project.
  • Dework: Check for open tasks to help us improve Bankless Academy.
  • Jobs: Open job positions.

Tech Stack

Bootstrapped with

Configured with

Integrations

  • Gitcoin Passport for Sybil protection for lesson badges
  • Kudos to distribute lesson badges (SBTs / non transferable NFTs)

Local Development

yarn dev

Database

Wallet addresses, encrypted Passport stamps & lessson completions are stored in a PostgreSQL database. Database setup is only required for lesson badge distribution but not to run the app.

Setup

Setup and connection to database are done via Knex.js.

Config

DM DidierKrux.eth🏴#1559 on Discord if you need the configs to add to your .env.local file (see .env.example).

Migrations

Migration files: https://github.com/BanklessDAO/bankless-academy/tree/main/migrations

# Install Migration CLI
yarn global add knex
# Migrate to latest
knex migrate:latest
# Rollback the last batch of migrations
knex migrate:rollback
# add a new migration
knex migrate:make nameYourMigration

Data Tracking

Umami

Documentation + data tracked: https://www.notion.so/bankless/Analytics-with-Umami-4f867b3c808e483790db7db617cc51b6

MixPanel

User interactions tracked in the app:

Gitcoin Passport

We save the encrypted account username associated of each Passport stamp associated to an address to be able to dectect Sybils.

Hotjar

Heatmap recording via hotjar.com This helps us understand how a user interacts with the product in order to improve the user experience.

How to import content from Notion

Where to update the content

https://www.notion.so/bankless/1dd77eb6ed4147f6bdfd6f23a30baa46

Default content import command

yarn import-content

Import content with a specific Notion ID

yarn import-content 1dd77eb6ed4147f6bdfd6f23a30baa46

How does it work

The import script connects to a custom unofficial Notion API called Potion https://github.com/didierkrux/potion and transforms the content into this Object.

How to import keywords definitions from Notion

Note: import keywords before importing content.

Where to update the keywords

https://www.notion.so/bankless/623e965e4f10456094d17aa94ec37105

Default keywords import command

yarn import-keywords

Import keywords with a specific Notion ID

yarn import-keywords 623e965e4f10456094d17aa94ec37105

How to get started for devs

  • Get familiar with the project
  • Check open issues and assign yourself
  • Create and submit a PR
  • Assign @didierkrux as reviewers