{"id":30883188,"url":"https://github.com/mazurel/sopa","last_synced_at":"2025-09-08T09:42:45.449Z","repository":{"id":311459704,"uuid":"908913745","full_name":"Mazurel/sopa","owner":"Mazurel","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-24T15:28:28.000Z","size":50198,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-24T20:20:31.270Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mazurel.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}},"created_at":"2024-12-27T09:25:06.000Z","updated_at":"2025-08-24T15:28:31.000Z","dependencies_parsed_at":"2025-08-24T20:34:21.266Z","dependency_job_id":null,"html_url":"https://github.com/Mazurel/sopa","commit_stats":null,"previous_names":["mazurel/sopa"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Mazurel/sopa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mazurel%2Fsopa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mazurel%2Fsopa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mazurel%2Fsopa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mazurel%2Fsopa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mazurel","download_url":"https://codeload.github.com/Mazurel/sopa/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mazurel%2Fsopa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274166758,"owners_count":25233959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2025-09-08T09:42:40.513Z","updated_at":"2025-09-08T09:42:45.440Z","avatar_url":"https://github.com/Mazurel.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SOPa\n\n**SOP** *Aphia* is an open-source web application designed to help people find support centers and social assistance locations.\n\n## 🌟 Features\n\n- **Location Finder**: Search and discover support centers based on your specific needs\n- **Tag-based Filtering**: Filter locations by various categories\n- **Location Management**: Add, edit, and manage support center information\n- **Dark/Light Mode**: Automatic color scheme detection and switching\n- **Data Import/Export**: Save and share location databases as `.bson` files\n\n## 🏗️ Architecture\n\nThis project is built as a Rust workspace with two main components:\n\n- **`frontend/`** - Web application built with [Yew](https://yew.rs/) framework\n- **`libsopa/`** - Core library containing shared data structures and business logic\n- **`locales/`** - Localization files for internationalization\n- **`.github/`** - CI configuration files for continuous integration and deployment\n\n### Database Architecture\n\nThe application uses a sophisticated multi-layer database system designed for web-based operation:\n\n#### Storage Layers\n\n1. **Browser Persistence (IndexedDB)**\n   - Primary storage using the browser's IndexedDB API\n   - Automatic synchronization between memory and persistent storage\n\n2. **BSON Serialization**\n   - Location data serialized to Binary JSON (BSON) format\n   - Enables efficient import/export of entire databases\n   - Backwards-compatible schema with migration support\n   - Default database embedded as binary data in the application\n\n3. **In-Memory Operations**\n   - HashMap-based storage (`HashMap\u003cUuid, Location\u003e`) for fast lookups\n   - UUID-based unique identification for all locations\n   - Tag-based filtering and preference-based sorting algorithms\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- [Rust](https://rustup.rs/) (latest stable version)\n- [Trunk](https://trunkrs.dev/) for building the frontend\n\n```bash\n# Install Rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n\n# Add WASM target\nrustup target add wasm32-unknown-unknown\n\n# Install Trunk\ncargo install trunk\n```\n\n### Development\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/your-username/sopa.git\ncd sopa\n```\n\n2. Start the development server:\n```bash\ncd frontend\nRUSTFLAGS='--cfg getrandom_backend=\"wasm_js\"' trunk serve\n```\n\n3. Open your browser and navigate to `http://localhost:8080`\n\n### Building for Production\n\n```bash\ncd frontend\nRUSTFLAGS='--cfg getrandom_backend=\"wasm_js\"' trunk build --release\n```\n\nThe built application will be available in the `frontend/dist/` directory.\n\n## 🌍 Internationalization\n\nThe application supports multiple languages through the `rust-i18n` crate:\n- Polish (pl)\n- English (en)\n\nTranslations are stored in the `locales/` directory as YAML files.\n\n## 🧪 Testing\n\nRun the test suite:\n\n```bash\ncargo test\n```\n\n## ⚠️ Development Status\n\n**This is alpha software currently in active development.** Features may be incomplete, unstable, or subject to change. Use for testing and feedback purposes only.\n\n## 📄 License\n\nThis project is licensed under the GNU General Public License v2.0 - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- Built with [Yew](https://yew.rs/) - A modern Rust framework for creating multi-threaded frontend web apps with WebAssembly\n- UI components powered by [Bulma](https://bulma.io/) CSS framework\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmazurel%2Fsopa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmazurel%2Fsopa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmazurel%2Fsopa/lists"}