Demo TMA: TON NFT Marketplace

Overview

Build a telegram mini-app that lets authorized users see a list of NFT items that are managed via this Notion page (see Notion API).

Prerequisites

The app should:

Task Description

There are only two pages in the app. The login page lets users sign in via TON Connect. After the successful login, users are redirected to the home page. The home page is available only for authorized users (via TON Connect). On the home page, users should be able to see a list of cards; each card represents a distant NFT item.

The most important task of this assignment - the list of NFT items to be displayed is controlled via the table below, meaning you have to use Notion API to fetch the addresses from the table below:

NFT Friendly Address
EQCCMrkQtSm5UL9Z963J-qCT3cUcdDq4_j-L-qnQu-stAHc_
EQBrDW9gmTHEBtqfBujYYXoRiH1FybEuVFW8_6HJZ6UyQx2N
EQC67RicSpi7a_s7ULYMRzcFt-XKNsdQOfZISN7pCFQL-8Ms
EQAGCApwssMcC0MT5tnhF0_eBulMB9iU9I2l5OZd8ZTCzEnA
EQAcWYauQmOjTn60TkHSqeaqnuWGGhqEf8ewZGiL37LBg5yo
EQCCxzVmcW0f6frVsKTb0E5nMAcTC2o2907wIbAOCj7tBYRg
EQA-S-WDMq34lFOB_Li0SpSyCbEB1SBrR66D7gSArTLAmqXm
EQAdw9hJwSymoT2Vjh4rA1pz2Xifc7qNGy_NryrnsP1Q8ppG
EQCt9lzd02F8UqSB0SyAPCCgTINnnMYHYFbUWd8VgLzeUXL8
EQAXR72dxnl3ERBQos7Nok8mnBMGt-anJXrHG-pEcXutfr7s
EQCUNh0Def4W0Xs88ZLisWLSUB_KhP8gtSS70UcKqb0p22j1
EQDvOzZuJW-4RIuKdZ8VvxxHIIEjDnJ9Jo1pYJxr-t6roM9i
EQAhne4d9SLXpSxZHSTa0MrnoVf_HyykVTs7mRXBpRj_35WN
EQAEL6hfew7sP-B04905hsEj2Io9UbTv8bRlfGrcePxHpv9d
EQCPLT6jZswEFa724GJtHYnlHo7zpJ9nXwAVOUprCQBwgRGs
EQDIlm91sROp-JQ6d4WkjVhi7ZF-uHHgDy-dKbZE9zsuXvNy
EQAIEXIOkbikNVVxc2HSFyXHfFm0d-zbLUyv2RKZvvIO6R-V
EQDofgUWeO4HFrbLxBPkZFVm844cc-34Ir2JnrpHZeGpBCnz
EQD7Eg3nD7TJQie5XdE9JgjJCFinLHAVV-k1G6HxFIHfN5Co
EQDLA7pb7PIAl76etKs988JIpatxvYDGDrIyhAAt6yH4XGzV
EQBmYG3RIis1QT6xo43LxOCVLHdm4YxAHR4GSE6pDhDuG_81
EQBxZ5CjJpKDrJJqvdpXZ2phJDFVLnKyjkRWaZzDq7dIQBiQ
EQCsmMzx6HzMvfcqFk9kDfsl-cSZJ2oi7WvuIa3GuXMzvRdN
EQAoCYiUH6Yuyy4gR2ql9S7Hnm4tAZFgKEHLV7ePrLWAoqM0
EQAQr7hhgZwsMUuz8oybcZNtd3mbeA5dRUy0jynECaibSpFq
EQBEFhxV7o7ZtPP5fivxtSEX5wty0cspW3sisr3SYnv9en9X
EQCIV6hE-HGM6QFs3I0aI5it64uBHuE7c05nvinXpWq53CzU
EQAqG_XlqIbRp406Mtc60I2D7mMW0MX-rpBGB9TrvMHKV1bE

If the above list changes (somebody adds or removes an address of the NFT item), your app should reflect the changes. These changes are infrequent - it’s enough to revalidate the addresses every 10-15 minutes. Thus, no need to use polling or web sockets.

Each card in the list displays item metadata:

Finally, the home page should display the first 5 items from the list and all other items are to be loaded (or preloaded) using infinite scroll.

The Result

The task is considered completed when you send us: