Create ReactJS and Redux Blog Web Application boilerplate
ReactJS
Redux
Blog
Web
Application
boilerplate
- By Code solution
- Jan 20th, 2021
- 0 comments
- 1
ReactJS
React is a declarative, efficient, and flexible JavaScript library for building user interfaces. It lets you compose complex UIs from small and isolated pieces of code called “components”.
Redux
Redux is a predictable state container for JavaScript apps.
Redux makes it easy to manage the state of your application. Another way of looking at this – it helps you manage the data you display and how you respond to user actions.
-
Installation
Redux is available as a package on NPM for use with a module bundler or in a Node application:
npm install --save redux
-
Create a New React App
Create React App is a comfortable environment for learning React, and is the best way to start building a new single-page application in React.
It sets up your development environment so that you can use the latest JavaScript features, provides a nice developer experience, and optimizes your app for production. You’ll need to have Node >= 6 and npm >= 5.2 on your machine. To create a project, run:
npx create-react-app my-app
cd my-app
npm start
-
New Project Folder Structure
my-app/ README.md node_modules/ package.json public/ index.html favicon.ico src/ App.css App.js App.test.js index.css index.js logo.svg
- Change App.js => App.jsx then run this command for run react app on browser
npm start
- After run success then install required package
npm install --save bootstrap react-dom react-redux react-router-dom reactstrap
- Open src/index.js add this code
import React from 'react'; import 'bootstrap/dist/css/bootstrap.min.css'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; import * as serviceWorker from './serviceWorker'; ReactDOM.render(, document.getElementById('root')); // If you want your app to work offline and load faster, you can change // unregister() to register() below. Note this comes with some pitfalls. // Learn more about service workers: http://bit.ly/CRA-PWA serviceWorker.unregister();
- After create components folder in src/components
- After that create componets folder then create header compontent src/components/header/Header.jsx and add code
import React, { Component } from 'react' import { Collapse, Navbar, NavbarToggler, Nav, NavItem, } from 'reactstrap'; import { Link } from 'react-router-dom'; import './Header.css' export default class Header extends Component { constructor(props) { super(props); this.toggle = this.toggle.bind(this); this.state = { isOpen: false }; } toggle() { this.setState({ isOpen: !this.state.isOpen }); } render() { return ( <div className="mb-50"> <Navbar color="faded" light fixed='top' expand="md"> <Link href="/" to="/"><img width="100%" src="http://www.codesolution.co.in/assets/images/logoicon.png" alt="Codesolution"/></Link> <NavbarToggler onClick={this.toggle} /> <Collapse isOpen={this.state.isOpen} navbar> <Nav className="ml-auto" navbar> <NavItem> <Link to="/">Home</Link> </NavItem> <NavItem> <Link href="/about" to="/about">About</Link> </NavItem> <NavItem> <Link href="/news" to="/news">Updates</Link> </NavItem> <NavItem> <Link href="/contact" to="/contact">Contact</Link> </NavItem> </Nav> </Collapse> </Navbar> </div> ) } }
- create header.css in header folder and add this code
nav.navbar, .navbar-default { background-color: #7263bc !important; border-bottom:5px solid #323f45; padding-top:10px; } .navbar-default { background-image: none; border: none; border-radius: 0; } .mb-50{ margin-bottom: 60px; } .navbar-default .navbar-nav > li > a { color: white; } .navbar-default .navbar-brand { color: white; } .navbar-default .navbar-toggle { border-color: white; } .navbar-default .navbar-toggle .icon-bar { background-color: white; } .navbar-default .navbar-toggle:focus, .navbar-default .navbar-toggle:hover { background-color: transparent; } .navbar-default .navbar-brand:focus, .navbar-default .navbar-brand:hover { color: white; background-color: transparent; } a, a:hover{ color: #FFF !important; text-decoration: none; padding: 10px; } .navbar-default .navbar-nav>li>a:focus, .navbar-default .navbar-nav>li>a:hover { color: white; background-color: transparent; }
- After then create footer folder in components and create Footer.jsx and css like that
Footer.jsx
import React, { Component } from 'react' import './Footer.css' export default class Footer extends Component { render() { return ( <div> <footer className="footer"> <div className="container background_color"> <p className="text-center">Copyright @2019 | Designed With by <a href="http://wapptechlogics.in/" target="blank">Wapptechlogics</a></p> </div> </footer> </div> ) } }
Footer.css
/*footer*/ .col_white_amrc { color:#FFF;} footer { width:100%; background-color:#263238; min-height:auto; padding:5px 0px 5px 0px ;} footer p { font-size:13px; color:#CCC; padding-bottom:0px; margin-bottom:8px;} .background_color{ background: #7263bc; border-radius: 0; } .bottom_border { border-bottom:1px solid #323f45; padding-bottom:20px; background: #7263bc;border-radius: 0px;}
- After then create home folder then create Home.jsx and css like that
Home.jsx
import React, { Component } from 'react' import { Link } from 'react-router-dom'; import { Card, CardImg, CardText, CardBody, CardTitle, CardSubtitle, Button, Container, Row, Col, ListGroup, ListGroupItem } from 'reactstrap'; import './Home.css'; export default class Home extends Component { componentDidMount() { window.scrollTo(0, 0) } render() { return ( <div> <Container> <Row> <Col xs="12" sm="8" md="9" lg="9"> <Row className="cart-list"> <Col xs="12" sm="6" md="6" lg="4" className="cart-item"> <Card> <CardImg top width="100%" src="codeicon.png" alt="Card image cap" /> <CardBody> <CardTitle>Card title</CardTitle> <CardSubtitle>Card subtitle</CardSubtitle> <CardText>Some quick example text to build on the card title and make up the bulk of the card's content.</CardText> <Link to="/about"><Button>Button</Button></Link> </CardBody> </Card> </Col> <Col xs="12" sm="6" md="6" lg="4" className="cart-item"> <Card> <CardImg top width="100%" src="codeicon.png" alt="Card image cap" /> <CardBody> <CardTitle>Card title</CardTitle> <CardSubtitle>Card subtitle</CardSubtitle> <CardText>Some quick example text to build on the card title and make up the bulk of the card's content.</CardText> <Link to="/about"><Button>Button</Button></Link> </CardBody> </Card> </Col> <Col xs="12" sm="6" md="6" lg="4" className="cart-item"> <Card> <CardImg top width="100%" src="codeicon.png" alt="Card image cap" /> <CardBody> <CardTitle>Card title</CardTitle> <CardSubtitle>Card subtitle</CardSubtitle> <CardText>Some quick example text to build on the card title and make up the bulk of the card's content.</CardText> <Link to="/about"><Button>Button</Button></Link> </CardBody> </Card> </Col> <Col xs="12" sm="6" md="6" lg="4" className="cart-item"> <Card> <CardImg top width="100%" src="codeicon.png" alt="Card image cap" /> <CardBody> <CardTitle>Card title</CardTitle> <CardSubtitle>Card subtitle</CardSubtitle> <CardText>Some quick example text to build on the card title and make up the bulk of the card's content.</CardText> <Link to="/about"><Button>Button</Button></Link> </CardBody> </Card> </Col> </Row> </Col> <Col xs="12" sm="4" md="3" lg="3"> <ListGroup className="list_div"> <ListGroupItem> <div className="image-div"> <img top width="100%" src="codeicon.png" className="image-left" alt="Card image cap" /> </div> <div className="image-title"> <h2 className="font14">Cras justo odio</h2> </div> </ListGroupItem> <ListGroupItem> <div className="image-div"> <img top width="100%" src="codeicon.png" className="image-left" alt="Card image cap" /> </div> <div className="image-title"> <h2 className="font14">Cras justo odio</h2> </div> </ListGroupItem> <ListGroupItem> <div className="image-div"> <img top width="100%" src="codeicon.png" className="image-left" alt="Card image cap" /> </div> <div className="image-title"> <h2 className="font14">Cras justo odio</h2> </div> </ListGroupItem> <ListGroupItem> <div className="image-div"> <img top width="100%" src="codeicon.png" className="image-left" alt="Card image cap" /> </div> <div className="image-title"> <h2 className="font14">Cras justo odio</h2> </div> </ListGroupItem> <ListGroupItem> <div className="image-div"> <img top width="100%" src="codeicon.png" className="image-left" alt="Card image cap" /> </div> <div className="image-title"> <h2 className="font14">Cras justo odio</h2> </div> </ListGroupItem> <ListGroupItem> <div className="image-div"> <img top width="100%" src="codeicon.png" className="image-left" alt="Card image cap" /> </div> <div className="image-title"> <h2 className="font14">Cras justo odio</h2> </div> </ListGroupItem> <ListGroupItem> <div className="image-div"> <img top width="100%" src="codeicon.png" className="image-left" alt="Card image cap" /> </div> <div className="image-title"> <h2 className="font14">Cras justo odio</h2> </div> </ListGroupItem> </ListGroup> </Col> </Row> </Container> </div> ) } }
Home.css
.jumbotron { margin-bottom: 4em; } .person-wrapper { margin-bottom: 2em; } .profile-pic { width: 50%; } .container{ margin: 0px; padding: 10px; max-width: 100% !important; } .btn-primary { background-image: none; border: none; border-radius: 0; background-color: #2892D7; } .card{ padding: 10px; margin: 0px; } .cart-list{ margin: 0%; } .cart-item{ padding: 10px; } .cart-item .card{ margin: 0px; } h3 { margin-bottom: 1em; } .image-left{ width: 50px; height: 50px; border-radius: 100%; } .list-group-item{ padding: 5px 10px !important; } .list_div{ padding: 10px 0px !important; } .image-div{ width: 50px; height: 50px; display: inline-block; } .image-title{ padding-left: 10px; display: inline-block; word-break: break-all; font-size: 14px !important; } .font14{ font-size: 14px !important; }
- Create news,about and contact folder and page like home folder and jsx
- Open App.jsx and add this code
import React, { Component } from 'react'; import { BrowserRouter as Router, Route } from 'react-router-dom'; import Home from './components/home/Home'; import About from './components/About/About'; import News from './components/news/News'; import Contact from './components/Contact/Contact'; import Navbar from './components/header/Header'; import Footer from './components/footer/Footer'; class App extends React.Component { render() { return ( <Router> <div> <Navbar /> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> <Route path="/news" component={News} /> <Route path="/contact" component={Contact} /> <Footer /> </div> </Router> ); } } export default App;
- After that run code
npm start