Hey Teia-Community,
some of you probably know that, besides participating in the Teia community, I’m also working on a project called TezTok. The goal of TezTok is to make it easier for developers to work with Tezos NFTs and to enable them to build great user experiences. The core of TezTok is Open Source (licensed under MIT) but we are aiming to build some commercial services on top of it at some point.
For the TezTok project, we are currently in the process of re-applying for a grant at the Tezos Foundation. A few months ago we already applied once, but they asked us to rework the request, go down with the numbers and be more specific about certain deliverables. Since we are in a bear market now, the Tezos Foundation seems to be gotten a bit more conservative about funding projects.
Anyway, I was thinking if it would make sense to add some Teia-specific topics to this grant request, which I wanted to discuss with you.
The core idea is to migrate Teia to use the TezTok indexer. As of now, the TezTok indexer already supports about 80% of the functionality of what Teia needs. This includes things like token metadata data, sales, listings and a full token history. What it currently doesn’t support are collab contracts and subjkts. Adding those missing features would be covered by the grant.
Just like it’s currently the case, the indexer can be hosted on community servers, like the ones operated by Manitcor and Zir0h.
What are the benefits of migrating to the TezTok indexer (obviously, I’m a bit biased on the topic)?
- The indexer supports the generation of thumbnails (images, videos). Using these thumbnails on overview pages will significantly improve the loading performance. If needed, thumbnail generation can happen on a separate server.
- The indexer stores things like the current cheapest price and the last sales price on the token model. This means it’s trivial to output these kinds of information on overview pages.
- The indexer also stores marketplace data of other marketplaces such as objkt.com and Versum. This means if we show pricing information on overview pages, this could involve the prices of other marketplaces that support Teia NFTs.
- The indexer stores a full history of token-related events. What this means is, that we would be able to show a more detailed history for each token. Including things like token transfers, cancel swaps, objkt.com sales/offers, etc.
- Sales-related data is stored in a way that makes it easily aggregatable, making it trivial to answer questions like: How many sales did a certain artist have in total? How much did a user spend on Teia NFTs in a certain time period? Which marketplace contract do users prefer to buy a Teia NFT?
- If Teia introduces a new FA2 contract and/or a new marketplace contract in the future, it’s easy to add support for those (the whole point of the TezTok indexer is to support a variety of different NFT-related contracts and normalize the data).
- I’m actively working on the indexer. Every new feature I add will also be available to the Teia Community.
- Although I still come across some bugs here and there, the indexer is working very reliable in general. In fact, the indexer is running with nearly no interruption for several months now.
- Re-indexing can happen while the indexer is running in production. This means, no more downtime because we have to do a full re-index.
- The indexer is very fast and can handle chain reorgs just fine. In practice, this means, transactions like sales, swaps and mints will be reflected in the UI without huge delays.
Of course, nothing in life comes with only advantages, so here are the disadvantages/risks I can currently think of:
- The current indexer, hicdex, is built on top of dipdup. Dipdup is a well-established indexer framework that is used in the Tezos ecosystem. It is well supported and has great documentation that guides developers. The TezTok indexer, on the other hand, was built from scratch without any indexer framework for the sole purpose to index NFT-related data. The TezTok documentation is currently lacking, making it harder for third-party developers to contribute. A part of the grant proposal is to ask for funds to improve the documentation.
- Although the TezTok indexer is licensed under MIT, making it possible for any other developer to contribute, a lot will still be depended on me, because the indexer is my brainchild. If I get hit by a bus or am forced to leave the NFT space for other reasons, it might be a bit more challenging for other developers to do code changes because they are not familiar with all the ins and outs.
- The TezTok indexer also aggregates a lot of data that is not that relevant for Teia (for example, FXHash tokens). Either this will bloat the database a bit or we will need to find a way to exclude that data.
If the Teia community agrees with me that switching to the TezTok indexer makes sense, then I would put the following points into the grant request:
- Add support for Teia Collab Contracts and Subjkts to the TezTok indexer.
- The initial creation of thumbnails for all Teia/HEN NFTs. Optionally uploading them to a CDN like Backblaze.
- Add TezTok support to the frontend (+ do some refactorings as part of that).
- Use the generated thumbnails on all overview pages.
- Show price information on overview pages (e.g. current price, last sales price).
- Enhance the token history and display further information like cancel swaps, transfers and objkt.com-related events.
- Some other frontend-related changes that the community needs to decide on?
I would estimate the workload at roughly 20 days, asking the Tezos Foundation for 800$ per day. While the indexer-related changes will likely have to be done by me, we can split the other tasks across multiple developers (if there is interest), meaning that everyone who is involved in this operation will get paid.
If you have any questions about this, feel free to comment in this thread. If you can think of further advantages, disadvantages, or other points for the grant, make sure to point them out.
In order for us to move forward, it would be great if we reach a decision by 17.07.2022.