{"id":49670762,"url":"https://github.com/opensoft/frappe-app-dartwing","last_synced_at":"2026-05-06T22:38:29.555Z","repository":{"id":324771710,"uuid":"1098478545","full_name":"opensoft/frappe-app-dartwing","owner":"opensoft","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-22T17:31:35.000Z","size":15199,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-23T10:38:07.018Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opensoft.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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-11-17T18:37:28.000Z","updated_at":"2025-12-22T02:32:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/opensoft/frappe-app-dartwing","commit_stats":null,"previous_names":["opensoft/frappe-app-dartwing"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/opensoft/frappe-app-dartwing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensoft%2Ffrappe-app-dartwing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensoft%2Ffrappe-app-dartwing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensoft%2Ffrappe-app-dartwing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensoft%2Ffrappe-app-dartwing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opensoft","download_url":"https://codeload.github.com/opensoft/frappe-app-dartwing/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensoft%2Ffrappe-app-dartwing/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32715427,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T19:35:05.142Z","status":"ssl_error","status_checked_at":"2026-05-06T19:35:03.996Z","response_time":117,"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-05-06T22:38:25.300Z","updated_at":"2026-05-06T22:38:29.548Z","avatar_url":"https://github.com/opensoft.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dartwing\n\nBackend and family management app for Frappe with multi-service integration.\n\n## Overview\n\n`frappe-app-dartwing` is a custom application layer built on top of the Frappe framework providing:\n\n- **Family management** with comprehensive business logic\n- **Multi-service integration** via proxy/connector patterns for:\n  - ERPNext accounting module\n  - Frappe Health healthcare management\n  - Frappe Drive document management\n- **Clean architectural separation** between custom code and third-party services\n\n## Data Model\n\n- **Family**: family_name, slug, description, tags, contact_email/phone, status, created_date, members (child table)\n- **Family Member** (child table): full_name, relationship, email, phone, date_of_birth, status, notes\n\n## APIs (dartwing.api.v1)\n\n- `create_family(family_name, description=None, status=\"Active\", members=None)`\n- `get_family(name)` / `get_all_families(filters=None, fields=None, limit_start=0, limit_page_length=20)`\n- `update_family(name, **kwargs)` / `delete_family(name)`\n- `search_families(query, limit=20)` / `get_family_stats()`\n- Member operations: `add_family_member`, `update_family_member`, `delete_family_member`\n\n## Setup\n\n### Prerequisites\n\n- Frappe Framework installed and running\n- Python 3.10+\n- Optional: ERPNext, Frappe Health, Frappe Drive services for extended functionality\n\n### Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/opensoft/frappe-app-dartwing.git\ncd frappe-app-dartwing\n\n# Install app on site\nbench --site SITE install-app dartwing\n\n# Run migrations\nbench --site SITE migrate\n```\n\n### Configuration\n\nConfigure service connections in your Frappe site configuration (optional):\n\n```json\n{\n  \"erpnext_url\": \"http://erpnext-service:8000\",\n  \"erpnext_api_key\": \"your-api-key\",\n  \"erpnext_api_secret\": \"your-api-secret\",\n  \n  \"health_url\": \"http://health-service:8000\",\n  \"health_api_key\": \"your-api-key\",\n  \"health_api_secret\": \"your-api-secret\",\n  \n  \"drive_url\": \"http://drive-service:8000\",\n  \"drive_api_key\": \"your-api-key\",\n  \"drive_api_secret\": \"your-api-secret\"\n}\n```\n\n## Architecture\n\nThis application follows a service-oriented architecture with multiple proxy connectors:\n\n```\n┌─────────────────────────────────────────┐\n│ frappe-app-dartwing Application         │\n├─────────────────────────────────────────┤\n│ Custom Features \u0026 Business Logic         │\n│ Frappe Integration Layer                 │\n│ Multi-Service Proxy/Connector Pattern    │\n└────────────┬────────────────────────────┘\n             │\n             ├─→ (HTTP/RPC) → ERPNext (GPL-3.0)\n             ├─→ (HTTP/RPC) → Frappe Health (GPL-3.0)\n             ├─→ (HTTP/RPC) → Frappe Drive (AGPL-3.0)\n             └─→ (Library)  → Frappe Framework (MIT)\n```\n\n### Key Architectural Principles\n\n1. **No Third-Party Code Embedding**: This application does not include, modify, or redistribute source code from integrated services\n2. **API-Based Integration**: Communication with services happens exclusively via HTTP/RPC API calls\n3. **Service Separation**: Each service runs as an independent deployment with its own license terms\n4. **Proxy Pattern**: The application acts as a proxy/connector forwarding requests to services\n5. **Modular Connectors**: Each service has its own connector module for clean separation\n\n## Tests\n\n- See `tests/test_family_api.py` (skipped by default; requires site context)\n- Family Manager role fixture included (fixtures/role.json)\n\n## Contributing\n\nContributions are welcome! Please ensure:\n\n- Service integrations remain as pure proxies (no code modifications)\n- Tests are included for new features\n- License documentation is updated if dependencies change\n\n## License\n\nThis application is licensed under the **Apache License 2.0**.\n\n### Dependency Licensing\n\n- **Frappe Framework**: MIT License (used as library)\n- **ERPNext**: GPL-3.0 (separate service, API integration only)\n- **Frappe Health**: GPL-3.0 (separate service, API integration only)\n- **Frappe Drive**: AGPL-3.0 (separate service, API integration only)\n\nFor detailed licensing information, see [DEPENDENCIES.md](./DEPENDENCIES.md).\n\n## Support\n\n- GitHub Issues: [https://github.com/opensoft/frappe-app-dartwing/issues](https://github.com/opensoft/frappe-app-dartwing/issues)\n- Documentation: See [DEPENDENCIES.md](./DEPENDENCIES.md) for licensing details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopensoft%2Ffrappe-app-dartwing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopensoft%2Ffrappe-app-dartwing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopensoft%2Ffrappe-app-dartwing/lists"}