###### tags: `stylish`
# STYLiSH Co-working project documentation
### Deployment
#### 1. Install packages: `npm install`
#### 2. Start MySQL server
#### 3. Import database:
1. `mysql -u <user_name> -p <stylish_db_name> < stylish_backend.sql`
2. `mysql -u <user_name> -p <stylish_test_db_name> < stylish_test.sql` (Optional)
#### 4. Create config: `.env` for back-end (You can copy the schema from template: `.env-template`)
1. set `DB_HOST`, `DB_USERNAME`, `DB_PASSWORD`, `DB_DATABASE` for MySQL server (`DB_DATABASE_TEST` is Optional)
2. set `NODE_ENV` to `development` for development
3. set `TAPPAY_PARTNER_KEY` for cash flow (copy from your STYLiSH project)
4. set `TOKEN_SECRET` for jwt
5. set `BCRYPT_SALT` for password encryption (Optional)
#### 5. Modify API_HOST destination:
1. modify file `public/src/util/api.js`
- change `this.API_HOST` value to `http://localhost:3000/api/1.0`
2. modify file `server/controllers/product_controller.js`
- change `hostname` value to `http://localhost:3000/api/1.0`
3. modify file `server/controllers/marketing_controller.js`
- change `http://xx.xxx.xxx.xxx/api/1.0` value to `req.hostname`
4. modify file `public/src/pages/favorite.js`
- change `http://xx.xxx.xxx.xxx/api/1.0` value to `req.hostname`
#### 6. Start a redis server in `localhost` at port `6379` (Optional, the server can still work without redis server, see `marketing_controller.js` for more detail)
#### 7. Start server: `nodemon app.js` or `npm run dev`
#### 8. Clear Browser localStorage if needed. The same address will use the same space to records localStorage key-value pairs and it may conflict with mine. (Optional)
### Integration Test (Optional)
1. Import `stylish_test.sql` into database
2. Set `DATABASE_TEST` key to `stylish_test`
#### For Macbook or Linux
3. Run integration test: `npm run test`
#### For Windows:
3. Run integration test: `npm run test_windows`