UnderMail aims to provide mailchimp like features to collect, distribute and analyze cNFTs.
UnderMail is powered by UnderDog's state of the art cNFT services.
UnderMail takes away chain complexities and provides you with an easy to use interface to mint your cNFTs.
Demo (Must Watch)
UnderMail is live on Mainnet. Checkout:
Mainnet
Dennet
UnderMail supports payments vis Stripe. Checkout the pricing
- Project Creation: Users can create projects and mint as much as cNFTs as they want
- Bulk Minting: Users can upload CSV file or paste in bulk addresses to mint cNFTs to.
- Analytics: Each minted cNFT has a unique URL that the users can visit to mark the NFT as viewed. The viewes list can be seen on the dashboard. Each project has a view page that lists all availabe NFTs for user which get marked as viewed when user clicks on the nft. Each project also has a Plausible dashboard that presents enhanced analytics.
- Mint History: UnderMail shows you all of your mints in once place grouped per project.
- No Chain Complexities: You don't have to pay in crypto or bothered with the chain in any manner, UnderMail does it all for you. You simple create projects and mint.
https://undermail-five.vercel.app/project/<proj-id>/view/wallet
The following things are work-in-progress and will be available in upcoming releases of UnderMail. Stay tuned.
- Embeddable HTML Components: Components to copy paste that can be added to your site to collect addresses to mint cNFTs to.
- Integration with Google Sheets: Import addresses directly from your Google Sheets. This might also be an API & a Google Sheets addon to mint directly from Google Sheets. [Needs Dicsussion], feel free to hop in the discussion in the issue.
- Optional
Viewed
cNFT drop: Receivers get an aditional cNFT when they visit the analytics link in their primary cNFT.
UnderMail is not looking for additional contributors at the moment. Please open an issue and discuss whatever you have in mind.
UnderMail us built using the following tech:
- Sveltekit
- Supabase: Auth, DB, Storage
- UnderDog API
- Vercel
- IDE: MS Word
.
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── components.json
├── package.json
├── pnpm-lock.yaml
├── postcss.config.js
├── src
│ ├── app.css
│ ├── app.d.ts
│ ├── app.html
│ ├── hooks.server.ts
│ ├── lib
│ │ ├── components
│ │ │ ├── navbar
│ │ │ │ ├── index.ts
│ │ │ │ └── navbar.svelte
│ │ │ └── ui
│ │ │ ├── alert-dialog
│ │ │ │ ├── alert-dialog-action.svelte
│ │ │ │ ├── alert-dialog-cancel.svelte
│ │ │ │ ├── alert-dialog-content.svelte
│ │ │ │ ├── alert-dialog-description.svelte
│ │ │ │ ├── alert-dialog-footer.svelte
│ │ │ │ ├── alert-dialog-header.svelte
│ │ │ │ ├── alert-dialog-overlay.svelte
│ │ │ │ ├── alert-dialog-portal.svelte
│ │ │ │ ├── alert-dialog-title.svelte
│ │ │ │ └── index.ts
│ │ │ ├── avatar
│ │ │ │ ├── avatar-fallback.svelte
│ │ │ │ ├── avatar-image.svelte
│ │ │ │ ├── avatar.svelte
│ │ │ │ └── index.ts
│ │ │ ├── button
│ │ │ │ ├── button.svelte
│ │ │ │ └── index.ts
│ │ │ ├── card
│ │ │ │ ├── card-content.svelte
│ │ │ │ ├── card-description.svelte
│ │ │ │ ├── card-footer.svelte
│ │ │ │ ├── card-header.svelte
│ │ │ │ ├── card-title.svelte
│ │ │ │ ├── card.svelte
│ │ │ │ └── index.ts
│ │ │ ├── dropdown-menu
│ │ │ │ ├── dropdown-menu-checkbox-item.svelte
│ │ │ │ ├── dropdown-menu-content.svelte
│ │ │ │ ├── dropdown-menu-item.svelte
│ │ │ │ ├── dropdown-menu-label.svelte
│ │ │ │ ├── dropdown-menu-radio-group.svelte
│ │ │ │ ├── dropdown-menu-radio-item.svelte
│ │ │ │ ├── dropdown-menu-separator.svelte
│ │ │ │ ├── dropdown-menu-shortcut.svelte
│ │ │ │ ├── dropdown-menu-sub-content.svelte
│ │ │ │ ├── dropdown-menu-sub-trigger.svelte
│ │ │ │ └── index.ts
│ │ │ ├── input
│ │ │ │ ├── index.ts
│ │ │ │ └── input.svelte
│ │ │ ├── label
│ │ │ │ ├── index.ts
│ │ │ │ └── label.svelte
│ │ │ ├── popover
│ │ │ │ ├── index.ts
│ │ │ │ └── popover-content.svelte
│ │ │ ├── sheet
│ │ │ │ ├── index.ts
│ │ │ │ ├── sheet-content.svelte
│ │ │ │ ├── sheet-description.svelte
│ │ │ │ ├── sheet-footer.svelte
│ │ │ │ ├── sheet-header.svelte
│ │ │ │ ├── sheet-overlay.svelte
│ │ │ │ ├── sheet-portal.svelte
│ │ │ │ └── sheet-title.svelte
│ │ │ ├── table
│ │ │ │ ├── index.ts
│ │ │ │ ├── table-body.svelte
│ │ │ │ ├── table-caption.svelte
│ │ │ │ ├── table-cell.svelte
│ │ │ │ ├── table-footer.svelte
│ │ │ │ ├── table-head.svelte
│ │ │ │ ├── table-header.svelte
│ │ │ │ ├── table-row.svelte
│ │ │ │ └── table.svelte
│ │ │ ├── tabs
│ │ │ │ ├── index.ts
│ │ │ │ ├── tabs-content.svelte
│ │ │ │ ├── tabs-list.svelte
│ │ │ │ └── tabs-trigger.svelte
│ │ │ └── tooltip
│ │ │ ├── index.ts
│ │ │ └── tooltip-content.svelte
│ │ ├── index.ts
│ │ ├── utils.ts
│ │ └── vercel.ts
│ └── routes
│ ├── (auth)
│ │ └── login
│ │ └── +page.svelte
│ ├── (private)
│ │ ├── +layout.server.ts
│ │ ├── +layout.svelte
│ │ ├── +layout.ts
│ │ ├── account
│ │ │ └── billing
│ │ │ ├── +page.server.ts
│ │ │ └── +page.svelte
│ │ ├── api
│ │ │ ├── mint
│ │ │ │ └── +server.ts
│ │ │ ├── project
│ │ │ │ └── +server.ts
│ │ │ ├── stripe
│ │ │ │ ├── cancel
│ │ │ │ │ └── +server.ts
│ │ │ │ ├── checkout
│ │ │ │ │ └── +server.ts
│ │ │ │ └── success
│ │ │ │ └── +server.ts
│ │ │ └── view
│ │ │ └── [projectId]
│ │ │ └── [address]
│ │ │ └── +server.ts
│ │ ├── dashboard
│ │ │ ├── +page.server.ts
│ │ │ └── +page.svelte
│ │ └── project
│ │ └── [...projectId]
│ │ ├── +layout.server.ts
│ │ ├── +layout.svelte
│ │ ├── +page.server.ts
│ │ ├── +page.svelte
│ │ ├── analytics
│ │ │ ├── +page.server.ts
│ │ │ └── +page.svelte
│ │ ├── history
│ │ │ ├── +page.server.ts
│ │ │ └── +page.svelte
│ │ ├── mint
│ │ │ ├── +page.server.ts
│ │ │ └── +page.svelte
│ │ └── view
│ │ ├── +page.svelte
│ │ ├── [...mintId]
│ │ │ ├── +page.server.ts
│ │ │ └── +page.svelte
│ │ └── wallet
│ │ ├── +layout.svelte
│ │ ├── +page.server.ts
│ │ └── +page.svelte
│ ├── +layout.server.ts
│ ├── +layout.svelte
│ ├── +layout.ts
│ ├── +page.svelte
│ ├── 404
│ │ └── +page.svelte
│ ├── auth
│ │ ├── +server.ts
│ │ ├── cb
│ │ │ └── +server.ts
│ │ └── logout
│ │ └── +server.ts
│ └── pricing
│ └── +page.svelte
├── static
│ ├── bg.gif
│ ├── bg.mp4
│ ├── favicon.ico
│ └── um.png
├── svelte.config.js
├── tailwind.config.js
├── tsconfig.json
└── vite.config.ts