Skip to content

Advanced PERN stack starter kit (PostgresSQL, Express, React, & Node), complete with ESLint, Webpack 4, Redux, React-Router, and Material-UI kit.

License

Notifications You must be signed in to change notification settings

tg970/PERN-Advanced-Starter

Repository files navigation

Known Vulnerabilities

PERN-Advanced-Starter

The PERN stack: PostgresSQL, Express, React, & Node

Live example: PERN-Starter

What makes this an advanced starter app you ask? This project folds together several tools that come together for a powerful dev environment and good start for a fully functional production application. It employs an 'advanced' implementation of pg-promise for interaction with a SQL database with additional basic security concerns added to the Express server.

Here's a list of the other fun bits folded into this project:

  • ESLint: Style guide, syntax, and developer error finder and enforcer
  • Webpack: Static module bundler, complier, & hot-reloader
  • Redux: Predictable state container/manager for JavaScript apps
  • React-Router: “Dynamic Routing” (navigation) for React client
  • React Material UI: Component library implementing Google's Material Design
  • Material-UI Kit: Curated mid-level component library complete with view examples
  • Axios: Promise based HTTP client for the browser and node.js

Using this project

First, make sure you have have PostgreSQL installed and running. Visit the PostgreSQL home page for more info and to download the install file.

Open a terminal window and create a new PG database:

$ createdb PERN-Starter

Then to get going using this starter app, first fork the repo:

fork

Then clone the fork to your local machine:

$ git clone https://github.com/*YOUR-USERNAME-HERE*/PERN-Advanced-Starter.git

Why fork? That way you can make your own changes, save them to github, and even share them with the main fork.

Hop into the project directory and install the dependencies:

$ cd PERN-Advanced-Starter
$ npm i

audit report If you have npm v6 installed and notice there were more than 0 vulnerabilities are found, run: npm audit fix

This is a constant battle: check your dependencies regularly and update them. More about npm's audit functionality here.

To start the Webpack dev server run:

$ npm run dev

And to build for deployment/production run:

$ npm run build
$ npm start

Also don't forget that your API won't work unless you create a users table.

Does this look familiar? no tables

To do this hit the following route, either in your browser or with Postman.

http://localhost:3000/api/users/create

Successful return: null

If you want to seed use:

http://localhost:3000/api/users/init

Successful return: id's

And if you don't have it: json formatter for chrome.

What's happening under the hood

pg-promise: Read up on it.

Other Config files:

.babelrc - Babel is a toolchain used by Webpack to convert ECMAScript 2015 code into a backwards compatible version of JavaScript for old browsers or environments. This file tells Babel our presets and plugins.

.eslintrc.json - This config file tells ESLint our settings for interpreting and reporting errors and warnings while we're writing our code. Delete or add rules, change style guide, whatever you want, this is where you do it. For this to work you'll need to make sure you have a linter and eslint installed in your code editor.

nodemon.json - When Webpack spins up a dev server it also starts nodemon in the background to proxy for api calls. This file tells nodemon which directory to watch for changes and restart when files are updated.

.webpack.config.js - Oh the magic of Webpack! This file gives Webpack all the important details for doing what it does. Again this file is configurable; for more information visit the configuration docs.

How did we get here?

There are so many resources out there to help developers resolve issues and build new skills and tools. I'm very thankful for the sharing of knowledge and I wanted to put this project together to help other devs that are hoping to try their hand at a full-stack React application.

This starter app was inspired and guided by the following resources:

Releases

No releases published

Packages

No packages published

Languages