{"id":23302112,"url":"https://github.com/bohdanmoroziuk/booky","last_synced_at":"2026-05-07T15:35:30.219Z","repository":{"id":178978616,"uuid":"661560845","full_name":"bohdanmoroziuk/booky","owner":"bohdanmoroziuk","description":"This is a minimal example implementation of Clean Architecture in Vue/Quasar","archived":false,"fork":false,"pushed_at":"2023-07-30T09:32:13.000Z","size":772,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-29T19:37:24.904Z","etag":null,"topics":["clean-architecture","functional-programming","jest","oop","pinia","quasar2","typescript","unit-testing","vue-router","vue3"],"latest_commit_sha":null,"homepage":"","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/bohdanmoroziuk.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}},"created_at":"2023-07-03T06:42:00.000Z","updated_at":"2023-08-30T05:48:11.000Z","dependencies_parsed_at":"2023-12-05T18:49:20.131Z","dependency_job_id":"8a42e16a-160f-4ff2-999d-f060efac93e5","html_url":"https://github.com/bohdanmoroziuk/booky","commit_stats":null,"previous_names":["yuzumi/booky","bohdanmoroziuk/booky"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bohdanmoroziuk/booky","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bohdanmoroziuk%2Fbooky","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bohdanmoroziuk%2Fbooky/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bohdanmoroziuk%2Fbooky/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bohdanmoroziuk%2Fbooky/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bohdanmoroziuk","download_url":"https://codeload.github.com/bohdanmoroziuk/booky/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bohdanmoroziuk%2Fbooky/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32744047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"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":["clean-architecture","functional-programming","jest","oop","pinia","quasar2","typescript","unit-testing","vue-router","vue3"],"created_at":"2024-12-20T10:18:45.377Z","updated_at":"2026-05-07T15:35:30.177Z","avatar_url":"https://github.com/bohdanmoroziuk.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Booky (booky)\n\nThis is a minimal example implementation of Clean Architecture in Vue/Quasar\n\n## To-do list\n\n- [ ] Advanced error handling (Either)\n- [ ] Test-driven development\n- [ ] Dependency injection\n- [ ] Data mapping\n\n## Project architecture\n\nThe project architecture consists of 4 levels: Presentation, Application,\nDomain and Data (Infrastructure).\n\n![Project architecture](./diagram.png)\n\nThe characteristics of the layers are as follows:\n\n- **Presentation**: This layer is basically made of UI components. The Presentation\nLayer is directly coupled to the Application Layer.\n- **Application**: This layer contains application logic. It knows of the Domain\nLayer and the Infrastructure Layer.\n- **Domain**: This layer is for domain/business logic. Only business logic lives in\nthe Domain layer, so there is just pure JavaScript/TypeScript code with no\nframeworks/libraries whatsoever here.\n- **Data**: This layer is responsible for communications with the outside\nworld (sending requests/receiving responses).\n\n## Module structure\n\nThe app consists of 1 module - bookmarks.\n\n```txt\nbookmarks/\n├── data/\n│   └── repositories\n├── domain/\n│   ├── entities\n│   └── repositories\n├── application/\n│   └── services\n├── presentation/\n│   ├── components\n│   ├── containers\n│   ├── controllers\n│   ├── pages\n│   ├── stores\n│   └── routes.ts\n└── index.ts\n```\n\n## Available scripts\n\n### Install the dependencies\n\n```bash\nnpm install\n```\n\n### Start the app in development mode (hot-code reloading, error reporting, etc.)\n\n```bash\nnpm run dev\n```\n\n### Lint the files\n\n```bash\nnpm run lint\n```\n\n### Build the app for production\n\n```bash\nnpm run build\n```\n\n### Customize the configuration\n\nSee [Configuring quasar.config.js](https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbohdanmoroziuk%2Fbooky","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbohdanmoroziuk%2Fbooky","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbohdanmoroziuk%2Fbooky/lists"}