{"id":48778478,"url":"https://github.com/sorawitt/savedmind","last_synced_at":"2026-04-13T13:09:13.266Z","repository":{"id":331296195,"uuid":"1125909752","full_name":"sorawitt/savedmind","owner":"sorawitt","description":"Personal bookmark manager with AI-powered semantic search","archived":false,"fork":false,"pushed_at":"2026-01-04T04:31:48.000Z","size":199,"stargazers_count":0,"open_issues_count":18,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-05T20:51:14.903Z","etag":null,"topics":["bun","chrome-extension","dotnet","plasmo","preact","typescript"],"latest_commit_sha":null,"homepage":"","language":"C#","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/sorawitt.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":"2025-12-31T16:12:35.000Z","updated_at":"2026-01-04T04:31:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sorawitt/savedmind","commit_stats":null,"previous_names":["sorawitt/savedmind"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/sorawitt/savedmind","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorawitt%2Fsavedmind","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorawitt%2Fsavedmind/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorawitt%2Fsavedmind/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorawitt%2Fsavedmind/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sorawitt","download_url":"https://codeload.github.com/sorawitt/savedmind/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorawitt%2Fsavedmind/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31753652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T09:16:15.125Z","status":"ssl_error","status_checked_at":"2026-04-13T09:16:05.023Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["bun","chrome-extension","dotnet","plasmo","preact","typescript"],"created_at":"2026-04-13T13:09:12.875Z","updated_at":"2026-04-13T13:09:13.254Z","avatar_url":"https://github.com/sorawitt.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SavedMind\n\n[![CI](https://github.com/sorawitt/savedmind/actions/workflows/ci.yml/badge.svg)](https://github.com/sorawitt/savedmind/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![.NET](https://img.shields.io/badge/.NET-10.0-512BD4)](https://dotnet.microsoft.com/)\n[![Preact](https://img.shields.io/badge/Preact-10.x-673AB8)](https://preactjs.com/)\n\nPersonal bookmark manager that actually helps you find stuff later.\n\n## The Problem\n\nYou save hundreds of articles, tweets, and videos. When you need them? Gone. Can't remember the title, forgot which folder, keyword search fails because you only remember \"that React article with the cool diagram.\"\n\n## The Solution\n\nSave with one click. Search with natural language. AI handles the organizing.\n\n## How It Works\n\n1. **Save** - Browser extension, one click, no folders or tags required\n2. **Process** - System extracts content and understands what it's about\n3. **Find** - Search like you think: \"React article with diagram about performance\"\n\n## Tech Stack\n\n- **Backend**: .NET 10, PostgreSQL, pgvector\n- **Frontend**: Preact, Tailwind CSS\n- **Extension**: Plasmo (Chrome)\n- **AI**: OpenAI embeddings for semantic search\n\n## Project Structure\n\n```\nsavedmind/\n├── backend/           # .NET 10 API (Clean Architecture)\n│   └── src/\n│       ├── SavedMind.Api/\n│       ├── SavedMind.Application/\n│       ├── SavedMind.Domain/\n│       └── SavedMind.Infrastructure/\n├── frontend/          # Preact + Vite + Tailwind\n├── extension/         # Plasmo Chrome extension\n├── shared/            # Shared TypeScript types\n└── docker-compose.yml # PostgreSQL + pgvector\n```\n\n## Getting Started\n\n### Prerequisites\n\n- [.NET 10 SDK](https://dotnet.microsoft.com/download)\n- [Bun](https://bun.sh/) (JavaScript runtime \u0026 package manager)\n- [Docker](https://www.docker.com/)\n\n### Quick Start\n\n```bash\n# Clone\ngit clone https://github.com/YOUR_USERNAME/savedmind.git\ncd savedmind\n\n# Install root dependencies (husky + commitlint)\nbun install\n\n# Start database\ndocker-compose up -d\n\n# Backend\ncd backend \u0026\u0026 dotnet run --project src/SavedMind.Api\n\n# Frontend (new terminal)\ncd frontend \u0026\u0026 bun install \u0026\u0026 bun run dev\n\n# Extension (new terminal)\ncd extension \u0026\u0026 bun install \u0026\u0026 bun run dev\n```\n\n### Development URLs\n\n- **Frontend**: http://localhost:5173\n- **Backend API**: http://localhost:5000\n- **Database**: localhost:5432\n\n## Commit Convention\n\nWe use [Conventional Commits](https://www.conventionalcommits.org/). Commits are validated by commitlint via husky.\n\n```\n\u003ctype\u003e(\u003cscope\u003e): \u003csubject\u003e\n\n# Examples:\nfeat(api): add bookmark search endpoint\nfix(extension): resolve popup not closing\ndocs: update README with setup instructions\nchore: update dependencies\n```\n\n**Types:** `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`, `ci`, `revert`\n\n## Status\n\nMVP in development. See [Projects](../../projects) for current progress.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsorawitt%2Fsavedmind","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsorawitt%2Fsavedmind","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsorawitt%2Fsavedmind/lists"}