SubredditBattleRoyale is a battle royale token for subreddits to flex on each other, or for people to secure the void will win against subreddits. When a winner is found, a new and harder season is started.
- Start with 1_000_000 tokens. They cost 0.0001 ether to purchase.
- Tokens should be inscribed with a subreddit. It should always start with "/r/" followed by no less than one character.
- A "season" is won, when a subreddit has more tokens than "the void". After that, a new season starts. Old tokens still count, but new tokens are minted for the new season.
- You can also burn tokens, which will burn amount 3 times the amount of tokens of the specified subreddit.
- Look in to ERC20 tokens. Voting sessions for owners, or something like that?
- Consider Solana as a blockchain, and figure out equivalent of ERC-20 standard token for Solana.
- Should configure CORS on backend thru az cli deploy script, and same for backend URI env var for frontend.
- Check for wallet on mobile as well somehow. If possible, then show in architecture diagram.
- tailwind, make frontend pretty (and reactive to purchases and burns)
- Get token price and burn multiplier from blockchain, persist to backend, show in frontend
- If succesful, host with app-service or static web app or whatever that allows 'https://subredditbattleroyale.com' as domain name (static website only allows subdomains)
- Frontend
- Backend
- SubredditBattleRoyale smart contract on Ethereum mainnet
- SubredditBattleRoyale smart contract on Sepolia Ethereum testnet
- My wallet
- My test wallet
- read the ethereum whitepaper
- read about hardhat
- hardhat ignition
- hardhat verifying deploys
- Try deploy Lock.sol to testnet
- Read up on how to interact with smart contracts
- Try calling Lock.sol on testnet?
- Work on SubredditBattleRoyalesol
- Create tests for SubredditBattleRoyale.sol
- Figure out how to handle casing (subreddits are case insensitive right?)
- Figure out max subreddit length
- Test that _startNewSeason increases linearly over time, and that successive wins can occur
- Test that successive withdrawals can occur
- Add remaining folders/files from hardhat boilerplate
- Find rivaling subreddits, init contract with unequal amounts of coins to incentivize usage (add test for this) (heavy on crypto/tech sites).
- Allow the owner to adjust the burn multiplier as part of seasonal settings.
- Deploy to testnet
- Test that eth/gwei are sent to owner wallet, and that I have control over it (configure wallet during build/deploy to go to mine)
- (MAYBE) optimize _toLowerCase, or require in validation somehow?
- Deploy Lock.sol to mainnet
- Lower optimization all the way down for cheaper deployment
- Deploy to live
- Read up on the web3.js for interacting with the Ethereum Blockchain (maybe also ethers library)
- Buy 'subredditbattleroyale.com' domain
- Try withdrawing from the contract, and purchase more tokens afterwards
- Read up on: getting started, abi encoding, log streaming
- Add backend for blockchain events (logs). When frontend requests data, get new events since last block in db from blockchain and persist to db, then send to frontend.
- Create frontend: web3.js, ethers library, hardhat boilerplate project, web3 example app
- Figure out how to call smart contract seamlessly (purchasing, burning, withdrawing)
- Create diagram to show how blockchain, backend, database, frontend and wallet communicates
- github actions CI/CD for web app: tutorial
- github actions CI/CD for api azure functions set contractAddress & alchemyApiKey through github actions as az func app settings variables
- Add box around backend & frontend which illustrates they're hosted in azure (and maybe try make the diagram online?)
- setup DNS for frontend (and maybe backend as well?) (this didn't age well lol)
- sync void tokens from backend to frontend as well
- hook up frontend to backend (sync events), set CORS so only frontend can hit API
- Implement burnTokens
- refresh from backend every N seconds (add loading state) (setInterval?)
- Add d3.js to frontend
- Add 'Browser' to Browser box in architecture diagram
- burn/purchase tokens number picker
- Add a text detailing the rules of subreddit battle royale
- fix layout (bubblecloud take all horizontal space, use flex for other things) (comment out all css, then add back in iteratively)
- Make "connect", "purchase" and "burn" buttons prettier
- Create AI Logo (favicon.ico)
- Ads/marketing: google ads
- Ads/marketing: reddit ads
- delete subredditbattleroyale storage account from azure
- Remove reddit and google ads
- Debug backend
- add app insights logging
- Fix: "The monthly trial period is expired (date: 2025-03-01, version: 7.5.7.0). You can extend your trial by downloading the latest version as the beginning of every month. If you already have purchased a license, you can find more common causes of this problem here: https://dapper-plus.net/trial"
- add rate limiting (?)
- VSCODE (Hardhat extension for VSCODE) (development)
- npm (and npx)
- etherscan.io account
- metamask account (infura sepolia)
- metamask wallet & edge/chrome/firefox extension
- Alchemy faucet (used instead of Infura)
- To run .ts files: npx ts-node file.ts