{"id":18810351,"url":"https://github.com/absaoss/spline-ui","last_synced_at":"2025-04-13T20:30:53.858Z","repository":{"id":38245938,"uuid":"254580815","full_name":"AbsaOSS/spline-ui","owner":"AbsaOSS","description":null,"archived":false,"fork":false,"pushed_at":"2024-07-09T11:34:28.000Z","size":7232,"stargazers_count":12,"open_issues_count":32,"forks_count":6,"subscribers_count":12,"default_branch":"develop","last_synced_at":"2024-07-09T14:01:17.608Z","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":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AbsaOSS.png","metadata":{"files":{"readme":"README.DEV.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}},"created_at":"2020-04-10T08:15:45.000Z","updated_at":"2024-07-09T10:02:38.000Z","dependencies_parsed_at":"2024-07-09T13:56:00.215Z","dependency_job_id":null,"html_url":"https://github.com/AbsaOSS/spline-ui","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Fspline-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Fspline-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Fspline-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbsaOSS%2Fspline-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AbsaOSS","download_url":"https://codeload.github.com/AbsaOSS/spline-ui/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223603207,"owners_count":17172060,"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","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":"2024-11-07T23:19:55.047Z","updated_at":"2024-11-07T23:19:55.648Z","avatar_url":"https://github.com/AbsaOSS.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"#Spline UI Development Guide\n\n---\n\n##Application structure\n\n- All shared stuff placed in the `/ui/projects` and separated into 4 main categories/libraries:\n\n    - ###spline-api\n\n      Represents DTO layer for the Spline consumer API.\n\n    - ###spline-utils\n\n      Generic stuff, which can be reused in any application. There cannot be any dependency on any other part of the\n      application.\n\n    - ###spline-common\n\n      Generic UI related components/modules. These components can be reused in other applications. It can have\n      dependencies on spline-utils.\n\n    - ###spline-shared\n\n      Spline UI application specific stuff. Smarter components/containers which need to be shared between application\n      modules.\n      It can have dependencies on spline-utils, spline-common, spline-api.\n\n\n- Feature modules placed in the `/ui/src/modules`\n\n  Each module can depend on any shared library from `/ui/projects`, but cannot have any dependencies on any other module\n  from `/ui/src/modules` or `/ui/src/app`.\n\n\n- AppModule, from `/ui/src/app` defines the skeleton of the application, it is a glue for the feature modules. It\n  defines the application layout and routing, but it cannot have any dependencies on feature modules except routing\n  definitions. It can be depended only on stuff from /ui/projects.\n\n---\n\n##The structure of shared libraries\n\n```\n    library-name\n        main\n            src\n                public-api.ts\n            \n            assets\n                i18n\n                    library-name\n                        en.json                    \n            \n            styles\n                library-name\n                    ...\n                    index.scss\n                library-name.scss\n           \n                \n        secondary-endpoint            \n            src\n                public-api.ts\n            assets\n                i18n\n                    library-name.secondary-endpoint\n                        en.json                    \n            \n            styles\n                library-name.secondary-endpoint\n                    ...\n                    index.scss\n                library-name.secondary-endpoint.scss                \n            package.json\n            \n        package.json             \n```\n\n- Each library has the main and secondary entry points:\n\n    - Main entry point directory structure (all code in the directory `main` \u0026 the package.json should be at the level\n      of the `main` directory)\n\n        ```\n            library-name\n                main\n                    assets\n                    styles           \n                    src\n                        public-api.ts\n                package.json             \n        ```\n\n    - Secondary entry point directory structure (package.json should be inside the secondary endpoint directive)\n        ```\n            library-name\n                secondary-endpoint\n                    assets\n                    styles           \n                    src\n                        public-api.ts\n                    package.json\n        ```\n\n- All SCSS files should be placed in the relevant `styles` directory instead of styles definition directly in the\n  component with `styleUrls` property.\n- All i18n files should be placed in the relevant i18n directory.\n\n### Styles directory naming\n\n1. Styles directory should contain the root (main entry) SCSS file \u0026 directory with the same name where all other files\n   should be placed.\n\n        projects/spline-common/data-view/styles:\n            spline-common.data-view/\n                ...\n                index.scss\n            spline-common.data-view.scss\n\n   1.1 The name of the relevant entry file/directory is relevant to its placement in the `projects` directory, each\n   directory level is separated with `.` in the file name. The main directory is it is the main entry point.\n\n        projects/spline-common/main/styles:\n            spline-common/\n                ...\n                index.scss\n            spline-common.scss\n\n        projects/spline-common/dynamic-filter/main/styles:\n            spline-common.dynamic-filter/\n                ...\n                index.scss\n            spline-common.dynamic-filter.scss\n\n### Troubles-shooting\n\n1. If during installation of dev dependencies you see next issue:\n\n```\nnpm ERR! [FAILED] Error: unable to get local issuer certificate\n\n```\n\nYou must follow one of 2 variants:\n\n- Download root certificate (from Chrome browser) and export it it env variable:\n\n```\nexport NODE_EXTRA_CA_CERTS=\u003cpath/to/certfile\u003e\n```\n\n- Set npm config variable to state false (globally)\n\n```\nnpm config set ssl-strict=false\n```\n\n2. If you've got the following error during npm packages installation\n\n```\nnpm ERR! code ERR_SOCKET_TIMEOUT\n```\n\nJust increase the timeout for npm config:\n\n```\nnpm config set fetch-retry-mintimeout 200000\nnpm config set fetch-retry-maxtimeout 1200000\n```\n\n3.\n\n---\n\n    Copyright 2020 ABSA Group Limited\n    \n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n    \n        http://www.apache.org/licenses/LICENSE-2.0\n    \n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabsaoss%2Fspline-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabsaoss%2Fspline-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabsaoss%2Fspline-ui/lists"}