{"id":25469500,"url":"https://github.com/sinakhx/react-boilerplate","last_synced_at":"2025-11-04T14:30:32.259Z","repository":{"id":45797484,"uuid":"502507326","full_name":"Sinakhx/react-boilerplate","owner":"Sinakhx","description":"Enterprise-level boilerplate for react projects","archived":false,"fork":false,"pushed_at":"2022-06-12T10:54:12.000Z","size":975,"stargazers_count":33,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-16T23:18:51.610Z","etag":null,"topics":["react","scss","typescript","vite"],"latest_commit_sha":null,"homepage":"","language":"SCSS","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/Sinakhx.png","metadata":{"files":{"readme":"Readme.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-06-12T03:14:24.000Z","updated_at":"2024-02-26T18:09:52.000Z","dependencies_parsed_at":"2022-07-17T01:16:15.452Z","dependency_job_id":null,"html_url":"https://github.com/Sinakhx/react-boilerplate","commit_stats":null,"previous_names":[],"tags_count":1,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sinakhx%2Freact-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sinakhx%2Freact-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sinakhx%2Freact-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sinakhx%2Freact-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sinakhx","download_url":"https://codeload.github.com/Sinakhx/react-boilerplate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239433910,"owners_count":19637806,"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":["react","scss","typescript","vite"],"created_at":"2025-02-18T08:20:02.967Z","updated_at":"2025-11-04T14:30:32.214Z","avatar_url":"https://github.com/Sinakhx.png","language":"SCSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About\n\nThis project is created using `react`, `typescript`, `vite` \u0026 `scss` with prepared configurations for **_dockerizing_** the project \u0026 **_client-side release scripts_** with **_automatic changelog generation_**. local hooks for **_type-checking_**, **_testing_** \u0026 **_linting_** are also included which can be further configured, improved \u0026 reused in ci/cd pipelines.\n\n## Project Structure\n\nThe following schema is the main gist of the present project structure. Please follow the conventions in creating files \u0026 folders for keeping a unified, maintainable collaboration.\n\n-   `index.html`: index file\n-   **`__mocks__`**: mocks for _node_modules_\n-   **`public`**: static files\n-   **`src`**: source codes\n    -   **`mocks`**: mocks for components \u0026 utils\n    -   **`utils`**: custom hooks \u0026 helper functions\n    -   **`assets`**: scss styles, icons (svg, png, ...)\n    -   **`config`**: custom \u0026 general project configurations\n    -   **`routes`**: route files (slugs, paths, router, private routes, ...)\n    -   **`components`**: common components used everywhere\n    -   **`pages`**: pages/views (each folder in this directory presents a single page route entity which maps to a unique route/url)\n        -   **`SamplePage`**: a sample page\n            -   `SamplePage.tsx`: page component\n            -   `SamplePage.scss`: page styles\n            -   `SamplePageService.ts`: page services (api calls)\n            -   `SamplePageViewModel.ts`: page view model (states, actions, logic)\n            -   `SamplePageTypes.ts`: specific shared types for SamplePage \u0026 its components (optional)\n            -   `SamplePage.md`: page documentation (optional)\n            -   **`components`**: components specific to SamplePage\n                -   **`ComponentA`**: sample inner component (specific to this page)\n                    _(if the component gets complicated, it can also have it's own `service`, `viewModel` \u0026 other layers)_\n                    -   `ComponentA.tsx`: component (atom)\n                    -   `ComponentA.scss`: component's styles\n                    -   `ComponentA.test.tsx`: component's tests\n                -   `index.ts`: barrel file for exporting ComponentA \u0026 other components in this directory\n            -   **`tests`**: test suites for the SamplePage main component, service \u0026 viewModel files\n                -   **`unit`**: unit test suites for SamplePage (using vitest \u0026 react-testing-library)\n                    -   `SamplePageViewModel.unit.test.tsx`\n                    -   ...\n                -   **`integration`**: integration test suites for SamplePage\n                -   **`e2e`**: end-to-end test suites for SamplePage (using cypress)\n\n## Main Scripts\n\n```bash\n# initialize husky hooks:\nnpm run init:husky\n\n# start the dev server:\nnpm run dev\n\n# test the project:\nnpm run test\n\n# build for production:\nnpm run build\n\n# locally preview production build:\nnpm run preview\n```\n\n## Commit conventions\n\ncommits that do not follow the conventional config for standard-version will be rejected.\n\nthe following list is a gist of the available commit types:\n\n```\nbuild(scope?): description\nchore(scope?): description\nci(scope?): description\ndocs(scope?): description\nfeat(scope?): description\nfix(scope?): description\nperf(scope?): description\nrefactor(scope?): description\nrevert(scope?): description\nstyle(scope?): description\ntest(scope?): description\n```\n\nfor more info, see: https://www.conventionalcommits.org/en/v1.0.0/\n\n\u003e **NOTE**: any changes to these conventions should be synchronized with the [standard-version](https://github.com/conventional-changelog/standard-version) configurations. Automatic versioning \u0026 changelog generation will suffer otherwise. We recommend staying with the default settings.\n\n## Testing\n\ntesting is done using `vitest`, `react-testing-library` and `cypress`. vitest's methods are expanded using `jest-dom` \u0026 is mainly used as a test-runner, while cypress is mainly here for visual \u0026 end-to-end testing.\n\n## Documenting\n\ndocumentation is done using `Markdown`, `JSDoc` \u0026 `TypeScript` type declarations. the `test files` with proper descriptions can also be treated as a form of documentation.\n\n## Releasing (versioning)\n\n\u003cimg style=\"width: 400px;\" src=\"https://bytearcher.com/goodies/semantic-versioning-cheatsheet/wheelbarrel-with-tilde-caret-white-bg-w1000.jpg\" /\u003e\n\n```bash\n# first release of the project (should run once forever):\nnpm run release:first\n# for later releases use the following commands:\n# semver pattern: `major.minor.patch` (e.g. `1.5.8`)\nnpm run release:patch\n# or\nnpm run release:minor\n# or\nnpm run release:major\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinakhx%2Freact-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsinakhx%2Freact-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinakhx%2Freact-boilerplate/lists"}