Skip to content

RasmusEdvardsen/SubredditBattleRoyale

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

291 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SubredditBattleRoyale

Frontend & Backend Azure CI

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.

architecture

Game summary

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

Future ideas (Clean up this mess)

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

Progress

TODO

  • 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 (?)

Installation and preparation

Ethereum

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

Notes

  • To run .ts files: npx ts-node file.ts

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors