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
- Next.js
- Chakra UI (includes @emotion/styled, which works like Styled Components)
- Web3React
- Web3 Modal
- Ethers
Configured with
- Typescript
- Linting with ESLint
- Formatting with Prettier
- Linting, typechecking and formatting on by default using
husky
for commit hooks - Testing with Jest and
react-testing-library
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