react-redux TODO
A simple Progressive Web App(PWA) TODO made on top of react, Material Design, IndexedDB and localStorage with service-workers.
Installation
Download or clone the project:
npm install
npm start
Folder Structure
The project structure will look like this:
todo-rooms/
README.md
yarn.lock
node_modules/
package.json
public/
index.html
favicon.ico
src/
actions/
components/
containers/
middleware/
pages/
reducers/
store/
styles/
utilities/
index.js
routes.js
For the project to build, these files must exist with exact filenames:
public/index.html
is the page template;src/index.js
is the JavaScript entry point.
You can delete or rename the other files.
Usage
In the project directory, you can run:
npm start
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
The page will reload if you make edits.
You will also see any lint errors in the console.
npm test
Launches the test runner in the interactive watch mode. See the section about running tests for more information.
npm run build
Builds the app for production to the build
folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
Your app is ready to be deployed!
Support
Please open an issue for support.
Making a Progressive Web App
You can turn your React app into a Progressive Web App by following the steps in this repository.
GitHub Pages
Note: this feature is available with
react-scripts@0.2.0
and higher.
homepage
to package.json
Step 1: Add The step below is important!
If you skip it, your app will not deploy correctly.
Open your package.json
and add a homepage
field:
"homepage": "https://myusername.github.io/my-app",
Create React App uses the homepage
field to determine the root URL in the built HTML file.
gh-pages
and add deploy
to scripts
in package.json
Step 2: Install Now, whenever you run npm run build
, you will see a cheat sheet with instructions on how to deploy to GitHub Pages.
To publish it at https://myusername.github.io/my-app, run:
npm install --save-dev gh-pages
Add the following script in your package.json
:
// ...
"scripts": {
// ...
"deploy": "npm run build&&gh-pages -d build"
}
(Note: the lack of whitespace is intentional.)
npm run deploy
Step 3: Deploy the site by running Then run:
npm run deploy
gh-pages
Step 4: Ensure your project's settings use Finally, make sure GitHub Pages option in your GitHub project settings is set to use the gh-pages
branch:
Step 5: Optionally, configure the domain
You can configure a custom domain with GitHub Pages by adding a CNAME
file to the public/
folder.
Notes on client-side routing
GitHub Pages doesn't support routers that use the HTML5 pushState
history API under the hood (for example, React Router using browserHistory
). This is because when there is a fresh page load for a url like http://user.github.io/todomvc/todos/42
, where /todos/42
is a frontend route, the GitHub Pages server returns 404 because it knows nothing of /todos/42
. If you want to add a router to a project hosted on GitHub Pages, here are a couple of solutions:
- You could switch from using HTML5 history API to routing with hashes. If you use React Router, you can switch to
hashHistory
for this effect, but the URL will be longer and more verbose (for example,http://user.github.io/todomvc/#/todos/42?_k=yknaj
). Read more about different history implementations in React Router. - Alternatively, you can use a trick to teach GitHub Pages to handle 404 by redirecting to your
index.html
page with a special redirect parameter. You would need to add a404.html
file with the redirection code to thebuild
folder before deploying your project, and you’ll need to add code handling the redirect parameter toindex.html
. You can find a detailed explanation of this technique in this guide.
Heroku
Use the Heroku Buildpack for Create React App.
You can find instructions in Deploying React with Zero Configuration.