{"id":25280318,"url":"https://github.com/nattatorn-dev/currency-exchange","last_synced_at":"2026-04-05T23:33:49.888Z","repository":{"id":89862199,"uuid":"87715611","full_name":"nattatorn-dev/currency-exchange","owner":"nattatorn-dev","description":"currency exchange (thailand banks) power by react","archived":false,"fork":false,"pushed_at":"2017-06-08T13:22:53.000Z","size":3729,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-01T08:42:59.325Z","etag":null,"topics":["babel","boilerplate","es7","express","isomorphic","react","redux-saga","universal","webpack"],"latest_commit_sha":null,"homepage":"https://currency-exchange-rate.herokuapp.com/","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/nattatorn-dev.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-09T14:46:23.000Z","updated_at":"2017-04-09T16:31:14.000Z","dependencies_parsed_at":"2023-06-15T22:15:31.201Z","dependency_job_id":null,"html_url":"https://github.com/nattatorn-dev/currency-exchange","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nattatorn-dev/currency-exchange","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nattatorn-dev%2Fcurrency-exchange","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nattatorn-dev%2Fcurrency-exchange/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nattatorn-dev%2Fcurrency-exchange/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nattatorn-dev%2Fcurrency-exchange/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nattatorn-dev","download_url":"https://codeload.github.com/nattatorn-dev/currency-exchange/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nattatorn-dev%2Fcurrency-exchange/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31454198,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"ssl_error","status_checked_at":"2026-04-05T21:22:51.943Z","response_time":75,"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":["babel","boilerplate","es7","express","isomorphic","react","redux-saga","universal","webpack"],"created_at":"2025-02-12T18:39:08.579Z","updated_at":"2026-04-05T23:33:49.874Z","avatar_url":"https://github.com/nattatorn-dev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## React Universal Saga (currency-exchange)\n[![Build Status](https://travis-ci.org/nattatorn-dev/currency-exchange.svg?branch=master)](https://travis-ci.org/nattatorn-dev/currency-exchange) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/nattatorn-dev/currency-exchange/master/LICENSE)\n\n## Getting Started\n\nUniversal React App Starter featuring Redux Saga. Heavily modified version of [React Redux Universal Hot Example](https://github.com/erikras/react-redux-universal-hot-example) combined with Redux Saga [real-world](https://github.com/yelouafi/redux-saga/tree/master/examples/real-world) example.\n\n`$ git clone https://github.com/nattatorn-dev/currency-exchange`\n\n`$ cd currency-exchange \u0026\u0026 sudo yarn install`\n\n`$ sudo yarn run dev` (run in development mode)\n\nLive Demo: [currency-exchange-rate.herokuapp.com](https://currency-exchange-rate.herokuapp.com)\n\n## Features\n\n* [Universal](https://medium.com/@mjackson/universal-javascript-4761051b7ae9) rendering, with Client and Server Side Data Fetching\n* [React](https://github.com/facebook/react) - latest version `^15.2.0`\n* [Redux](https://github.com/rackt/redux)'s futuristic [Flux](https://facebook.github.io/react/blog/2014/05/06/flux.html) implementation\n* [Redux Saga](https://github.com/yelouafi/redux-saga) to handle all of your Side Effects logic in a central place\n* [React Router](https://github.com/rackt/react-router)\n* [Express](http://expressjs.com)\n* [Babel](http://babeljs.io) for ES6 and ES7 magic\n* [Webpack](http://webpack.github.io) for bundling\n* [Webpack Dev Middleware](http://webpack.github.io/docs/webpack-dev-middleware.html)\n* [Webpack Hot Middleware](https://github.com/glenjamin/webpack-hot-middleware)\n* [Redux Dev Tools](https://github.com/gaearon/redux-devtools) for next generation DX (developer experience). Watch [Dan Abramov's talk](https://www.youtube.com/watch?v=xsSnOQynTHs).\n* [ESLint](http://eslint.org) to maintain a consistent code style\n* [redux-form](https://github.com/erikras/redux-form) to manage form state in Redux\n* [PostCSS](https://github.com/postcss/postcss-loader), [style-loader](https://github.com/webpack/style-loader), [sass-loader](https://github.com/jtangelder/sass-loader) and [less-loader](https://github.com/webpack/less-loader) to allow import of stylesheets in plain css, sass and less,\nb.com/nfl/react-helmet) to manage title and meta tag information on both server and client\n* [webpack-isomorphic-tools](https://github.com/halt-hammerzeit/webpack-isomorphic-tools) to allow require() work for statics both on client and server\n* [Jest](https://facebook.github.io/jest/) to allow writing unit tests for the project.\n* Refer to `package.json` for more details\n\n\n### Server-side Data Fetching\n\nThe [redux-saga](https://github.com/yelouafi/redux-saga) provides a mechanism for server-side data fetching from the actual backend API servers/services, when it reaches client-side (React) there is no need to do additional network call. You have to define the Sagas that a container need (refers to `containers/UserPage.js \u003e UserPage.preload` for example) for server-side to fetch. PS: You have the flexibility to implement additional logic (e.g. handle authentication) when fetching data at server-side rendering stage, as it differs from client-side.\n\n\n### Unit Tests\n\nThe project uses [Jest](https://facebook.github.io/jest) to run your unit tests and the [Test Utilities](http://facebook.github.io/react/docs/test-utils.html) from Facebook api.\n\nAn example is available at `components \u003e User`.\n\nTo run the tests in the project, just simply run `yarn run test`.\n\nAny contribution is welcome.\n\nCheers,\nnattatorn-dev @maybenexttime\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnattatorn-dev%2Fcurrency-exchange","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnattatorn-dev%2Fcurrency-exchange","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnattatorn-dev%2Fcurrency-exchange/lists"}