- build as central library as an NPM module
- precisely define all of events on shared library
- strong with Typescript
- test write as much as possible
- k8s cluster in cloud / local
- handle concurrency code
# enable ingress
$ minikube addons enable ingress
# mac env
$ code /etc/hosts
# modify src file
$ ts-node-dev --poll src/index.ts
# run
$ skaffold dev
- auth-depl.yaml
- auth-mongo-depl.yaml
- ingress-srv.yaml
# create secret for jwt key at auth
$ k create secret generic jwt-secret --from-literal=JWT_KEY=asdf
# create secret for stripe secret key
$ k create secret generic stripe-secret --from-literal=STRIPE_KEY=<secretkey>
# test auth at browser
# chrome at browser (typepo 'thisisunsafe')
### Microservices concept
1. build as central library as an NPM module
2. precisely define all of events on shared library
3. strong with Typescript
4. test write as much as possible
5. k8s cluster in cloud / local
6. handle concurrency code
### Typescript initialize
$ nvm install [varsion]
$ nvm use [varsion]
$ which npm
$ npm config set prefix $NVM_DIR/versions/node/[version]
$ npm install -g typescript ts-node
- Users
- Tickets
- Order
- Charge
- Common
- auth (mongodb)
- signup
- signin
- signout
- currentuser
- tickets (mongodb)
- orders (mongodb)
- expiration (redis)
- payments (mongodb)
- middlewares
- events
- UserCreated
- UserUpdated
- OrderCreated
- OrderCancelled
- OrderExpired
- TicketCreated
- TicketUpdated
- ChargeCreated
- Basic Request Handling
- Some tests around models
- Event emitting + receiving
- Jest (npm run test)
- Libs
# test setup
$ npm install --save-dev @types/jest @types/supertest jest ts-jest supertest mongodb-memory-server