We'll be using:
-
Postgres for our database
-
knex.js for our database migrations, seeds and queries.
-
express.js for our JSON routes
-
Mocha, Chai and SuperTest to test our routes
-
Prerequisites (Mac OS Commands)
- Latest version of Node.js
- brew install node
- Postgres
- brew install postgres
- brew services start postgres
- createdb
- Express Generator
- npm install -g express-generator
- Knex installed globaly
- npm install -g knex
- Latest version of Node.js
-
Create a server folder
- mkdir namaprojectfolder
-
Generate Express App
- express
-
initialize git repo
- git init
- gitignore node
-
Create database
- createdb namadatabase
-
Initialize knex project
-
Install knex and pg
- npm install --save knex pg
-
Create knexfile.js
- knex init
- ubah db connection di knexfile.js (development)
-
-
Create sticker table migration
- knex migrate:make namatable
- buat table di folder migrate, atur field sesuai keinginan
- knex migrate:latest (perintah untuk create table)
-
Seed sticker table with sample data
- knex seed:make namafiledatadummy
- bisa atur sendiri disitu/buat file baru, buat array object dengan isi data dummy (seed/namafiledatadummy)
- knex seed:run (perintah insert data dummy ke table)
-
Convert Express App to JSON API
- Remove view rendering
- delete folder view
- Remove routes folder
- delete folder routes
- Remove static serve and public folder
- delete folder public
- Remove view rendering
-
Update error handler
- bisa diskip/lihat app.js di repo exgrenex
- npm install
- npm uninstall jade (uninstall yg gak perlu)
-
Add api folder and create/mount router
- buat folder api
- buat file namatable di dalam folder api
- buat router ke home
- tambah router ke app.js diantara middleare dan error handling
- npm install nodemon --save-dev
- edit package.json, tambah "dev" -> nodemon
-
Connect to the database'
- Create database connection file
- buat folder db
- buat file knex.js, setting environment config
- Create a queries file
- buat file queries.js di folder db
- Create database connection file
-
List all records with GET /api/v1/stickers
- Create query
- Create route
-
Setup tests
- Install mocha, chai and supertest
- npm install --save-dev mocha cai supertest
- Add a test database connection
- tambah db connection di knexfile.js (test) dibawah development
- Add npm test script
- buat folder test
- buat file namatable.app.js di dalam folder test (buat testing crud tiap table) bisa pisah / jadi satu
- buat test script di file test.
- tambah package.json, "test" -> dropdb & createdb NODE_ENV=test mocha
- Install mocha, chai and supertest
-
Create before
- buat script di file testnya
- npm test (Make sure the tests are working!)
-
List all records with GET /api/v1/stickers
- Add test
-
Show one record with GET /api/v1/stickers/:id
- Validate id
- Create query
- Create route
- Add test
-
Create a record with POST /api/v1/stickers
- Create route
- Validate sticker!
- Create query
- Add test
-
Update a record with PUT /api/v1/stickers/:id
- Create route
- Validate id
- Validate updates
- Create query
- Add test
-
Delete a record with DELETE /api/v1/stickers/:id
- Create route
- Validate id
- Create query
- Add test
-
Deploy to heroku
- heroku login
- heroku create domainheroku
- heroku addons:create heroku-postgresql
- tambah connection db di knexfile.js (production)
- heroku pg:psql
- heroku config
- git push heroku master
- heroku open
- heroku run knex migrate:latest
- heroku run knex seed:run