{"id":13438092,"url":"https://github.com/lvarayut/relay-fullstack","last_synced_at":"2025-05-16T07:03:42.643Z","repository":{"id":54464644,"uuid":"51304999","full_name":"lvarayut/relay-fullstack","owner":"lvarayut","description":":point_up::running: Modern Relay Starter Kit - Integrated with Relay, GraphQL, Express, ES6/ES7, JSX, Webpack, Babel, Material Design Lite, and PostCSS","archived":false,"fork":false,"pushed_at":"2017-11-25T13:04:27.000Z","size":1615,"stargazers_count":985,"open_issues_count":6,"forks_count":125,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-05-06T08:50:56.890Z","etag":null,"topics":["boilerplate","graphql","javascript","nodejs","react","relay","scaffolding","yeoman"],"latest_commit_sha":null,"homepage":"https://lvarayut.github.io/relay-fullstack/","language":"JavaScript","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/lvarayut.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2016-02-08T15:11:00.000Z","updated_at":"2025-04-16T19:24:26.000Z","dependencies_parsed_at":"2022-08-13T16:30:41.453Z","dependency_job_id":null,"html_url":"https://github.com/lvarayut/relay-fullstack","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvarayut%2Frelay-fullstack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvarayut%2Frelay-fullstack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvarayut%2Frelay-fullstack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvarayut%2Frelay-fullstack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lvarayut","download_url":"https://codeload.github.com/lvarayut/relay-fullstack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254485052,"owners_count":22078767,"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","graphql","javascript","nodejs","react","relay","scaffolding","yeoman"],"created_at":"2024-07-31T03:01:02.835Z","updated_at":"2025-05-16T07:03:42.589Z","avatar_url":"https://github.com/lvarayut.png","language":"JavaScript","readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n\t\u003cimg width=\"800\" src=\"https://cloud.githubusercontent.com/assets/4281887/14516854/792107ac-0231-11e6-95dd-86bb2b5197e3.png\"\u003e\n\t\u003cbr\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n[![Dependency Status](https://img.shields.io/david/lvarayut/relay-fullstack.svg)](https://github.com/lvarayut/relay-fullstack)\n[![devDependency Status](https://img.shields.io/david/dev/lvarayut/relay-fullstack.svg)](https://github.com/lvarayut/relay-fullstack)\n\u003e Relay Fullstack is a Relay scaffolding application that aims to help you get up and running a project without worrying about integrating tools. It comes with many modern technologies; Relay, GraphQL, Express, ES6/ES7, JSX, Webpack, Babel, Material Design Lite, and PostCSS. Relay Fullstack is also using [Hot-reload](https://github.com/gaearon/react-transform-hmr) to real time update the screen whenever any code changes.\n\n## Example \n![Demo](https://cloud.githubusercontent.com/assets/4281887/13377800/9c4705a2-de1d-11e5-82cb-745e16d5b1c4.gif)\n\u003e Check out the [Live demo](http://relay-fullstack.herokuapp.com) on Heroku.\n\n## Usage\n\n### Basic\n\nThe basic installation contains only general technologies needed by most of the projects, Relay Fullstack is totally unopinionated. If you wanted to include a database, flow, or any specific technologies, please see the [Advance](#advance) section.\n\nFirst, you need `watchman` installed, please follow its [installation guide](https://facebook.github.io/watchman/docs/install.html). Then, clone the repository to your local directory\n```bash\n$ git clone https://github.com/lvarayut/relay-fullstack.git\n$ cd relay-fullstack\n```\n\nInstall all dependencies \u0026 Start developing\n```bash\n$ npm install\n$ npm start\n```\n\nLaunch your favorite web browser and go to `http://localhost:3000` for Relay application or `http://localhost:8000` for GraphiQL. \n\n### Advance\n\nRelay Fullstack is integrated with Yeoman that allows you to choose technologies that suit your needs, the options are including database, flow, and etc.\n\nInstall `yo` and [generator-relay-fullstack](https://www.npmjs.com/package/generator-relay-fullstack) globally\n\n```bash\n$ npm install -g yo generator-relay-fullstack\n```\n\nCreate a new directory and start the generator, it will prompt some questions to help you get up and running\n\n```bash\n$ mkdir relay-fullstack \u0026\u0026 cd $_\n$ yo relay-fullstack\n$ npm start\n```\n\nLaunch your favorite web browser and go to `http://localhost:3000` for Relay application or `http://localhost:8000` for GraphiQL. \n\n\u003e NOTE: generator-relay-fullstack is currently working with minimal functionalities. Database, Flow, and Sub-generator are work-in-progress.\n\n## Deployment\n\n#### Local machine\nIn order to deploy a project, it is a good practice to minify all JavaScript files, stop spawning the GraphiQL server, pull off some duplicate dependencies, and remove all unnecessary scripts, for example, Hot-reload. All of these can be done by executing the following command:\n\n```bash\n$ npm run deploy\n```\n\nAgain, launch your favorite web browser and go to `http://localhost:3000`.\n\n#### Heroku\nBefore getting started, make sure you already installed the [Heroku Toolbelt](https://toolbelt.heroku.com), which is a command-line tooling for managing Heroku applications that makes it easy to deploy an application in a few steps:\n\n```bash\n$ heroku create                     # Create a new Heroku application\n$ git push heroku master            # Push your code into the created Heroku repository\n$ heroku ps:scale web=1             # Run the deployed application\n````\n\nThat is it! Now, open the application on your default browser using `heroku open`.\n\n## Schema\n\nWhenever you start a server, it will automatically execute `updateSchema.js` script in order to compile the schema definitions, defined in `schema.js`, to `schema.json` and `schema.graphql`. This is required by Relay framework. However, you could also run the script manually:\n\n```bash\n$ npm run update\n```\n\n## Project Structure\n\n\n    ├── client                          - All of the client side code resides in this folder\n    │   ├── assets                      - Images and fonts\n    │   ├── components                  - Relay containers, React components, and SCSS files used in the components\n    │   │   └── variables.scss          - Common SCSS variables\n    │   ├── routes                      - React-router-relay \n    │   │   ├── Route.js                - All route definitions\n    │   │   └── ViewerQuery.js          - Entry node of a GraphQL query\n    │   ├── index.html                  - HTML template file used by html-webpack-plugin \n    │   └── index.js                    - Client entry point\n    ├── server                          - All of the server side code resides in this folder\n    │   ├── config                      - Configuration \n    │   │   └── environment             - Separate configuration for each environment\n    │   │       ├── development.js      - Development configuration\n    │   │       ├── index.js            - Common configuration used in any environment\n    │   │       ├── production.js       - Production configuration\n    │   │       └── test.js             - Test configuration\n    │   ├── data                        - Data and APIs \n    │   │   ├── database.js             - Mock up database which should be replaced with your real database logic\n    │   │   ├── schema.graphql          - Compiled schema in a readable form\n    │   │   ├── schema.js               - Schema definitions\n    │   │   └── schema.json             - Compiled schema to be used by Relay \n    │   ├── utils                       - Utilities \n    │   │   ├── babelRelayPlugin.js     - Babel-relay-plugin provided by Relay\n    │   │   └── updateSchema.js         - Code for compiling the defined schema to schema.json and schema.graphql\n    │   └── index.js                    - Server entry point\n    ├── package.json                    - List of dependencies\n    ├── webpack.config.js               - Webpack configuration\n\n## Technologies\n\n### Frameworks\n[Relay](https://facebook.github.io/relay) - A JavaScript framework for building data-driven react applications. It is required to be used with React and GraphQL.\n\n[React](https://facebook.github.io/react) - A JavaScript library for building user interfaces. It introduces many great concepts, such as, Virtual DOM, Data flow, etc.\n\n[GraphQL](https://github.com/facebook/graphql) - GraphQL is a query language and execution engine tied to any backend service.\n\n[Express](http://expressjs.com/) - Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications.\n\n### Module bundler \u0026 Syntax transformers \n[Webpack](https://webpack.github.io) - Webpack is a module bundler that takes modules with dependencies and generates static assets representing those modules.\n\n[Babel](https://babeljs.io) - Babel is a JavaScript compiler which allows you to  use next generation, ES6/ES7, JavaScript, today.\n\n### Languages\n[ES6/ES7](https://github.com/lukehoban/es6features) - ECMAScript 6, also known as ECMAScript 2015, is the latest version of the ECMAScript standard. ES6 is a significant update to the language.\n\n[JSX]( https://facebook.github.io/react/docs/jsx-in-depth.html) - JSX is a JavaScript syntax extension that looks similar to XML. You can use a simple JSX syntactic transform with React.\n\n### Designs\n[Material Design Lite](http://getmdl.io) - Material Design Lite lets you add a Material Design look and feel to your websites.\n\n[PostCSS](http://postcss.org) - PostCSS is a tool for transforming CSS with JavaScript. It has roughly 200 plugins to help you write CSS easier.\n\n### Additional Tools\n[React transform HMR](https://github.com/gaearon/react-transform-hmr) - A React Transform that enables hot reloading React classes.\n\n[React router relay](https://github.com/relay-tools/react-router-relay) - Relay integration for React Router.\n\n[Eslint](http://eslint.org) - The pluggable linting utility for JavaScript and JSX.\n\n[Autoprefixer](https://github.com/postcss/autoprefixer) - Parse CSS and add vendor prefixes to rules.\n\n[Precss](https://github.com/jonathantneal/precss) - Use Sass-like markup in your CSS.\n\n[Nodemon](http://nodemon.io) - Monitor for any changes in your node.js application and automatically restart the server.\n\n[CSS Modules](https://github.com/css-modules/css-modules) - CSS file in which all class names and animation names are scoped locally by default.\n\n## Credits\n- Relay Fullstack is inspired by [relay-starter-kit](https://github.com/relayjs/relay-starter-kit). Please take a look at the original code to learn more.\n- Handcrafted by Varayut Lerdkanlayanawat and maintained with ❤️  by [Nigel Schuster](https://github.com/Neitsch), [Nicholas Romero](https://github.com/ncrmro), and [awesome contributors](https://github.com/lvarayut/relay-fullstack#contributors).\n\n## Contributors\n\n[\u003cimg alt=\"lvarayut\" src=\"https://avatars3.githubusercontent.com/u/4281887?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/lvarayut) |[\u003cimg alt=\"ncrmro\" src=\"https://avatars2.githubusercontent.com/u/8276365?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/ncrmro) |[\u003cimg alt=\"Neitsch\" src=\"https://avatars3.githubusercontent.com/u/7909844?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/Neitsch) |[\u003cimg alt=\"maksugr\" src=\"https://avatars1.githubusercontent.com/u/8699120?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/maksugr) |[\u003cimg alt=\"AdamZaczek\" src=\"https://avatars2.githubusercontent.com/u/14284341?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/AdamZaczek) |[\u003cimg alt=\"BlakeBrown\" src=\"https://avatars0.githubusercontent.com/u/6283620?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/BlakeBrown) |\n:---: |:---: |:---: |:---: |:---: |:---: |\n[lvarayut](https://github.com/lvarayut) |[ncrmro](https://github.com/ncrmro) |[Neitsch](https://github.com/Neitsch) |[maksugr](https://github.com/maksugr) |[AdamZaczek](https://github.com/AdamZaczek) |[BlakeBrown](https://github.com/BlakeBrown) |\n\n[\u003cimg alt=\"ianaya89\" src=\"https://avatars0.githubusercontent.com/u/3258966?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/ianaya89) |[\u003cimg alt=\"crucialfelix\" src=\"https://avatars2.githubusercontent.com/u/218738?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/crucialfelix) |[\u003cimg alt=\"arnif\" src=\"https://avatars3.githubusercontent.com/u/1312916?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/arnif) |[\u003cimg alt=\"jtfell\" src=\"https://avatars3.githubusercontent.com/u/6702746?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/jtfell) |[\u003cimg alt=\"kennydee\" src=\"https://avatars3.githubusercontent.com/u/1484406?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/kennydee) |[\u003cimg alt=\"kkostov\" src=\"https://avatars3.githubusercontent.com/u/4718042?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/kkostov) |\n:---: |:---: |:---: |:---: |:---: |:---: |\n[ianaya89](https://github.com/ianaya89) |[crucialfelix](https://github.com/crucialfelix) |[arnif](https://github.com/arnif) |[jtfell](https://github.com/jtfell) |[kennydee](https://github.com/kennydee) |[kkostov](https://github.com/kkostov) |\n\n[\u003cimg alt=\"lexun\" src=\"https://avatars3.githubusercontent.com/u/1910143?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/lexun) |[\u003cimg alt=\"narongdejsrn\" src=\"https://avatars3.githubusercontent.com/u/1563323?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/narongdejsrn) |[\u003cimg alt=\"sankalpk\" src=\"https://avatars0.githubusercontent.com/u/1317291?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/sankalpk) |[\u003cimg alt=\"jg123\" src=\"https://avatars2.githubusercontent.com/u/693277?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/jg123) |\n:---: |:---: |:---: |:---: |\n[lexun](https://github.com/lexun) |[narongdejsrn](https://github.com/narongdejsrn) |[sankalpk](https://github.com/sankalpk) |[jg123](https://github.com/jg123) |\n\n## License\n\nMIT © [Varayut Lerdkanlayanawat](https://github.com/lvarayut)\n","funding_links":[],"categories":["Uncategorized","Code Design","Examples","JavaScript","Starter Kits","ไลบรารี่"],"sub_categories":["Uncategorized","Boilerplate","JavaScript Examples"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flvarayut%2Frelay-fullstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flvarayut%2Frelay-fullstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flvarayut%2Frelay-fullstack/lists"}