funcodingworkshop / bp-hapi-react-redux

Web UI (React, Redux, Hapi, Material UI)
2 stars 1 forks source link

Hapi React Redux Boilerplate

Boilerplate Project for fast start with React, Redux, Hapi and Material UI

TODO

Hints

Server

  1. Babel config for Backend (DONE)
  2. Hapi Server (DONE)
  3. MongoDB (DONE)
  4. Joi schema validation
  5. Testing with hapijs/lab
  6. API documentation with hapi-swagger

Client

  1. Webpack + Babel config for Frontend (DONE)
  2. React (DONE)
  3. Redux (DONE)
  4. Loaders for images, css, postCSS (DONE)
  5. React Router (DONE)
  6. Material UI components (DONE)
  7. Saga middleware (DONE)
  8. Server Side Rendering (DONE)
  9. Formik or Redux Form - for form creation
  10. Async data loading and validation
  11. CSS Modules
  12. Testing with Jest (DONE)
  13. Hot Reload

Functionality

  1. JWT Authentication (DONE)
  2. Login Page (DONE)
  3. Main menu, Header, Footer (DONE)
  4. CRUD with REST API and MongoDB (DONE)
  5. List page, Create/Edit page (DONE)
  6. Loaders
  7. Error notifications (DONE)
  8. Sign In / Sign Up validations

DevOps

  1. CircleCI (DONE)
  2. Servers (DONE)
  3. Docker Swarm (DONE)

Ways to start project

  1. Start Dev Mode
    • npm start
  2. Start Build
    • npm run build
    • npm run start-build
  3. Start Build in Docker (for MacOS)
    • npm run build
    • npm run docker-build
    • docker run -e MONGODB_HOST=host.docker.internal -e SERVICE_HOST=host.docker.internal:3001 -p 8080:8080 -d 972e05ca5a29
  4. Start Build in Docker Swarm (for MacOS)
    • npm run docker-build
    • clone project https://github.com/codingbootcampru/bp-devops
    • Stop local mongoDB (for MacOS: brew services stop mongodb)
    • create local folder, for example: /Users/{$user}/data
    • edit docker-compose.yml set services->mongo->volumes your local folder path, for example: " volumes: - "/Users/{$user}/data/mongo:/data/db" "
    • docker swarm init
    • docker stack deploy -c docker-compose.yml mystack
    • docker node ls
    • docker service ls