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