Best practices for storing NFT metadata and user interactions

I’m working on an NFT project and trying to figure out the best way to handle different types of data storage. Since blockchain transactions cost gas, I know I can’t put everything on-chain. I’m planning to use IPFS services for storing the actual image files.

My main question is about user interaction data like ratings, bookmarks, comments, and organizing NFTs into groups. Should I build a separate server application to handle this kind of information? I’m thinking about using Laravel for the backend development. Would this be a good choice for managing NFT-related data that doesn’t need to be on the blockchain?

laravel’s actually a solid pick! just make sure to sync wallet addresses right with your database. i’ve seen things break when folks change wallets. also, using contract address + token ID as primary keys is way better than just user IDs. don’t forget to backup your db too!

Separate backend for user data is definitely the way to go. I did something similar last year - ended up with a hybrid setup that worked great. NFT metadata stays on IPFS, social stuff runs through a regular database. Laravel’s perfect for this, especially with built-in auth and API features. Pro tip: implement proper caching for frequently accessed data since you’ll be hitting blockchain AND your database. Redis saved my ass once we hit a few hundred active users. Set up event listeners to watch for on-chain transfers so your user data stays synced. Otherwise you’ll get ratings and comments stuck to old owners when NFTs change hands.

This is really interesting! I’ve been wondering about similar stuff for my own project. You mentioned using IPFS for images which makes total sense, but what about the metadata json files - are you storing those on IPFS too or somewhere else?

Also curious about your user interaction data… how will you handle it when users want to delete their comments or ratings? Like if someone sells their NFT and wants to remove all their old interactions, how would that work with your Laravel backend?

One thing I’m not sure about - when you say organizing NFTs into groups, do you mean collections that users create themselves? That sounds pretty complex if people start sharing groups or making them public. Are you keeping those totally separate from the blockchain side?

Btw have you considered what happens if your backend goes down temporarily? Will users still be able to see basic NFT info through IPFS even if the social features aren’t working? Just wondering how you’re planning to handle that kind of resilience.