{"id":48654189,"url":"https://github.com/lnbits/nostr-chat","last_synced_at":"2026-04-10T09:00:13.483Z","repository":{"id":339738123,"uuid":"1163172055","full_name":"lnbits/nostr-chat","owner":"lnbits","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-09T12:55:52.000Z","size":2233,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-10T09:00:08.339Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lnbits.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-21T07:48:37.000Z","updated_at":"2026-04-09T12:55:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lnbits/nostr-chat","commit_stats":null,"previous_names":["motorina0/xyz","lnbits/nostr-chat"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/lnbits/nostr-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lnbits%2Fnostr-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lnbits%2Fnostr-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lnbits%2Fnostr-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lnbits%2Fnostr-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lnbits","download_url":"https://codeload.github.com/lnbits/nostr-chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lnbits%2Fnostr-chat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31635969,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T07:40:12.752Z","status":"ssl_error","status_checked_at":"2026-04-10T07:40:11.664Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-10T09:00:10.175Z","updated_at":"2026-04-10T09:00:13.449Z","avatar_url":"https://github.com/lnbits.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nostr chat\n\nChat app for nostr.\n\n## Features\n\n- Left chat list with avatar, last message preview, unread badge\n- Main chat thread with sent/received rounded bubbles\n- Message composer with send button\n- Pinia stores: `chatStore` and `messageStore`\n- Local mock data for chats/messages\n- Chat selection updates thread\n- Sending messages appends to current chat\n- Auto-scrolls to latest message\n- Responsive behavior:\n  - Desktop: sidebar + thread side by side\n  - Mobile: route-based navigation (`/` list, `/chat/:chatId` thread)\n- Bonus:\n  - Dark mode toggle\n  - Search input placeholder (no filtering logic yet)\n\n## Run\n\nNode.js 18+ is recommended for current Quasar + `@quasar/app-vite`.\n\n1. Install dependencies:\n\n```bash\nnpm install\n```\n\n2. Start dev server:\n\n```bash\nnpm run dev\n```\n\nThis runs `quasar dev` via the npm script.\n\n## End-to-end tests\n\nCore DM e2e coverage uses Playwright plus a local `nostr-rs-relay` Docker container.\n\nRun the suite locally:\n\n```bash\nnpm run test:e2e:local\n```\n\nThis resets the relay volume before and after the run so each local run starts clean.\nPlaywright now keeps traces, screenshots, and video for passing runs too. You can inspect them in `test-results/` and open the HTML summary from `playwright-report/`.\n\n## Project Structure\n\n```text\nindex.html\npackage.json\nquasar.config.ts\ntsconfig.json\nsrc/\n  components/\n    ChatItem.vue\n    ChatList.vue\n    ChatThread.vue\n    MessageBubble.vue\n    MessageComposer.vue\n  data/\n    mockData.ts\n  layouts/\n    MainLayout.vue\n  pages/\n    IndexPage.vue\n    ChatPage.vue\n    ErrorNotFound.vue\n  router/\n    index.ts\n    routes.ts\n  stores/\n    index.ts\n    chatStore.ts\n    messageStore.ts\n  types/\n    chat.ts\n  css/\n    app.css\n  App.vue\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flnbits%2Fnostr-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flnbits%2Fnostr-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flnbits%2Fnostr-chat/lists"}