Skip to content

Xipzer/Whitelabel_Launchpad

Repository files navigation

Whitelabel Launchpad

Nabuto ($NBT) was a token project on Binance Smart Chain that launched in 2022. I was brought on as the developer to build the project's launchpad platform -- a system that would gate access to curated token launches behind a token-locking mechanism, incentivising holders to commit their tokens for a set duration in exchange for early access to new launches.

The platform was built as two interconnected modules: a token locker where holders lock their tokens for a chosen duration, and a launchpad that becomes accessible once the holder meets the minimum lock requirements. The locker supports locking, withdrawing, increasing, and extending locks. The launchpad surfaces upcoming launches with live countdowns, social links, and direct swap integration.

After the project concluded, I whitelabeled the platform into this repository -- a fully configurable, chain-agnostic launchpad that can be rebranded and deployed for any ERC-20 token project without modifying the source code. Everything is driven by environment variables.

How It Works

A 2-module system that gates launchpad access behind token locking:

  1. Token Locker -- Users connect their wallet and lock ERC-20 tokens for a chosen duration (1--12 months). They can increase their lock amount or extend the duration at any time. Withdrawal is only available after the lock expires.
  2. Launchpad -- Once a user meets the minimum token and duration thresholds (or is whitelisted), they gain access to a curated feed of upcoming launches with live countdowns, social links, market data, and direct swap/chart links.

Setup

Frontend

npm install
npm run dev

Backend

cd rest_api
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Local development (SQLite) -- no MySQL needed:

python seed.py          # creates launches.db with sample data
python main.py          # starts Flask dev server on :5000

Production (MySQL) -- set DATABASE_HOST and related env vars:

gunicorn -c gunicorn_config.py main:app

When DATABASE_HOST is not set, the API automatically uses SQLite. When it is set, it connects to MySQL.

Environment Variables

Copy .env.example to .env and fill in the required values. See the example file for all configuration options.

Architecture

User Browser (React + wagmi + viem)
     |
     |-- viem (contract reads: balance, lock status)
     |-- wagmi (wallet connect/disconnect, tx signing)
     |-- axios (GET /launch with API key)
     v
Flask REST API (rest_api/)
     |
     |-- SQLite (local dev) or MySQL (production)
     v
ERC-20 Smart Contract (on-chain)
     |
     |-- lockInitialTokens, withdrawTokens, extendTokenLockBySeconds
     |-- lockAdditionalTokens, getLockedTokenAmount, getRemainingTokenLockTime
Component Tech Description
src/ React 18, Vite, Chakra UI, wagmi, viem, Redux Toolkit Frontend locker and launchpad interface
rest_api/ Flask, SQLite/PyMySQL, gunicorn Launch listing CRUD REST API

License

MIT License. See LICENSE for details.

Author

Built by Xipz

About

Whitelabel token launchpad and locker platform, originally built for Nabuto ($NBT) on Binance Smart Chain.

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors