feat: initialize markr nostr bookmark client

- Add project structure with TypeScript, React, and Vite
- Implement nostr authentication using browser extension (NIP-07)
- Add NIP-51 compliant bookmark fetching and display
- Create minimal UI with login and bookmark components
- Integrate applesauce-core and applesauce-react libraries
- Add responsive styling with dark/light mode support
- Include comprehensive README with setup instructions

This is a minimal MVP for a nostr bookmark client that allows users to
view their bookmarks according to NIP-51 specification.
This commit is contained in:
Gigi
2025-10-02 07:17:07 +02:00
commit 5d53a827e0
11194 changed files with 1827829 additions and 0 deletions

47
node_modules/nostr-tools/lib/esm/nip75.js generated vendored Normal file
View File

@@ -0,0 +1,47 @@
// kinds.ts
var ZapGoal = 9041;
// nip75.ts
function generateGoalEventTemplate({
amount,
content,
relays,
a,
closedAt,
image,
r,
summary,
zapTags
}) {
const tags = [
["amount", amount],
["relays", ...relays]
];
closedAt && tags.push(["closed_at", closedAt.toString()]);
image && tags.push(["image", image]);
summary && tags.push(["summary", summary]);
r && tags.push(["r", r]);
a && tags.push(["a", a]);
zapTags && tags.push(...zapTags);
const eventTemplate = {
created_at: Math.floor(Date.now() / 1e3),
kind: ZapGoal,
content,
tags
};
return eventTemplate;
}
function validateZapGoalEvent(event) {
if (event.kind !== ZapGoal)
return false;
const requiredTags = ["amount", "relays"];
for (const tag of requiredTags) {
if (!event.tags.find(([t]) => t == tag))
return false;
}
return true;
}
export {
generateGoalEventTemplate,
validateZapGoalEvent
};