This workshop aims to introduce the reader to managing infrastructure using Amazon Web Services (AWS).
We will learn to deploy real applications. As our demo app, we will use an open source test application called Conduit, which is handy to learn new frameworks because the same app has implementations in multiple frameworks for backend and frontend. In particular, we will use the version built with React and Django + Django-Rest-Framework backend.
In this repo, you can find the backend and frontend components, both with modified settings to fit our future infrastructure.
You must have an AWS account. Even though you mostly will be in the free tier, some services like Elastic Load Balancers, Encryption Keys, and others will be billed. This means that you should be ready to spend a few dollars (< 5 U$S) to complete this workshop.
If you want to, you can set up a billing alarm to avoid these situations, just in case.
TryoTip: if you are doing this workshop as part of Tryolabs training, feel free to ask for access to the Tryolabs Playground AWS account. This way, you will not have to put your own credit card.
This workshop contains the following sections:
Next: assuming you already have an AWS account, you can get started.
Bumps json5 to 2.2.3 and updates ancestor dependency react-scripts. These dependencies need to be updated together.
Updates json5
from 0.5.1 to 2.2.3
Sourced from json5's releases.
v2.2.3
- Fix: [email protected] is now the 'latest' release according to npm instead of v1.0.2. (#299)
v2.2.2
- Fix: Properties with the name
__proto__
are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).v2.2.1
- Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
v2.2.0
- New: Accurate and documented TypeScript declarations are now included. There is no need to install
@types/json5
. (#236, #244)v2.1.3 [code, diff]
v2.1.2
- Fix: Bump
minimist
tov1.2.5
. (#222)v2.1.1
- New:
package.json
andpackage.json5
include amodule
property so bundlers like webpack, rollup and parcel can take advantage of the ES Module build. (#208)- Fix:
stringify
outputs\0
as\\x00
when followed by a digit. (#210)- Fix: Spelling mistakes have been fixed. (#196)
v2.1.0
- New: The
index.mjs
andindex.min.mjs
browser builds in thedist
directory support ES6 modules. (#187)v2.0.1
- Fix: The browser builds in the
dist
directory support ES5. (#182)v2.0.0
Major: JSON5 officially supports Node.js v6 and later. Support for Node.js v4 has been dropped. Since Node.js v6 supports ES5 features, the code has been rewritten in native ES5, and the dependence on Babel has been eliminated.
New: Support for Unicode 10 has been added.
New: The test framework has been migrated from Mocha to Tap.
New: The browser build at
dist/index.js
is no longer minified by default. A minified version is available atdist/index.min.js
. (#181)Fix: The warning has been made clearer when line and paragraph separators are
... (truncated)
Sourced from json5's changelog.
v2.2.3 [code, diff]
- Fix: [email protected] is now the 'latest' release according to npm instead of v1.0.2. (#299)
v2.2.2 [code, diff]
- Fix: Properties with the name
__proto__
are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).v2.2.1 [code, diff]
- Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
v2.2.0 [code, diff]
- New: Accurate and documented TypeScript declarations are now included. There is no need to install
@types/json5
. (#236, #244)v2.1.3 [code, diff]
v2.1.2 [code, diff]
- Fix: Bump
minimist
tov1.2.5
. (#222)v2.1.1 [code, [diff][d2.1.1]]
... (truncated)
c3a7524
2.2.394fd06d
docs: update CHANGELOG for v2.2.33b8cebf
docs(security): use GitHub security advisoriesf0fd9e1
docs: publish a security policy6a91a05
docs(template): bug -> bug report14f8cb1
2.2.210cc7ca
docs: update CHANGELOG for v2.2.27774c10
fix: add proto to objects and arraysedde30a
Readme: slight tweak to intro97286f8
Improve example in readmeUpdates react-scripts
from 0.9.5 to 5.0.1
Sourced from react-scripts's releases.
v1.0.14
1.0.14 (September 26, 2017)
:bug: Bug Fix
react-dev-utils
react-error-overlay
:nail_care: Enhancement
react-dev-utils
#3077 Auto-detect running editor on Linux for error overlay. (
@gulderov
)#3131 Display process pid in already running message. (
@Pajn
):memo: Documentation
Other
- #3163 Add link to active CSS modules discussion. (
@NeekSandhu
)
react-scripts
#2908 Note that class fields have progressed to stage 3. (
@rickbeerendonk
)#3160 Update unclear wording in webpack configuration (file loader section). (
@kristiehoward
)
eslint-config-react-app
- #3072 Update eslint versions for install instructions. (
@jdcrensh
):house: Internal
react-scripts
#2989 Update install template to match accessibility guidelines. (
@davidleger95
)
react-error-overlay
... (truncated)
Sourced from react-scripts's changelog.
1.0.0 and Newer Versions
Please refer to CHANGELOG-1.x.md for the 1.x range, and https://github.com/facebook/create-react-app/blob/main/CHANGELOG.md for the newer versions.
19fa58d
Publish9802941
fix: webpack noise printed only if error or warning (#12245)2eef1d0
Update templates to use React 18 createRoot
(#12220)221e511
Publish5614c87
Add support for Tailwind (#11717)20edab4
fix(webpackDevServer): disable overlay for warnings (#11413)3afbbc0
Update all dependencies (#11624)f5467d5
feat(eslint-config-react-app): support ESLint 8.x (#11375)c7627ce
Update webpack and dev server (#11646)544befe
Update package.json (#11597)This version was pushed to npm by iansu, a new releaser for react-scripts since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps express from 4.16.2 to 4.18.2.
Sourced from express's releases.
4.18.2
- Fix regression routing a large stack in a single route
- deps: [email protected]
- deps: [email protected]
- perf: remove unnecessary object clone
- deps: [email protected]
4.18.1
- Fix hanging on large stack of sync routes
4.18.0
- Add "root" option to
res.download
- Allow
options
withoutfilename
inres.download
- Deprecate string and non-integer arguments to
res.status
- Fix behavior of
null
/undefined
asmaxAge
inres.cookie
- Fix handling very large stacks of sync middleware
- Ignore
Object.prototype
values in settings throughapp.set
/app.get
- Invoke
default
with same arguments as types inres.format
- Support proper 205 responses using
res.send
- Use
http-errors
forres.format
error- deps: [email protected]
- Fix error message for json parse whitespace in
strict
- Fix internal error when inflated body exceeds limit
- Prevent loss of async hooks context
- Prevent hanging when request already read
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Add
priority
option- Fix
expires
option to reject invalid dates- deps: [email protected]
- Replace internal
eval
usage withFunction
constructor- Use instance methods on
process
to check for listeners- deps: [email protected]
- Remove set content headers that break response
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Prevent loss of async hooks context
- deps: [email protected]
- deps: [email protected]
- Fix emitted 416 error missing headers property
- Limit the headers removed for 304 response
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
... (truncated)
Sourced from express's changelog.
4.18.2 / 2022-10-08
- Fix regression routing a large stack in a single route
- deps: [email protected]
- deps: [email protected]
- perf: remove unnecessary object clone
- deps: [email protected]
4.18.1 / 2022-04-29
- Fix hanging on large stack of sync routes
4.18.0 / 2022-04-25
- Add "root" option to
res.download
- Allow
options
withoutfilename
inres.download
- Deprecate string and non-integer arguments to
res.status
- Fix behavior of
null
/undefined
asmaxAge
inres.cookie
- Fix handling very large stacks of sync middleware
- Ignore
Object.prototype
values in settings throughapp.set
/app.get
- Invoke
default
with same arguments as types inres.format
- Support proper 205 responses using
res.send
- Use
http-errors
forres.format
error- deps: [email protected]
- Fix error message for json parse whitespace in
strict
- Fix internal error when inflated body exceeds limit
- Prevent loss of async hooks context
- Prevent hanging when request already read
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Add
priority
option- Fix
expires
option to reject invalid dates- deps: [email protected]
- Replace internal
eval
usage withFunction
constructor- Use instance methods on
process
to check for listeners- deps: [email protected]
- Remove set content headers that break response
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Prevent loss of async hooks context
- deps: [email protected]
- deps: [email protected]
... (truncated)
8368dc1
4.18.261f4049
docs: replace Freenode with Libera Chatbb7907b
build: [email protected]f56ce73
build: [email protected]24b3dc5
deps: [email protected]689d175
deps: [email protected]340be0f
build: [email protected]33e8dc3
docs: use Node.js name style644f646
build: [email protected]ecd7572
build: [email protected]Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps qs, qs and express. These dependencies needed to be updated together.
Updates qs
from 6.5.1 to 6.11.0
Sourced from qs's changelog.
6.11.0
- [New] [Fix]
stringify
: revert 0e903c0; addcommaRoundTrip
option (#442)- [readme] fix version badge
6.10.5
- [Fix]
stringify
: witharrayFormat: comma
, properly include an explicit[]
on a single-item array (#434)6.10.4
- [Fix]
stringify
: witharrayFormat: comma
, include an explicit[]
on a single-item array (#441)- [meta] use
npmignore
to autogenerate an npmignore file- [Dev Deps] update
eslint
,@ljharb/eslint-config
,aud
,has-symbol
,object-inspect
,tape
6.10.3
- [Fix]
parse
: ignore__proto__
keys (#428)- [Robustness]
stringify
: avoid relying on a globalundefined
(#427)- [actions] reuse common workflows
- [Dev Deps] update
eslint
,@ljharb/eslint-config
,object-inspect
,tape
6.10.2
- [Fix]
stringify
: actually fix cyclic references (#426)- [Fix]
stringify
: avoid encoding arrayformat comma whenencodeValuesOnly = true
(#424)- [readme] remove travis badge; add github actions/codecov badges; update URLs
- [Docs] add note and links for coercing primitive values (#408)
- [actions] update codecov uploader
- [actions] update workflows
- [Tests] clean up stringify tests slightly
- [Dev Deps] update
eslint
,@ljharb/eslint-config
,aud
,object-inspect
,safe-publish-latest
,tape
6.10.1
- [Fix]
stringify
: avoid exception on repeated object values (#402)6.10.0
- [New]
stringify
: throw on cycles, instead of an infinite loop (#395, #394, #393)- [New]
parse
: addallowSparse
option for collapsing arrays with missing indices (#312)- [meta] fix README.md (#399)
- [meta] only run
npm run dist
in publish, not install- [Dev Deps] update
eslint
,@ljharb/eslint-config
,aud
,has-symbols
,tape
- [Tests] fix tests on node v0.6
- [Tests] use
ljharb/actions/node/install
instead ofljharb/actions/node/run
- [Tests] Revert "[meta] ignore eclint transitive audit warning"
6.9.7
- [Fix]
parse
: ignore__proto__
keys (#428)- [Fix]
stringify
: avoid encoding arrayformat comma whenencodeValuesOnly = true
(#424)- [Robustness]
stringify
: avoid relying on a globalundefined
(#427)- [readme] remove travis badge; add github actions/codecov badges; update URLs
- [Docs] add note and links for coercing primitive values (#408)
- [Tests] clean up stringify tests slightly
- [meta] fix README.md (#399)
- Revert "[meta] ignore eclint transitive audit warning"
... (truncated)
56763c1
v6.11.0ddd3e29
[readme] fix version badgec313472
[New] [Fix] stringify
: revert 0e903c0; add commaRoundTrip
option95bc018
v6.10.50e903c0
[Fix] stringify
: with arrayFormat: comma
, properly include an explicit `[...ba9703c
v6.10.44e44019
[Fix] stringify
: with arrayFormat: comma
, include an explicit []
on a s...113b990
[Dev Deps] update object-inspect
c77f38f
[Dev Deps] update eslint
, @ljharb/eslint-config
, aud
, has-symbol
, tape
2cf45b2
[meta] use npmignore
to autogenerate an npmignore fileUpdates qs
from 6.3.0 to 6.11.0
Sourced from qs's changelog.
6.11.0
- [New] [Fix]
stringify
: revert 0e903c0; addcommaRoundTrip
option (#442)- [readme] fix version badge
6.10.5
- [Fix]
stringify
: witharrayFormat: comma
, properly include an explicit[]
on a single-item array (#434)6.10.4
- [Fix]
stringify
: witharrayFormat: comma
, include an explicit[]
on a single-item array (#441)- [meta] use
npmignore
to autogenerate an npmignore file- [Dev Deps] update
eslint
,@ljharb/eslint-config
,aud
,has-symbol
,object-inspect
,tape
6.10.3
- [Fix]
parse
: ignore__proto__
keys (#428)- [Robustness]
stringify
: avoid relying on a globalundefined
(#427)- [actions] reuse common workflows
- [Dev Deps] update
eslint
,@ljharb/eslint-config
,object-inspect
,tape
6.10.2
- [Fix]
stringify
: actually fix cyclic references (#426)- [Fix]
stringify
: avoid encoding arrayformat comma whenencodeValuesOnly = true
(#424)- [readme] remove travis badge; add github actions/codecov badges; update URLs
- [Docs] add note and links for coercing primitive values (#408)
- [actions] update codecov uploader
- [actions] update workflows
- [Tests] clean up stringify tests slightly
- [Dev Deps] update
eslint
,@ljharb/eslint-config
,aud
,object-inspect
,safe-publish-latest
,tape
6.10.1
- [Fix]
stringify
: avoid exception on repeated object values (#402)6.10.0
- [New]
stringify
: throw on cycles, instead of an infinite loop (#395, #394, #393)- [New]
parse
: addallowSparse
option for collapsing arrays with missing indices (#312)- [meta] fix README.md (#399)
- [meta] only run
npm run dist
in publish, not install- [Dev Deps] update
eslint
,@ljharb/eslint-config
,aud
,has-symbols
,tape
- [Tests] fix tests on node v0.6
- [Tests] use
ljharb/actions/node/install
instead ofljharb/actions/node/run
- [Tests] Revert "[meta] ignore eclint transitive audit warning"
6.9.7
- [Fix]
parse
: ignore__proto__
keys (#428)- [Fix]
stringify
: avoid encoding arrayformat comma whenencodeValuesOnly = true
(#424)- [Robustness]
stringify
: avoid relying on a globalundefined
(#427)- [readme] remove travis badge; add github actions/codecov badges; update URLs
- [Docs] add note and links for coercing primitive values (#408)
- [Tests] clean up stringify tests slightly
- [meta] fix README.md (#399)
- Revert "[meta] ignore eclint transitive audit warning"
... (truncated)
56763c1
v6.11.0ddd3e29
[readme] fix version badgec313472
[New] [Fix] stringify
: revert 0e903c0; add commaRoundTrip
option95bc018
v6.10.50e903c0
[Fix] stringify
: with arrayFormat: comma
, properly include an explicit `[...ba9703c
v6.10.44e44019
[Fix] stringify
: with arrayFormat: comma
, include an explicit []
on a s...113b990
[Dev Deps] update object-inspect
c77f38f
[Dev Deps] update eslint
, @ljharb/eslint-config
, aud
, has-symbol
, tape
2cf45b2
[meta] use npmignore
to autogenerate an npmignore fileUpdates express
from 4.16.2 to 4.18.2
Sourced from express's releases.
4.18.2
- Fix regression routing a large stack in a single route
- deps: [email protected]
- deps: [email protected]
- perf: remove unnecessary object clone
- deps: [email protected]
4.18.1
- Fix hanging on large stack of sync routes
4.18.0
- Add "root" option to
res.download
- Allow
options
withoutfilename
inres.download
- Deprecate string and non-integer arguments to
res.status
- Fix behavior of
null
/undefined
asmaxAge
inres.cookie
- Fix handling very large stacks of sync middleware
- Ignore
Object.prototype
values in settings throughapp.set
/app.get
- Invoke
default
with same arguments as types inres.format
- Support proper 205 responses using
res.send
- Use
http-errors
forres.format
error- deps: [email protected]
- Fix error message for json parse whitespace in
strict
- Fix internal error when inflated body exceeds limit
- Prevent loss of async hooks context
- Prevent hanging when request already read
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Add
priority
option- Fix
expires
option to reject invalid dates- deps: [email protected]
- Replace internal
eval
usage withFunction
constructor- Use instance methods on
process
to check for listeners- deps: [email protected]
- Remove set content headers that break response
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Prevent loss of async hooks context
- deps: [email protected]
- deps: [email protected]
- Fix emitted 416 error missing headers property
- Limit the headers removed for 304 response
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
... (truncated)
Sourced from express's changelog.
4.18.2 / 2022-10-08
- Fix regression routing a large stack in a single route
- deps: [email protected]
- deps: [email protected]
- perf: remove unnecessary object clone
- deps: [email protected]
4.18.1 / 2022-04-29
- Fix hanging on large stack of sync routes
4.18.0 / 2022-04-25
- Add "root" option to
res.download
- Allow
options
withoutfilename
inres.download
- Deprecate string and non-integer arguments to
res.status
- Fix behavior of
null
/undefined
asmaxAge
inres.cookie
- Fix handling very large stacks of sync middleware
- Ignore
Object.prototype
values in settings throughapp.set
/app.get
- Invoke
default
with same arguments as types inres.format
- Support proper 205 responses using
res.send
- Use
http-errors
forres.format
error- deps: [email protected]
- Fix error message for json parse whitespace in
strict
- Fix internal error when inflated body exceeds limit
- Prevent loss of async hooks context
- Prevent hanging when request already read
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Add
priority
option- Fix
expires
option to reject invalid dates- deps: [email protected]
- Replace internal
eval
usage withFunction
constructor- Use instance methods on
process
to check for listeners- deps: [email protected]
- Remove set content headers that break response
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Prevent loss of async hooks context
- deps: [email protected]
- deps: [email protected]
... (truncated)
8368dc1
4.18.261f4049
docs: replace Freenode with Libera Chatbb7907b
build: [email protected]f56ce73
build: [email protected]24b3dc5
deps: [email protected]689d175
deps: [email protected]340be0f
build: [email protected]33e8dc3
docs: use Node.js name style644f646
build: [email protected]ecd7572
build: [email protected]Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps css-what from 2.1.0 to 6.1.0.
Sourced from css-what's releases.
v6.1.0
- feat: Support pseudo elements with data (#762) 3be227a
https://github.com/fb55/css-what/compare/v6.0.1...v6.1.0
v6.0.1
- Fix parsing column combinators after tag names 503570e
https://github.com/fb55/css-what/compare/v6.0.0...v6.0.1
v6.0.0
Breaking Changes
- Added ES6 module export (by
@spocke
, fb55/css-what#680)
- CommonJS is still provided for earlier NodeJS versions, but this change might cause issues with your build system. If they aren't trivially resolved, please open an issue!
- Removed all options 5cad07b
- BREAKING: Added a new value for
ignoreCase
:'quirks'
should ignore the case only in quirks mode.- BREAKING: Tags and attributes aren't lowercased anymore
- Made selector types & actions enums 65121fe
- Set empty namespace to null in attributes de367ca
- Simplify stringify output 8a29466 b3e5e59
Features
- Support parsing column combinators 8030f67
Fixes
- Strip leading whitespace encapsulated in comments a812a1c
- This used to be a way to sneak in descendant operators in front of selectors.
Refactors
- Switched parsing to numbers 65121fe
- Restructured the parser to a big
switch
statement 7b6cc76Other
- Adopted CSS Selector parsing tests from WPT 1881bba
- Updated README to reflect changes b165a8d
New Contributors
@spocke
made their first contribution in fb55/css-what#680Full Changelog: https://github.com/fb55/css-what/compare/v5.1.0...v6.0.0
v5.1.0
What's Changed
- Add 'where' pseudo selector by
@jannispl
in fb55/css-what#620Full Changelog: https://github.com/fb55/css-what/compare/v5.0.1...v5.1.0
v5.0.1
Fixes:
... (truncated)
ee41dda
6.1.03be227a
feat: Support pseudo elements with data (#762)13ffc5b
build(deps-dev): bump @typescript-eslint/parser
from 5.16.0 to 5.17.0 (#760)7d0cc2f
build(deps-dev): bump @typescript-eslint/eslint-plugin
(#759)389d1b3
build(deps-dev): bump eslint from 8.11.0 to 8.12.0 (#758)afd14e7
build(deps-dev): bump prettier from 2.6.0 to 2.6.1 (#757)a1542de
build(deps-dev): bump typescript from 4.6.2 to 4.6.3 (#756)41d9752
build(deps-dev): bump ts-jest from 27.1.3 to 27.1.4 (#755)fed0407
build(deps): bump minimist from 1.2.5 to 1.2.6 (#754)96a2408
build(deps-dev): bump @types/node
from 17.0.22 to 17.0.23 (#753)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps ipython from 6.2.1 to 7.16.3.
d43c7c7
release 7.16.35fa1e40
Merge pull request from GHSA-pq7m-3gw7-gq5x8df8971
back to dev9f477b7
release 7.16.2138f266
bring back release helper from master branch5aa3634
Merge pull request #13341 from meeseeksmachine/auto-backport-of-pr-13335-on-7...bcae8e0
Backport PR #13335: What's new 7.16.28fcdcd3
Pin Jedi to <0.17.2.2486838
release 7.16.120bdc6f
fix conda buildDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps marked from 0.3.6 to 4.0.10.
Sourced from marked's releases.
v4.0.10
4.0.10 (2022-01-13)
Bug Fixes
- security: fix redos vulnerabilities (8f80657)
v4.0.9
4.0.9 (2022-01-06)
Bug Fixes
v4.0.8
4.0.8 (2021-12-19)
Bug Fixes
v4.0.7
4.0.7 (2021-12-09)
Bug Fixes
v4.0.6
4.0.6 (2021-12-02)
Bug Fixes
v4.0.5
4.0.5 (2021-11-25)
Bug Fixes
v4.0.4
4.0.4 (2021-11-19)
... (truncated)
ae01170
chore(release): 4.0.10 [skip ci]fceda57
🗜️ build [skip ci]8f80657
fix(security): fix redos vulnerabilitiesc4a3ccd
Merge pull request from GHSA-rrrm-qjm4-v8hfd7212a6
chore(deps-dev): Bump jasmine from 4.0.0 to 4.0.1 (#2352)5a84db5
chore(deps-dev): Bump rollup from 2.62.0 to 2.63.0 (#2350)2bc67a5
chore(deps-dev): Bump markdown-it from 12.3.0 to 12.3.2 (#2351)98996b8
chore(deps-dev): Bump @babel/preset-env
from 7.16.5 to 7.16.7 (#2353)ebc2c95
chore(deps-dev): Bump highlight.js from 11.3.1 to 11.4.0 (#2354)e5171a9
chore(release): 4.0.9 [skip ci]This version was pushed to npm by tonybrix, a new releaser for marked since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
AI consulting firm helping companies accelerate the adoption of AI technologies. Deep Learning, predictive analytics, computer vision, NLP.
GitHub Repository