holaplex / holaplex Goto Github PK
View Code? Open in Web Editor NEWHolaplex.com | Find, buy, and sell NFTs from incredible creators on Solana.
Home Page: https://holaplex.com
License: GNU Affero General Public License v3.0
Holaplex.com | Find, buy, and sell NFTs from incredible creators on Solana.
Home Page: https://holaplex.com
License: GNU Affero General Public License v3.0
When users create or edit stores, don't allow subdomains that
hmm, that should cover it I guess?
Let's let users discover secondary sales more easily. A well designed badge and a filter option would help a ton!
Add metadata to the /profiles/:pubkey page so that renders a meaningful preview when shared on social media.
Good things to include in sharing preview
Avatar of user
Name of user if connected twitter handle
Currently, stringifyNotarized uses signature.toString('base64') to convert the signature to base64 string.
Most(if not all) wallets return signatures as Uint8Arrays with the prototype of TypeArray, which does not provide the toString(base) functionality. (Phantom uses a different type, hence you can do Uint8Array.toString('base64')).
Use Buffer.from(signature).toString('base64') to fix this for other wallets.
In src/modules/notary/client.ts
Current
export const stringifyNotarized = <T>({
payload,
signature,
}: Notarized<T>): JsonString<NotarizedStr<T>> =>
jsonStringify({ payload, signature: signature.toString('base64') as SignatureStr });
Recommended
export const stringifyNotarized = <T>({
payload,
signature,
}: Notarized<T>): JsonString<NotarizedStr<T>> =>
jsonStringify({ payload, signature: Buffer.from(signature).toString('base64') as SignatureStr });
Make about + help dropdowns into accordions in mobile navigation
Compress 'Mint NFTs' and 'Edit store' / 'New store' links into a dropdown on desktop and accordion on mobile navigation. Only show create dropdown and options when a wallet is connected. Determine whether the wallet has a storefront or not and display either 'Edit store' or 'New store'. Design: https://www.figma.com/file/DC1T92jSoSIw9rvvEJytNK/Profiles---MVP?node-id=4474%3A8720
User can list their owned NFT from their profile.
https://github.com/holaplex/marketplace/blob/dev/src/components/SellNft/index.tsx#L43
https://www.figma.com/file/8WjVJW9fa2rwGctm7ZVaCT/Design-System?node-id=4249%3A76487
The admin page disappears after a few seconds for all creators who try to unwind an NFT from there.
This issue is likely universal, which means any creator who experiences a failure during listing also loses access to their NFTs.
Currently users go through an awkward flow when they create a storefront. They have to run a solana transaction from the admin panel.
New flow. User builds store.User runs the init transaction.User is taken to the create art section of the storefront.
DAO managers can create a marketplace from Holaplex picking a subdomain, specifying creator wallets for the marketplace, etc.
The scrolling on holaplex.com is a bit sluggish. We might be able to improve it with https://reactnative.dev/docs/virtualizedlist.
The relevant code is in pages/index.tsx#600. Let's see if we can make it faster and smoother using the virtualizedList, or another method.
Create the path:
holaplex.com/nfts/[nftAddress].tsx
Here is the NFT interface on the backend:
https://github.com/holaplex/solana-indexer/blob/dev/crates/graphql/src/schema/objects/nft.rs#L136
And here is the current Frontend:
https://github.com/holaplex/marketplace/blob/dev/src/types.d.ts#L52
Apparently we already have a we have a { nft(address: "") { ... } }
query, please make that available for consumption on the holaplex.com frontend first. Then we'll look into porting over the NFT details page from marketplaces.
Sticky pfp section on scroll
Overall
On desktop screen sizes, change profile banner image height to 16rem (if it is not this size already)
On mobile screen sizes, change profile banner image height to 10rem
Currently looks like:
On desktop screen sizes, make activity images 80pxX80px
If connected and viewing own profile, make 'You' and SOL amounts Grey 300. Only pubkeys, NFT names and store names should be white and all should link to profiles / storefronts accordingly
In all activity events, show the square image of the NFT or listing that was interacted with instead of the round pfp of a wallet (except for follow events)
Activity tab empty state container should be the same width as the tabs bar
Add local search to activity
https://www.figma.com/file/LOgxgF3XOa8mNG7yDocSJn/Global-search?node-id=0%3A1
Add a search bar to holaplex discovery tool
Users can search for stores and NFTs based on:
As the user enters text possible results should appear
No way to easily get back to home / top when you are near the bottom of the infinite scroll listings
Add a link to home (maybe that calls scrollToTop
) in the sticky Current Listings div
The builder should be using this.
https://github.com/solana-labs/wallet-adapter
Change FAQ Header → “Support” with dropdown menu:
Outbound link tracking
As collectors are thumbing through active listings on the twitter handle of the storefront is displayed user.
The graphql api takes an image(size: param) . Use that to make requests faster.
Current call to action is "redeem bid" if you won the auction. Change that to "Claim NFT".
https://moonsnft.holaplex.com/listings/Fo6QrAQaqVFzzAsMjKSbq3HYvyMesJ8YTpwYmTDSRFhe/billing
This was an auction where the optional Participation NFTs being sold for 2 sol. Two participants chose to redeem that.
Auction creator can't redeem that 4 sol now, which is stuck in the escrow.
Here's what the creator sees when they try to settle funds-
https://solscan.io/tx/38sMv1cKkx3Nxq9MDASZN8iH32ezsj3Rt3RXghiUAqDycWXE4kAestvnu5GwKgqXiSy8eEvBptEDP1G11eNKyZFR
These participation NFTs were minted by a different wallet and I had the creator try to settle funds using that wallet too, but they're seeing the same error-
We need a cookie banner for
Problem:
Goal:
Questions:
Hi all, i've deployed my store but i can't find out to change the auction tocken (which is SOL by default) into my own token.
How can i manage that ? Is this possible ?
Thanks
Holaplex engineers can patch storefront json of a storefront by executing a yarn command on a server with access to arweave private key.
yarn run storefronts:update /path/to/storefront.json
https://github.com/holaplex/holaplex/blob/dev/src/modules/arweave/client.ts#L237
The css string can be empty. No longer used. Ideally save the json contents to the data
When a store owner or white listed creator goes to create an NFT the bulk minter on is launched
An individual auction page has a shorter auction time than what is stated on the home page.
example: https://celestialbody.holaplex.com/listings/7JAZCtspZQ52x6vmadAsfEjvenreUZ19BghgVR3aDdgy vs homepage listing.
Design QA pointers/measurement pics: https://www.figma.com/file/MxzeTx3eaLDISbxRBuI9JU/Miscellaneous?node-id=212%3A12421
NFT Detail design file: https://www.figma.com/file/snKvxHcJI50oFduGsVvsoi/?node-id=0%3A1
Hide attributes accordion completely if NFT has no attributes
For aspect ratios 1:1, 3:2, 5:4 use this standard layout - but for wider aspect ratios like 4:3, 16:9, wrap the NFT detail elements and set to full width so that image is centred and optimized. Example:
Dropdown menu
Attributes containers
If there are a big number of tokens in users wallet, loading of NFTs fail.
bn.js:6 Uncaught (in promise) Error: Number can only safely store up to 53 bits
at r (bn.js:6:21)
at _t.o.toNumber (bn.js:547:7)
at t.loadMetadataForUsers (loadAccounts.js:48:46)
at index.tsx:38:35
at l (runtime.js:45:40)
at Generator._invoke (runtime.js:274:22)
at Generator.P.forEach.e. [as next] (runtime.js:97:21)
Need to hook into the getServerSideProps function and extract query params from there.
Look into making this generalizable so we can add it in storefronts as well
Users can't seem to remove banner or PFP from storefront edit, but actually it's just that the remove icon blends in with the background.
Target the icon and fix it wit CSS. I tried a bit initially, but didn't find the right level to target / get the colour to propagate.
Relevant code is in /pages/storefronts/edit at the code below
<Form.Item
label="Banner"
name={['theme', 'banner']}
tooltip="Sits at the top of your store, 1500px wide and 375px tall works best!"
rules={[{ required: false, message: 'Upload your Banner.' }]}
>
<Upload>
{(isEmpty(values.theme.banner) ||
!ifElse(
has('response'),
view(lensPath(['response', 'url'])),
prop('url')
)(values.theme.banner[0])) && (
<Button block type="primary" size="middle" icon={<UploadOutlined />}>
Upload Banner
</Button>
)}
</Upload>
</Form.Item>
The logic in this component that tells the user they have an unredeemed bid is inaccurate.
We don't currently index enough data to determine if a user has redeemed their bid or not. I believe we'd have to index the vault program to properly determine if a user has a bid to redeem. At the moment, this is logic will tell a lot of people they have a bid to redeem when in fact they have already redeemed it.
Owner of an NFT can accept an offer. Selling the NFT. When offer accepted cancel listing of the seller in the same transaction.
https://github.com/holaplex/marketplace/blob/dev/src/components/AcceptOfferForm/index.tsx#L52
Search bar should be full width (less 1rem space between the end of it and display switcher on the right)
Change placeholder text and search icon to Grey 500
Design for reference: https://www.figma.com/file/DC1T92jSoSIw9rvvEJytNK/Profiles---MVP?node-id=4347%3A9293
General
Example for monke.art
NB: Might be better to wait for custom marketplaces ref this Slack thread
https://holaplex.slack.com/archives/C02RFL1LCSX/p1643836663086239?thread_ts=1642807030.002700&cid=C02RFL1LCSX
The collection minting tool isn't properly setting the collection data. According to the metadata json uri structure, the collection key needs to be two key value pairs, not a string. https://docs.metaplex.com/nft-standard
ex:
{{ "collection": {"name": "Solflare X NFT","family": "Solflare"}}}
Line 66 in 675b05f
When viewing a collector’s profile (currently all profiles) it’s not easy to get a high level picture of the person’s activity without reading a lot and browsing through the profile. This problem is amplified by the time sensitivity of auctions - it’s too time consuming to read through activity events in order to get a sense for the kind of person you’re bidding against.
Create a page where a user can review the activity for a pubkey.
Initial supported notifications / activities and actions
https://www.figma.com/file/DC1T92jSoSIw9rvvEJytNK/Profiles---MVP?node-id=391%3A8874
Users can see offer for the holaplex ah made on an nft from its detail page.
nft(address: "") {
offers {
auctionHouse
price
buyer
}
}
Offers are for any auction house. Need to filter list by the holaplex auction house before displaying to the user.
/nfts/{address}/offers/new
query {
market(subdomain: "holaplex") {
auctionHouse {
...
}
}
nft(address: "") {
offers {
...
}
}
}
https://github.com/holaplex/marketplace/blob/dev/src/pages/nfts/%5Baddress%5D.tsx#L706
https://github.com/holaplex/marketplace/blob/dev/src/components/Offer/index.tsx#L47
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.