# ⚔️ Raid Guild Proposal <> Titan Maker ⚔️ - November 2022

### Scope of work:
Raid Guild will design & develop the Smart Contracts, CMS, and develop the UI for Titan Maker, an NFT Game Launchpad focusing on the Cronos EVM Ecosystem.
### Timeline:
**Project Start:** Dec 15th 2022 *Escrow must be completed by this date
**Project End:** March 15th 2023
*These are estimates based on if deliverables are recieved in a timely manner.
## Current Client Provided Assets
- [Figma](https://www.figma.com/file/nUilhkuXx3GbHgiuBSZpCc/Launchpad-v1?node-id=1724%3A740&t=SESeLmTddPT50k76-0) file of all UI designs except for TitanMaker Team CMS
- [DAO Maker](https://daomaker.com/) as a competitor's/reference model
- [Send In Blue](https://www.sendinblue.com/) email service with API keys + docs
## Features
### Website Pages / Page Templates
#### Global
- Header
- Dropdown States
- Footer
#### Home
- Featured Content Slide
- Project Launching Soon Section
- Display card grid view of `Upcoming Project` records
- Card
- Image
- Title
- 2 Line Description
- Up to 4 social links (Website, Discord, Telegram, Twitter)
- Learn More link to project page
- Pagination
- Launched Project Table
- Display table view of `Launched Project` records
- Filter table view by specific tags
- All
- Web3
- Defi
- Layer2
- Metaverse
- Move to earn
- Gaming
- DAO
- Sort by
- Name (A-Z, Z-A)
- Participants (Hi-Lo, Lo-Hi)
- Total Raised (Hi-Lo, Lo-Hi)
- Current Price (Hi-Lo, Lo-Hi)
- Ended Date (Hi-Lo, Lo-Hi)
- Search
- String for name
- Paginate Results
- Collect Leads
- Link to application form for IDO offers
- Subscribe email for token purchasers
#### Project Page
- Hero
- Display Project Title, Project Description, Social Links, and Apply For Sale Button
- Display Token Logo, Token Ticker, Network (Preset Networks from choice in CMS), Token Supply, Projected Valuation, Initial Token Circulation, Initial Market Cap, Background Image
- Product Details (stored as an array of Json objects)
- JSON Structure: ``` [{ heading: "Example Heading Value", body: "Markdown Goes Here"},{ heading: "Example Second Heading Value", body: "Markdown Goes Here"} ]```
- Sidebar of Headings, when clicked change body of scrollable Markdown container
- Road Map (stored as an array of Json objects)
- JSON Structure: ``` [{ heading: "Example Heading Value", body: "Markdown Goes Here"},{ heading: "Example Second Heading Value", body: "Markdown Goes Here"} ]```
- Sidebar of Headings, when clicked change body of scrollable Markdown container
- Team & Partners (stored as an array of Json objects)
- JSON Structure: ``` [{ heading: "Example Heading Value", body: "Markdown Goes Here"},{ heading: "Example Second Heading Value", body: "Markdown Goes Here"} ]```
- Sidebar of Headings, when clicked change body of scrollable Markdown container
- Tokenomics (stored as an array of Json objects)
- JSON Structure: ``` [{ heading: "Example Heading Value", body: "Markdown Goes Here"},{ heading: "Example Second Heading Value", body: "Markdown Goes Here"} ]```
- Sidebar of Headings, when clicked change body of scrollable Markdown container
Details Panel will have two sections:
1) Top and Sidebar nav
2) Markdown Viewer
#### Sales Page
##### Apply For Sales Flow
- Pull Data specific project data from DB
- Icon
- Title
- Short Description
- Sales Details
- Token Ticker
- Address Copy & Paste / Add to Metamask
- Ask user to connect wallet
- Scan wallet for any `tickets`
- If user holds `tickets`, offer to Redeem Ticket
- If user redeems `ticket`, store in `Project`'s `Confirmed Users` array
- If user holds no tickets or elects to not redeem ticket, store in `project`'s `Unconfirmed Users` array
- After submitting user, display confirmation page
**NOT SCOPED BUT REQUIRED AS PER DESIGN DOC**
- Direct user to either login or account creation if not logged in
- If logged in, ask user to select verified wallets to apply with
- If logged in and not KYC'd, alert user they must complete KYC or wait for KYC to be completed
##### Sales Flow
- Display All project metadata as per design doc
- Plus amount sold (not live)
- Plus % sold (calculated from amount sold x total supply as per db record)
- Buy Panel
- Ask user to connect wallet
- Verify wallet's ability to mint as per projects confirmed users array
- Stablecoin dropdown (BUSD, USDT, USDC)
- Display balanceOf for each Stablecoin Address
- Price field (uneditable)
- Amount field (uneditable, stateful depending on below slider)
- Slider to move through [20%, 40%, 60%, 80%, 100%] of user's allotted supply
- Total field (uneditable, stateful depending on above slider * price)
- Buy Button (executes tx based on stateful parameters)
- Add to metamask button
- Link to deployed smart contract
- If sold out, Display only Token Symbol, Ticker, Link to deployed smart contract, link to add to metamask, and balanceOf smart contract address
- Plus link back to home to explore other projects
- After user completes purchase, Display only Token Symbol, Ticker, Link to deployed smart contract, link to add to metamask, and balanceOf smart contract address
- Plus link to claim page
#### Staking Page
Staking page drawing needs updating. Indicates APY emission for staking, but client indicated staking rewards simply increase Whitelist allocation likelihood.
- Read how much TitanMaker coin user has staked
- Allow user to withdraw coin
- Allow user to deposit coin
- Use same slider UI as Sales Page described above in `Buy Panel`
### Back End CMS
- `Featured Content` Table
- ID
- Order-ID (1-5)
- Image
- Project Title
- Array of Links
- Learn More Link Location
- `Projects` Table
- ID
- Metadata
- Project Title
- Project Cover Image
- Project 2 Line Description
- Array of Social Links
- Token Data
- Token Name
- Token Ticker
- Token Address
- Sales Contract Implementation Address
- Network
- Preset Networks with Dropdown
- Total Raised
- Amount Sold
- TGE Finished Time
- TGE Start Time
- Background Image Upload
- Contract Data
- Token Address
- Amount Allotted per Ticket List (Gold, Diamond, Platinum)
- `Project Details` Table
- Project ID (Key to project table)
- Metadata
- Token Logo, Token Ticker, Network, Token Supply, Projected Valuation, Initial Token Circulation, Initial Market Cap
- Product Details
- Array of {heading, body} JSON
- Road Map
- Array of {heading, body} JSON
- Team & Partners
- Array of {heading, body} JSON
- Tokenomics
- Array of {heading, body} JSON
- `Project Users` Table
- Project ID (Key to project table)
- Confirmed Users
- `[{address, amount}]` array
- Unconfirmed Users
- `[{address, timestamp}]` array
### Admin / CMS
#### Hero / Featured Content Manager
- 5 Identical Forms containing Order Index, Image, Title, Array of Social Links, Brief Description, and Learn More Link
- Save button that saves to DB
#### Project -> Create
- Create a new project, supply with all data described in `Projects` & `Project Details` tables
- Also launches either ERC721 TitanMaker Sales Contract or ERC20 depending on token details populated with same form
#### Project -> Edit
- Edit a project saved in DB, allowing access to each item in `Projects` & `Project Details` tables
- Submit any relevant data to smart contract on save
#### Project -> Delete
- Delete a project saved in DB
- Cannot delete smart contracts, but will be unsearchable/unusable otherwise
#### Project -> Smart Contract Edit
- Allow Data Scientist to upload {address, amount} tuple array to DB and Smart Contract
- Divesting controls
### Smart Contracts
#### Tickets
- Standard ERC1155 implementation
- 3 Items (Gold, Diamond, Platinum)
- Transferable to Sales Contract, ie Burnable for guaranteed Allowlist (handled off contract)
- Mintable for variable prices
#### TitanMaker Factory Deployer Contract
- Collects information to pass as args to Sales Implementation contracts
- If Token is ERC20 or ERC721
- Token Address
- Total Supply expected
- Price per Token
- TGE Time (Unix Epoch)
- Team wallet address (IDO Partner)
- How many tokens per Gold, Diamond, or Platinum Ticket
#### ERC20 TitanMaker Sales Contract
- RBAC Tooling (Admin, Roles to share access to and manage specific variable controls)
- `tokenAddress` variable to hold the ERC20 Token address (editable)
- Receives and holds `tokenAddress` ERC20 Tokens
- `Price` variable per token (editable)
- `Trade` function that accepts BUSD, Tether, USDC in exchange for token at `Price`
- `Swap` function that converts all stablecoins to one type
- `amountPurchased(address => uint256)` mapping that tracks how many tokens a user purchased
- `Refund` function that returns the core Stablecoin to the user in exchange for the `expected` ERC20 Token, not in excess of `amountPurchased`
- `Divest` function that TitanMaker team can call to send arbitrary stable amounts to IDO team (accepts uint256 `amount`)
#### ERC721 TitanMaker Sales Contract
- RBAC Tooling (Admin, Roles to share access to and manage specific variable controls)
- `tokenAddress` variable to hold the ERC721 Token address (editable)
- Receives and holds `tokenAddress` ERC721 Tokens
- `Price` variable per token (editable)
- `Trade` function that accepts BUSD, Tether, USDC in exchange for token at `Price`
- `Swap` function that converts all stablecoins to one type
- `purchasedTokens(address => uint256[])` mapping that tracks which tokens a user minted
- `Refund` function that returns the core Stablecoin to the user in exchange for the `expected` ERC721 Tokens, as per `purchasedTokens`
- `Divest` function that TitanMaker team can call to send arbitrary stable amounts to IDO team (accepts uint256 `amount`)
#### ERC20 TitanMaker Coin Contract
- Standard ERC20 contract
- Need initial emission schedule from client
- Need max supply from client
#### TitanMaker Staking Contract
- Allow user to Send above TitanMaker coin and no others
- Return the number of TitanMaker coins a user has staked
## Pricing & Timelines
Timelines are presented in both time and dollar costs - Dollar costs are fixed estimates, time costs are not-fixed estimates. Time costs are meant as an estimation for feature completion scheduling/divestment for each feature.
Features may take longer than estimated.
Time estimates are unrelated to cost estimates - different tasks have different complexity and attention requirements, some tasks are easy but need a lot of review and some tasks simply require many hours of focus. There is no hourly rate.
### Website
#### Client Side
Client Side rendering depends on Data availability and should be done after Admin/CMS
- **Develop Chakra UI Theme + Common Components** - 1,000 DAI half week
- **Home** - 2,500 DAI 2 weeks
- **Project Details Template** - 1,750 DAI half week
- **Project Sales Template** - 2,500 DAI 1 week
- **ERC20 Staking Page** - 2,000 DAI 1 week
#### Admin/CMS
- **Hero/Featured Content Manager** - 1,750 DAI half week
- **Project Create, Update, Delete integration** - 1,750 DAI 1 week
- **Project Smart Contract Deployment, Interaction, Editing** - 1,750 DAI 1 week
### Backend
- **Setup, Deployment, Connecting API Keys to Front End** - No Charge
### Smart Contracts
- **Tickets**: 5,000 DAI 1 week
- **TitanMaker Factory Deployer Contract**: 6,500 DAI 2 weeks
- **ERC20 TitanMaker Sales Contract** + **ERC721 TitanMaker Sales Contract**: 6,500 DAI 2 weeks
- **Titanmaker ERC20 coin** + **TitanMaker Coin Staking Contract**: 2,000 DAI 1 week
### Total: 35,000 DAI
### Total Man Hours: 13.5 weeks
### Estimated Completion Time: March 15th 2023
Must be completed in a specific order (estimates based on Dec 15 start):
1) Smart Contracts (estimated delivery: Jan 15)
3) Admin/CMS (estimated delivery: Feb 15)
4) Consumer Side (estimated delivery: March 15)
## Excluded from current scope
- User Account Management ($3,000 DAI / 2 week estimate)
- Signup/Login Flow ($4,000 DAI / 2 week estimate)
- KYC ($1,000 DAI estimate / 1 week)
- Bridge ($4,000 DAI estimate / 3 week estimate)
- Claim Page (No Drawing, unsure)