Full stack web application (Angular, Web Sockets, Sockets.io, Express.js, Node.js, rethinkdb, PushBullet API) For sending out a text message to play rocket league and tracking the responses.
- Angular (using ES6)
- Node.js (using ES6)
- NPM modules
- Express
- Rethinkdb
- Sockets.io
- Push Bullet API
-
Pull this repository
-
Download and setup rethinkdb (https://www.rethinkdb.com/)
-
Install all npm modules
$ npm install
- Manually install pushbullet dependent modules (Because the push bullet api on GitHub is more up-to-date than npm; npm doesn't have Ephemerals)
$ npm install pushbullet
- Create secret/pushBulletApiToken.js that returns the API key
-
Run rethinkdb.exe
-
Navigate to project directory
//npm start defined in package.json
//Actual command is node --harmony ./bin/www
//Harmony flag enables staged ES6 features
$ npm start
- View application at localhost:3000
- CSS - BEM (https://css-tricks.com/bem-101/)
- Angular - John Papa's Guide (https://github.com/johnpapa/angular-styleguide)
- Rethink node module library requires more work than mongodb
- Creating tables and db if they don't exists is a pain
- Postman is easy for development testing and you can save your tests in a suite
- Iron Node is great for debugging node applications
- Easy to setup and learn
- Uses chrome debugger
- Frontend and backend model sharing is not easy. One uses require and the other use html to include files
- POST /Poll (Starts the process to poll the users)
- Push Bullet API send texts (https://docs.pushbullet.com/#send-sms)
- GET /Rsvp (Returns data about the user's reponse)
- POST /Rsvp (Updates data about the user's reponse)
- GET /User (Returns a list of registered users)
- Frontend - Display user list
- Frontend - Poll action
- Frontend - Display rsvp details on load
- Web Sockets emit messages when Rsvp is updated on the backend
- Frontend - Web socket rsvp details
- POST /User (Adds a new user/Updates existing user)
- DELETE /User/{id} (Removes a user)
- Frontend - Manage user list
- Frontend Polish - CSS, Animations
- Frontend - mobile friendly
- DELETE /Poll (Resets the polling process)