# [Review] #161 Apillon Platform Milestone 1 Proposal Oct 10, 2023 :::warning This is a _technical_ review of the information provided in and related to the treasury proposal linked below, provided by members of the [W3F Grants Team](https://grants.web3.foundation/). It is only a snapshot of information that was publicly available at the time of writing and is not necessarily exhaustive. ::: ## :beginner: Proposal Info - Proposal Name: Apillon Platform Milestone 1 - Link: https://polkadot.polkassembly.io/referenda/161 - Track: Big Spender ## 📕 TL;DR - Revised proposal based on [Referendum 81](https://polkadot.polkassembly.io/referenda/81) - Goal: provide easy-to-use tools for developers to build Web3 apps on Polkadot and integrate parachains - Current MVP features: decentralised storage; NFT creation; hosting services; mostly EVM based - Key deliverables: further development, deployment, and UX improvements; some deliverables vague or difficult to comprehend the time estimations - Scope of parachain integration: limited to NFTs and data storage - We tested the currently deployed version of Apillon and found some bugs, mostly minor in nature - Main risks: - estimating team capability difficult based on EVM-focus of current MVP - some deliverables tightly coupled to business model - vagueness in deliverables description ## :triangular_flag_on_post: Problem space The key problems described in the proposal are: 1. Lack of user-friendly tools for developers to build Web3 applications on Polkadot. The current development process is complex. 2. No easy way for developers to access various Polkadot parachains and integrate their services. 3. Adoption rate of Polkadot and its parachains needs to grow further. ## 📈 Solution space In general, Apillon platform aims to provide an easy-to-use interface and tools for developers to build web3 apps on Polkadot and integrate various parachain services. Most of the deliverables are concerned with development and deployment efforts. This diagram gives an overview of what is already developed (blue) and what is planned to be developed as part of the proposal (green): ![](https://hackmd.io/_uploads/BJk7_mWb6.png) Some deliverables mentioned in the proposal are not shown in the diagram, including: - **RMRK integration:** Unclear what standard they plan to use - **5 Premade NFT-based template solutions (POAP NFTs, etc.):** Unclear what standards (e.g. ERC-721 on EVM, an ink!-based standard, a RMRK standard, etc.) are covered. - **PAPI refactor:** The library is currently not production-ready and it's difficult to estimate when it will be. - **No-code wizard for RMRK NFTs:** Unclear which RMRK standard will be used here - **Wunderbar integration** - **Code samples:** Currently described only in broad terms, so it's unclear what will be delivered here This diagram gives an overview of what is planned to be deployed as part of the proposal (green): ![](https://hackmd.io/_uploads/S1tURspx6.png) *Note that there are no deployed components yet, hence there are no blue element present on the diagram* In addition to development and deployment efforts, there are a couple of UX improvements related to the Dashboard, premade templates and on-click deployments. ## â†Šī¸ Previous work The web-based Apillon platform is currently [deployed](https://apillon.io/) and has the following 3 main features: - **Storage Service:** Provides a web UI for storing arbitrary data on IPFS - **NFT Service:** Provides a web UI for uploading NFT metadata in CSV to create an NFT collection on-chain. It integrates seemlessly with the Storage Service for simple, JPEG-based NFTs. - **Hosting Service:** Provides a web UI for uploading web pages, such as an NFT collection web page created by their [template](https://github.com/Apillon-web3/nft-template). We briefly tested each service's basic functions. The results are described below. ### Storage Service The storage service represents a web UI for Crust files. It's possible to upload files and organize them in containers called *buckets*. It's very similar to existing services like pinata. #### Observations - Uploading and pinning files took 3-4min when testing - When trying to open a newly uploaded file (PDF) for the first time after it's been successfully pinned, an error is thrown - the page displays "Page not found" while in the console an "TypeError: Cannot read properties of undefined (reading 'file_uuid')" is thrown - On subsequent tries to open the file in-browser, only the filename is shown with no option to view it or download it - It is, however, possible to download the file through the kebap menu - another option is to copy the download link, which works as well - when trying the same using a jpg file, no error is thrown. Also, the pinning process took less than 1min. ### NFT Service This service lets a user create EVM-based NFT collections using a web UI. It is similar in scope to other NFT platforms, e.g. OpenSea. The currently supported networks are Moonbeam, Moonbase and Astar. Steps include: 1. Provide a CSV with meta info 2. Provide the matching images, as defined in the previous step (the UI will correctly throw an error if any of the files are not named after the meta info) 3. Provide a collection name, symbol and chain (Moonbeam, Astar or Moonbase) 4. Provide behavioral attributes, such as supply, soulboundness (:= not transferable), revocability (:= owner can destroy them), royalty fee settings and release date 5. Finally, the collection will be deployed 6. After that, it's possible to create a website for the NFT collection using their [Apillon-web3/nft-template](https://github.com/Apillon-web3/nft-template) repo on github. The web UI shows a prompt with the direct link to create a fork. #### Observations - Even when the royalty fee is set to 0, a royalty EVM address has to be provided ### Hosting Service The hosting service allows for easy publishing of the NFT collection using an out-of-the-box template. Only two modifications are neccessary before publishing it: setting the network (chain extension) and smartcontract address of the NFT collection. After that, the files can be uploaded to IPFS using the *Hosting* service. The docs are straightforward to follow. There are 2 environments: staging and production. #### Observations - After deployment, the site (HTML) was loaded successfully but the NFT collection wasn't found, even after connecting to MetaMask: ![](https://hackmd.io/_uploads/Bk57sE6eT.png) ## âš ī¸ Risks 1. The current prototype focuses on EVM-compatible NFT standards, which are not native to the Polkadot ecosystem. Hence, estimating the capability of the team by the existing efforts is difficult. 2. For some of the deliverables the time estimations seem rather high. This might be related to the rather vague descriptions of some of the deliverables. Examples include 1040h for "Cloud functions" integration, 240h for "Code samples" or 408h for a "Dashboard UX split". 3. Some of the deliverables seem to be very tightly coupled to Apillon's business model, such as the *User accounting*, the *Fiat payment* and *DOT payment* modules. 4. Based on the proposal, it's not clear whether the scope of the integration of Crust, Phala, Acurast, Astar and Moonbeam (and their sister chains) goes beyond or is limited to managing NFTs and data. 5. The proposal didn't contain any architectural diagrams, so some assumptions about Apillon's architecture were made for this review. The diagrams that you can find in the [Solution Space](#solution-space) section were created by the W3F Grants team. ## đŸ’Ŧ Open Questions 1. Many of the deliverables are described vaguely and leave space for interpretation (see [Solution Space](#-Solution-space) and [Risks](#-Risks)). 2. For some of the deliverables it's questionable if they add any value (see [Solution Space](#-Solution-space)). 3. In the *Apillon's Subscription Plans* the feature "DID generation on KILT" is mentioned. However, there is no mention of it in the *Milestone 1 Deliverables* section. 4. The current state of the MVP is not described in detail in the proposal. For the sake of this review, it was assumed that what's featured on the [demo platform](https://app.apillon.io/dashboard) is the current state.