{"title": "framelib", "logoImg": "bafkreid7oz2t6w5xvipjaglt4s52qz2s23e6k6dk63t4gjbixmpizxbjba", "website": "https://github.com/devinaconley/python-frames", "bannerImg": "bafkreidojwgxib2dcldl3kpbhcoe3luyvrgg4wr2afddhnlclbldiayzwe", "createdAt": 1713266785941, "userGithub": "devinaconley", "credentials": {"github": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..p-wfzfWGiFhlAx2VR1H7uIsolNyEP7LipWfGLMV6BnwMATV-xuOM-nLpTcyPgsfJVIc8oVjwg0h7DEoSdm3-CQ", "type": "Ed25519Signature2018", "created": "2024-04-16T11:49:40.964Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2024-04-16T11:49:40.963Z", "expirationDate": "2024-07-15T11:49:40.963Z", "credentialSubject": {"id": "did:pkh:eip155:1:0xF58Dea7581b336582b806C99A9bc6C36363cE85b", "hash": "v0.0.0:F+VkoTotS5ZsroXjeysylRU86dQS5hD9eFitz2YjpKg=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextGithubOrg#framelib#15223693"}}, "twitter": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..GSOJNJBRf8GT27FRtae1y7ETjq5SwCX3zgKga4kXxIn9V01udz7BbTHCaSQu0gXolVsb30hUfvTgAbzZORMOBg", "type": "Ed25519Signature2018", "created": "2024-04-16T11:43:04.671Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2024-04-16T11:43:04.671Z", "expirationDate": "2024-07-15T11:43:04.671Z", "credentialSubject": {"id": "did:pkh:eip155:1:0xF58Dea7581b336582b806C99A9bc6C36363cE85b", "hash": "v0.0.0:a+s2XNG/rQxBzs4WMfA+WEAThdegI20Fef0jCE2kMkI=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextTwitter#devinaconley"}}}, "description": "framelib is a lightweight library for building farcaster frames using python and flask\n\nfeatures\n- easily render frames that conform to the farcaster specification\n- configurable frame design\n- parse frame action messages\n- verify the frame action signatures using neynar\n- query user profile info from warpcast\n- on-chain frame transactions\n- multiple example apps\n\nfirst introduced here (most related conversation is on farcaster) \nhttps://warpcast.com/conley/0xf931ba52", "logoImgData": {}, "bannerImgData": {}, "projectGithub": "framelib", "projectTwitter": "devinaconley"}
framelib
framelib is a lightweight library for building farcaster frames using python and flask

features
- easily render frames that conform to the farcaster specification
- configurable frame design
- parse frame action messages
- verify the frame action signatures using neynar
- query user profile info from warpcast
- on-chain frame transactions
- multiple example apps

first introduced here (most related conversation is on farcaster) 
https://warpcast.com/conley/0xf931ba52
framelib