{"id":13521781,"url":"https://github.com/Metnew/suicrux","last_synced_at":"2025-03-31T20:32:44.800Z","repository":{"id":18011669,"uuid":"81784787","full_name":"Metnew/suicrux","owner":"Metnew","description":"🚀 Ultimate universal starter with lazy-loading, SSR and i18n. [not maintained]","archived":true,"fork":false,"pushed_at":"2022-10-08T17:17:20.000Z","size":8738,"stargazers_count":945,"open_issues_count":170,"forks_count":135,"subscribers_count":35,"default_branch":"master","last_synced_at":"2024-05-21T12:43:12.224Z","etag":null,"topics":["boilerplate","example","fullstack","pwa","react","redux","semantic-ui","semantic-ui-react","ssr","starter","template","universal","universal-react","webpack"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/Metnew.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-13T04:27:43.000Z","updated_at":"2024-05-05T20:53:05.000Z","dependencies_parsed_at":"2022-07-26T20:19:06.899Z","dependency_job_id":null,"html_url":"https://github.com/Metnew/suicrux","commit_stats":null,"previous_names":["metnew/react-semantic.ui-starter","metnew/reatty"],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metnew%2Fsuicrux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metnew%2Fsuicrux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metnew%2Fsuicrux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metnew%2Fsuicrux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Metnew","download_url":"https://codeload.github.com/Metnew/suicrux/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246536252,"owners_count":20793410,"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":["boilerplate","example","fullstack","pwa","react","redux","semantic-ui","semantic-ui-react","ssr","starter","template","universal","universal-react","webpack"],"created_at":"2024-08-01T06:00:38.004Z","updated_at":"2025-03-31T20:32:44.015Z","avatar_url":"https://github.com/Metnew.png","language":"JavaScript","funding_links":[],"categories":["Examples","JavaScript"],"sub_categories":[],"readme":"# Suicrux :smiling_imp:\n\nUltimate **universal** starter with **lazy-loading**, **SSR** and **i18n**.\n\n\u003e [Previous release](https://github.com/Metnew/suicrux/tree/previous)\n\u003c!-- \u003e Demo sometimes becomes frozen by `now`. Retry in a few minutes, if it doesn't work. --\u003e\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/Metnew/suicrux.svg)](https://greenkeeper.io/)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/fd637f7c63e74da199cec17f3f0e3fd9)](https://www.codacy.com/app/Metnew/suicrux?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=Metnew/suicrux\u0026utm_campaign=badger)\n\n\u003c!-- ![](https://github.com/Metnew/suicrux/blob/for-gh/screen.gif) --\u003e\n\n\u003cdiv\u003e\n  \u003ca href=\"https://travis-ci.org/Metnew/suicrux\"\u003e\n    \u003cimg src=\"https://travis-ci.org/Metnew/suicrux.svg?branch=master\" alt=\"Build Status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://gitter.im/suicrux/Lobby?utm_source=badge\u0026amp;utm_medium=badge\u0026amp;utm_campaign=pr-badge\u0026amp; utm_content=badge\"\u003e\n    \u003cimg src=\"https://badges.gitter.im/suicrux/Lobby.svg\" alt=\"Join the chat at https://gitter.im/suicrux/Lobby\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.bithound.io/github/Metnew/suicrux\"\u003e\n    \u003cimg src=\"https://www.bithound.io/github/Metnew/suicrux/badges/code.svg\" alt=\"bitHound Code\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.bithound.io/github/Metnew/suicrux\"\u003e\n    \u003cimg src=\"https://www.bithound.io/github/Metnew/suicrux/badges/score.svg\" alt=\"bitHound Overall Score\"\u003e\n  \u003c/a\u003e\n   \u003ca href=\"https://codecov.io/gh/Metnew/suicrux\"\u003e\n    \u003cimg src=\"https://codecov.io/gh/Metnew/suicrux/branch/master/graph/badge.svg\" alt=\"codecov\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n## Quick start\n\n```bash\n  # Install\n  git clone --depth=1 --single-branch https://github.com/Metnew/suicrux.git\n  cd suicrux\n  npm install\n  # install flow typings for libraries (optional)\n  flow-typed install\n  # Development\n  npm run dev\n  # Build\n  npm run build\n  # Production\n  npm run start\n```\n\n- [Quick start](#quick-start)\n- [What's inside?](#whats-inside)\n    - [Client](#client)\n    - [Server](#server)\n    - [Webpack](#webpack)\n    - [Other](#other)\n- [Suicrux FAQ](#faq)\n    - [Static assets?](#static-assets)\n    - [SSR?](#ssr)\n    - [Code-splitting?](#code-splitting)\n    - [Server-side data-fetching?](#server-side-data-fetching)\n    - [Theming?](#theming)\n    - [Browser support](#browser-support)\n- [Environment variables](#environment-variables)\n- [Semantic.UI + React = SUIR](#semanticui--react--suir)\n    - [Good parts](#good-parts)\n    - [Bad parts](#bad-parts)\n- [Contributing](#contributing)\n- [Author](#author)\n- [LICENSE](#license)\n\n## What's inside?\n\n[![bitHound Dependencies](https://www.bithound.io/github/Metnew/suicrux/badges/dependencies.svg)](https://www.bithound.io/github/Metnew/suicrux/master/dependencies/npm) [![bitHound Dev Dependencies](https://www.bithound.io/github/Metnew/suicrux/badges/devDependencies.svg)](https://www.bithound.io/github/Metnew/suicrux/master/dependencies/npm)\n\n### Client:\n\n- **[Flow](https://flow.org/en/)** - static typing rocks!\n- **[React 16](https://facebook.github.io/react/)** and **[Redux](http://redux.js.org/)**\n- **SASS**, **[PostCSS](https://github.com/postcss/postcss)**, and **[styled-components](https://github.com/styled-components/styled-components)**.\n- **[React-Router v4](https://github.com/ReactTraining/react-router)** + **[React-Router-Redux v5](https://github.com/reactjs/react-router-redux)**\n- **[Redux-thunk](https://github.com/gaearon/redux-thunk)**, **[Redux-Devtools-Extension](https://github.com/zalmoxisus/redux-devtools-extension)** and **[redux-promise-middleware]()**\n- **[isomorphic-fetch](https://github.com/matthew-andrews/isomorphic-fetch)**\n- **[Semantic-ui-react](http://react.semantic-ui.com/)** - UI components.\n- **[Lodash](https://lodash.com/)** - SUIR dependency.\n- **[Store2](https://github.com/nbubna/store)** and **[js-cookie](https://github.com/js-cookie/js-cookie)** - LocalStorage and cookies.\n- **[react-async-component](https://github.com/ctrlplusb/react-async-component)** - library for lazy-loading\n- **[react-ga](https://github.com/react-ga/react-ga)** - advanced Google Analytics for React\n- **[react-intl](https://github.com/yahoo/react-intl)** - i18n.\n- **[immutable](https://facebook.github.io/immutable-js/)**, **[reselect](https://github.com/reactjs/reselect)** and **[normalizr](https://github.com/paularmstrong/normalizr)**\n\n### Server:\n\n* **[morgan](https://www.npmjs.com/package/morgan)** - request logger middleware.\n* **[helmet](https://github.com/helmetjs/helmet)** - secure your Express app.\n* **[cookie-parser](https://www.npmjs.com/package/cookie-parser)** - cookie parsing middleware.\n* **[body-parser](https://github.com/expressjs/body-parser)** - body parsing middleware\n* **[compression](https://github.com/expressjs/compression)** - compression middleware (gzip).\n* **[raven](https://docs.sentry.io/clients/node/)** - Sentry for Node\n\n\n### Webpack\n\n* Latest Webpack with **HMR**\n* Babel: `stage-0` and few known plugins.\n* **[Eslint](https://github.com/eslint/eslint)** and Standard.js\n* **[Offline-plugin](https://github.com/NekR/offline-plugin)**\n* **[webpack-bundle-analyzer](https://www.npmjs.com/package/webpack-bundle-analyzer)**\n* **[compression-webpack-plugin](https://github.com/webpack-contrib/compression-webpack-plugin)**\n* **[optimize-css-assets-webpack-plugin](https://github.com/NMFR/optimize-css-assets-webpack-plugin)**\n* **[autodll-webpack-plugin](https://github.com/asfktz/autodll-webpack-plugin)**\n* **[optimize-js-plugin](https://github.com/vigneshshanmugam/optimize-js-plugin)**\n* **[wepback-assets-manifest](https://www.npmjs.com/package/webpack-assets-manifest)**\n* **[circular-dependency-plugin](https://github.com/aackerman/circular-dependency-plugin)**\n* **[extract-text-webpack-plugin](https://github.com/webpack-contrib/extract-text-webpack-plugin)**\n* **[copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin)**\n### Other:\n\n- **[Jest](https://facebook.github.io/jest/)** - testing framework.\n- [And more tools for building and testing...](https://github.com/Metnew/suicrux/blob/master/package.json)\n\n## Suicrux FAQ\n\n#### Static assets?\n\n`/static` folder + `url-loader`.\nEverything in `/static/public/` is copied to `/dist/client` with _copy-webpack-plugin_.\n\n#### Is it possible to change Webpack config?\n\nOf course, config is intuitive! Webpack universality is inspired by Razzle. \n\n#### SSR?\n\nCheck `/src/server/ssr/`.\n\n#### Code-splitting?\n\n**[react-async-component](https://github.com/ctrlplusb/react-async-component)**.\n\n#### Server-side data-fetching?\n\nUsing **[react-async-bootstrapper](https://github.com/ctrlplusb/react-async-bootstrapper)** - a wrapper around `react-tree-walker`. \n\n#### Theming?\n\nYes, with `styled-components'` `\u003cThemeProvider\u003e` it's possible to specify a color theme.\n\n#### Browser support\n\nWithout `react-intl`:\n- Safari 7+\n- IE 10+\n\n## Environment variables\n\n- `process.env.HOST (default: 'localhost')`: Application host. _Browser and Server._\n- `process.env.PORT (default: 3000)`: Application port. _Browser and Server._\n- `process.env.INSPECT_ENABLED (default: true)`: add `--inspect` arg to server in development. _Webpack only._\n- `process.env.ANALYZE_BUNDLE (default: false)`: Run `webpack-bundle-analyzer` on production build. _Webpack _\n- `process.env.GA_ID (default: false)`: Google analytics ID. If set, `react-ga` initialize itself inside \u003e` container on `componentDidMount()`. _Browser only._\n- `process.env.SENTRY_PUBLIC_DSN (default: false)`: Similar to `GA_ID`, but for [Sentry](https://sentry.io). _Browser only._\n- `process.env.BROWSER`: Your environment. `true` - browser, `false` - Node.\n\u003e **NOTE:** Remember, you can't run code which uses browser global object in Node environment!\n- `process.env.SENTRY_DSN (default: false)`: Sentry full(private) DSN.  _Server only._\n\n## Semantic.UI + React = SUIR\n\n\u003e SUI = Semantic.UI  \n\u003e SUIR = Semantic-UI-React\n\u003e TL;DR: SUIR is great, but it lacks inline-styles.\n\nYou're always free to use any other UI framework with `suicrux`.\n**[UI framework comparison.](https://hackernoon.com/the-coolest-react-ui-frameworks-for-your-new-react-app-ad699fffd651)**\n\n### Good parts\n\n1. Big UI library\n2. Based on SUI: SUIR uses SUI CSS under the hood.\n3. Modular: Import only what you use required components.\n\n### Bad parts\n\n1. Import of unused styles.\n\u003e It's possible to import only required components' styles. Check **`src/client/index.jsx`**.\n\u003e PurifyCss cannot help. Only browser-based tools probably could.\n\n2. SUI styles are costly(548kb) and block rendering.\n\u003e It's possible to split SUI styles into several smaller chunks which could be downloaded faster.\n\n## Contributing\n\n\u003e Have a question? Ask! :wink: \n\n\u003e Make sure you ask a right question. :smiling_imp:\n\nPRs, issues, enhancements are always welcome.\n\n### Author\n\nVladimir Metnew [vladimirmetnew@gmail.com](mailto:vladimirmetnew@gmail.com)\n\n### LICENSE\n\nApache License 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMetnew%2Fsuicrux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMetnew%2Fsuicrux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMetnew%2Fsuicrux/lists"}