Giter Club home page Giter Club logo

my-brews's Introduction

My Brews

This is a website for tracking the beers that I brew for the office and at home. This project is also to learn some new technologies.

Technologies Used

Front End
  • SASS
  • React
  • Various other libs
Back End / Building
  • Java 8 and JEE 7.0
  • Maven

Project Requirements

  • WildFly
  • A Postgres DB
  • Ruby (For SASS)
  Database Server   = localhost
  Database Name     = mybrews
  Database Password = welcome1
  Database Username = mybrews

These can be changed in the pom.xml

Installing Posgres

If you do not have postgresql, here are the steps for setup/install on linux.

sudo apt-get install -y postgresql-client postgresql postgresql-contrib pgadmin3

pgadmin3 is optional. It is the GUI tool.

Once it is installed, you can connect with:

sudo -u {db-user} psql {db-name}

I usually create a new linux user for each user in the database. Probably not required.. Just can't figure out out otherwise. The command (in Ubuntu) is

sudo useradd {username}

To create the database and user for the default configuration in the pom.xml

sudo -u postgres createuser -D -A -P mybrews
sudo -u postgres createdb -O mybrews mybrews
sudo -u mybrews psql -d mybrews -a -f src/main/scripts/tables.sql

This will use the postgres admin user to create a new user mybrews that only has privileges over the new database mybrews. The first command will also prompt for you to enter a password. The third command will run the tables.sql database script as the mybrews user in the new mybrews db.

Installing SASS

Windows

Navigate to http://rubyinstaller.org/ and choose your correct download. This is to install Ruby with the rubygems. Once

Windows and Linux

Once you have ruby and rubygems, verify that they are in your path with ruby -v and gem -v. If they are in your path, you can install sass with

gem install sass

Linux might require sudo.

Building, Deploying, and Running

Adding The Datasource and Postgresql Connector to Wildfly

Start up your wildfly node and run

mvn install

Will add the postgresql.jar to your wildfly server and add the MyBrewsDS data source.

Launching the WebServices

To build and deploy the application, run

mvn wildfly:deploy
Launching the Front End App

The front end app requires npm and gulp to be built and manage dependencies.

Currently, the front end app is only set for development and is running off of browsersync

To install any dependencies, run npm install. If new scss depdendencies have been added or this is your first time cloning, run npm run symlinks which will create the symlinks in the src/main/app/scss/vendors directory. You can view the README.md there as well. (Creating the symlinks will require Admin for Windows).

To install gulp, run npm install -g gulp.

Once your dependencies have been set up and gulp has been isntalled, you can launch the front end app with

gulp

Super simple! It will distribute all the files in a dist folder and open up your browser to localhost:3000 and you can view the app.

Web Services

Resource used for planning RESTful web services: http://www.restapitutorial.com/lessons/httpmethods.html

CRUD

This application is pretty much just create, retrieve, update, and delete.

Well.. now that I think about it, probably not too much delete. To keep consistent, I created an interface for each method so they will all have the same path when fully implemented.

Any time there is an {entityName}, it is a pluralized version.

Retrieving Data

Any entity will be retrieved just by sending a GET request to /api/{entityName}/{id}. An HTTPResponse will be returned with the entity (if found). If the entity is not found, Status Code 404 (Not Found) will be returned, otherwise 202 (OK) with the entity as json.

To retrieve all of a single entity, send a GET request to /api/{entityName}.

Some example curl calls:

curl -iX GET localhost:8080/my-brews/api/beers
curl -iX GET localhost:8080/my-brews/api/beers/1

The first call will retrieve all beers and the second call will attempt to find beer with id 1. Since there currently is no data for beer, try these curl requests (constants).

curl -iX GET localhost:8080/my-brews/api/beerstyles
curl -iX GET localhost:8080/my-brews/api/beercolors/1

The first call will retrieve all beer styles and the other call will return the beer color with id 1.

Creating Data

Any entity can be created by sending a POST request to /api/{entityName}.

An example curl call:

curl -H "Content-Type: application/json" \
     -d '{"name": "Wyeast #1332 Northwest Ale Yeast", "type": "LIQUID"}' \
     -i localhost:8080/my-brews/api/yeasts

This will create a new yeast with the name and given Yeast Type. This will return a status of 201 (Created) if successful along with a Location header with a link to the new resource. A successful create would return something like this:

HTTP/1.1 201 Created
Connection: keep-alive
X-Powered-By: Undertow/1
Server: WildFly/8
Location: /api/yeasts/1
Content-Length: 0
Date: Thu, 12 Mar 2015 00:19:51 GMT

Updating Data

An entity can be updated by sending a PUT request to /api/{entityName}

This might get updated later to pass in the id as well.. ex: /api/{entityName}/{id}. I'm not sure what I like yet.

An example update of the yeast we just created:

curl -H "Content-Type: application/json" \
     -X PUT -d '{"id": "1", "name": "Wyeast #1332 Northwest Ale Yeast", "type": "DRY"}' \
     -i localhost:8080/my-brews/api/yeasts

This updates the yeast we just created to have a DRY yeast type. Super exciting!!!

Deleting Data

An entity can be deleted by sending a DELETE request to /api/{entityName}/{id}. So lets delete that yeast we just created:

curl -iX DELETE localhost:8080/my-brews/api/yeasts/1

Wala! Magic!

Documentation and Dependencies

If you are interested in viewing the javadoc that is a part of this project and viewing all the dependencies, you can run

mvn site

which will generate a maven site with all dependencies and generated javadoc in your /target/site folder which you can then open and view in a browser.

my-brews's People

Contributors

mlaursen avatar jdhodges27 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.