├── .eslintignore ├── .eslintrc.json ├── .github ├── CODEOWNERS └── workflows │ └── node-ci.yml ├── .gitignore ├── .gitpod.yml ├── .husky └── pre-commit ├── .lintstagedrc.js ├── .prettierignore ├── .prettierrc ├── CONTRIBUTE.md ├── LICENSE.md ├── README.md ├── apps ├── 25--5-clock │ ├── .dockerignore │ ├── .gitignore │ ├── client │ │ ├── .babelrc.json │ │ └── index.jsx │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── styles.css │ ├── rollup.config.js │ ├── sample.env │ └── server.js ├── american-british-translator │ ├── .babelrc │ ├── .dockerignore │ ├── .gitignore │ ├── assertion-analyser.js │ ├── components │ │ ├── american-only.js │ │ ├── american-to-british-spelling.js │ │ ├── american-to-british-titles.js │ │ ├── british-only.js │ │ └── translator.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── index.js │ │ └── style.css │ ├── routes │ │ ├── api.js │ │ └── fcctesting.js │ ├── sample.env │ ├── server.js │ ├── test-runner.js │ ├── tests │ │ ├── 1_unit-tests.js │ │ └── 2_functional-tests.js │ └── views │ │ └── index.html ├── anonymous-message-board │ ├── .dockerignore │ ├── Dockerfile │ ├── assertion-analyser.js │ ├── controllers │ │ ├── replyHandler.js │ │ └── threadHandler.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── style.css │ ├── routes │ │ ├── api.js │ │ └── fcctesting.js │ ├── sample.env │ ├── server.js │ ├── test-runner.js │ ├── tests │ │ └── 2_functional-tests.js │ └── views │ │ ├── board.html │ │ ├── index.html │ │ └── thread.html ├── bar-chart │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── script.js │ │ └── styles.css │ ├── sample.env │ └── server.js ├── build-a-pinterest-clone │ ├── .dockerignore │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── client │ │ ├── .babelrc.json │ │ ├── ajax-functions.js │ │ ├── index.jsx │ │ ├── navbar.jsx │ │ └── pic.jsx │ ├── config │ │ ├── auth.js │ │ └── passport.js │ ├── controllers │ │ └── appHandler.js │ ├── models │ │ ├── pics.js │ │ └── users.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── style.css │ ├── rollup.config.js │ ├── routes │ │ └── index.js │ ├── sample.env │ ├── server.js │ └── views │ │ └── index.html ├── cash-register │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── script.js │ │ └── styles.css │ ├── sample.env │ └── server.js ├── chart-the-stock-market │ ├── .dockerignore │ ├── .gitignore │ ├── Dockerfile │ ├── index.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── index.html │ │ ├── main.css │ │ └── stocks.js │ └── sample.env ├── choropleth-map │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── script.js │ │ └── styles.css │ ├── sample.env │ └── server.js ├── drum-machine │ ├── .dockerignore │ ├── .gitignore │ ├── client │ │ ├── .babelrc.json │ │ └── index.jsx │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── styles.css │ ├── rollup.config.js │ ├── sample.env │ └── server.js ├── exercise-tracker │ ├── .dockerignore │ ├── Dockerfile │ ├── models │ │ ├── exercises.js │ │ └── users.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── style.css │ ├── routes │ │ └── api.js │ ├── sample.env │ ├── server.js │ ├── tests │ │ └── 2_functional-tests.js │ └── views │ │ └── index.html ├── file-metadata-microservice │ ├── .dockerignore │ ├── .gitconfig │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── style.css │ ├── sample.env │ ├── server.js │ ├── tests │ │ ├── 2_functional-tests.js │ │ └── camperbot.png │ └── views │ │ └── index.html ├── forum-proxy │ ├── .dockerignore │ ├── README.md │ ├── package-lock.json │ ├── package.json │ ├── sample.env │ ├── server.mjs │ ├── tests │ │ └── functional.mjs │ └── views │ │ └── index.html ├── fruit-search │ ├── .dockerignore │ ├── app │ │ ├── controllers │ │ │ └── fruitController.js │ │ ├── fruits.json │ │ └── routes │ │ │ └── fruitRoutes.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── index.html │ │ └── styles.css │ ├── sample.env │ └── server.js ├── heat-map │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── script.js │ │ └── styles.css │ ├── sample.env │ └── server.js ├── image-search-abstraction-layer │ ├── .dockerignore │ ├── .gitignore │ ├── Dockerfile │ ├── api.js │ ├── app.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── imageSearch.js │ │ ├── index.html │ │ └── styles.css │ └── sample.env ├── issue-tracker │ ├── .dockerignore │ ├── Dockerfile │ ├── assertion-analyser.js │ ├── models │ │ └── issue.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── style.css │ ├── routes │ │ ├── api.js │ │ └── fcctesting.js │ ├── sample.env │ ├── server.js │ ├── test-runner.js │ ├── tests │ │ └── 2_functional-tests.js │ └── views │ │ ├── index.html │ │ └── issue.html ├── javascript-calculator │ ├── .dockerignore │ ├── .gitignore │ ├── client │ │ ├── .babelrc.json │ │ └── index.jsx │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── styles.css │ ├── rollup.config.js │ ├── sample.env │ └── server.js ├── manage-a-book-trading-club │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── app │ │ ├── app.js │ │ ├── controllers │ │ │ ├── booksController.js │ │ │ ├── count-incoming.js │ │ │ ├── requestsController.js │ │ │ ├── sessionsController.js │ │ │ ├── tradesController.js │ │ │ └── usersController.js │ │ ├── helpers │ │ │ ├── books.js │ │ │ └── users.js │ │ ├── models │ │ │ ├── Book.js │ │ │ ├── Request.js │ │ │ ├── Trade.js │ │ │ └── User.js │ │ ├── public │ │ │ ├── css │ │ │ │ ├── bootstrap-social.css │ │ │ │ ├── font-awesome.css │ │ │ │ └── style.css │ │ │ └── vendor │ │ │ │ └── font-awesome │ │ │ │ ├── HELP-US-OUT.txt │ │ │ │ ├── css │ │ │ │ ├── font-awesome.css │ │ │ │ └── font-awesome.min.css │ │ │ │ ├── fonts │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ └── fontawesome-webfont.woff2 │ │ │ │ ├── less │ │ │ │ ├── animated.less │ │ │ │ ├── bordered-pulled.less │ │ │ │ ├── core.less │ │ │ │ ├── fixed-width.less │ │ │ │ ├── font-awesome.less │ │ │ │ ├── icons.less │ │ │ │ ├── larger.less │ │ │ │ ├── list.less │ │ │ │ ├── mixins.less │ │ │ │ ├── path.less │ │ │ │ ├── rotated-flipped.less │ │ │ │ ├── screen-reader.less │ │ │ │ ├── stacked.less │ │ │ │ └── variables.less │ │ │ │ └── scss │ │ │ │ ├── _animated.scss │ │ │ │ ├── _bordered-pulled.scss │ │ │ │ ├── _core.scss │ │ │ │ ├── _fixed-width.scss │ │ │ │ ├── _icons.scss │ │ │ │ ├── _larger.scss │ │ │ │ ├── _list.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _path.scss │ │ │ │ ├── _rotated-flipped.scss │ │ │ │ ├── _screen-reader.scss │ │ │ │ ├── _stacked.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── font-awesome.scss │ │ ├── routes.js │ │ └── views │ │ │ ├── books │ │ │ ├── _add-book-form.pug │ │ │ ├── _select.pug │ │ │ ├── index.pug │ │ │ ├── my-books.pug │ │ │ └── selectBooks.pug │ │ │ ├── error.pug │ │ │ ├── layout.pug │ │ │ ├── login.pug │ │ │ ├── navbar.pug │ │ │ ├── requests │ │ │ ├── _select-gives.pug │ │ │ ├── _select-takes.pug │ │ │ ├── _show.pug │ │ │ ├── index.pug │ │ │ ├── new.pug │ │ │ └── select-books.pug │ │ │ ├── trades │ │ │ ├── _show.pug │ │ │ └── index.pug │ │ │ └── users │ │ │ ├── edit.pug │ │ │ ├── index.pug │ │ │ └── show.pug │ ├── config │ │ ├── passport.js │ │ └── session.js │ ├── db │ │ ├── connection.js │ │ └── seeds.js │ ├── package-lock.json │ ├── package.json │ ├── sample.env │ ├── server.js │ └── test │ │ ├── authorization.test.js │ │ ├── env │ │ ├── mocha.opts │ │ ├── navbar.test.js │ │ ├── requests.test.js │ │ ├── testSetup.js │ │ ├── things.test.js │ │ └── user.test.js ├── markdown-previewer │ ├── .dockerignore │ ├── .gitignore │ ├── client │ │ ├── .babelrc.json │ │ └── index.jsx │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── styles.css │ ├── rollup.config.js │ ├── sample.env │ └── server.js ├── metric-imperial-converter │ ├── .dockerignore │ ├── assertion-analyser.js │ ├── controllers │ │ └── convertHandler.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── style.css │ ├── routes │ │ ├── api.js │ │ └── fcctesting.js │ ├── sample.env │ ├── server.js │ ├── test-runner.js │ ├── tests │ │ ├── 1_unit-tests.js │ │ └── 2_functional-tests.js │ └── views │ │ └── index.html ├── nightlife-coordination-app │ └── README.md ├── p2p-video-chat-application │ ├── .dockerignore │ ├── .gitignore │ ├── README.md │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── index.html │ │ └── style.css │ ├── rollup.config.js │ ├── sample.env │ ├── server.js │ └── src │ │ └── client.js ├── palindrome-checker │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── script.js │ │ └── styles.css │ ├── sample.env │ └── server.js ├── personal-library │ ├── .dockerignore │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── assertion-analyser.js │ ├── db │ │ └── BookModel.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── client.js │ │ └── style.css │ ├── routes │ │ ├── api.js │ │ └── fcctesting.js │ ├── sample.env │ ├── server.js │ ├── test-runner.js │ ├── tests │ │ └── 2_functional-tests.js │ └── views │ │ └── index.html ├── personal-portfolio │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── styles.css │ ├── sample.env │ └── server.js ├── pokeapi-proxy │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── api │ │ ├── pokemon │ │ │ ├── pokemon.handlers.mjs │ │ │ ├── pokemon.middleware.mjs │ │ │ └── pokemon.routes.mjs │ │ └── utils │ │ │ └── cache.mjs │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── index.html │ │ └── style.css │ ├── sample.env │ └── server.mjs ├── product-landing-page │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── styles.css │ ├── sample.env │ └── server.js ├── random-quote-machine │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── script.js │ │ └── styles.css │ ├── sample.env │ └── server.js ├── request-header-parser-microservice │ ├── .dockerignore │ ├── .gitconfig │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── style.css │ ├── sample.env │ ├── server.js │ ├── tests │ │ └── 2_functional-tests.js │ └── views │ │ └── index.html ├── roman-numeral-converter │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── script.js │ │ └── styles.css │ ├── sample.env │ └── server.js ├── rpg-creature-api │ ├── .dockerignore │ ├── README.md │ ├── data │ │ └── creatures.json │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── index.html │ │ └── style.css │ ├── routes │ │ └── api.js │ ├── sample.env │ └── server.js ├── rpg-creature-search-app │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── script.js │ │ └── styles.css │ ├── sample.env │ └── server.js ├── scatterplot-graph │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── script.js │ │ └── styles.css │ ├── sample.env │ └── server.js ├── secure-real-time-multiplayer-game │ ├── .babelrc │ ├── .dockerignore │ ├── assertion-analyser.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── Collectible.mjs │ │ ├── Player.mjs │ │ ├── canvas-data.mjs │ │ ├── controls.mjs │ │ ├── game.mjs │ │ └── style.css │ ├── routes │ │ └── fcctesting.js │ ├── sample.env │ ├── server.js │ ├── test-runner.js │ ├── tests │ │ ├── 1_unit-tests.js │ │ └── 2_functional-tests.js │ └── views │ │ └── index.html ├── stock-price-checker-proxy │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── api │ │ └── v1.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── index.html │ │ └── style.css │ ├── sample.env │ └── server.js ├── stock-price-checker │ ├── .dockerignore │ ├── Dockerfile │ ├── assertion-analyser.js │ ├── controllers │ │ └── stockHandler.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── script.js │ │ └── style.css │ ├── routes │ │ ├── api.js │ │ └── fcctesting.js │ ├── sample.env │ ├── server.js │ ├── test-runner.js │ ├── tests │ │ └── 2_functional-tests.js │ └── views │ │ └── index.html ├── sudoku-solver │ ├── .babelrc │ ├── .dockerignore │ ├── .gitignore │ ├── assertion-analyser.js │ ├── controllers │ │ ├── puzzle-strings.js │ │ └── sudoku-solver.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── index.js │ │ └── style.css │ ├── routes │ │ ├── api.js │ │ └── fcctesting.js │ ├── sample.env │ ├── server.js │ ├── test-runner.js │ ├── tests │ │ ├── 1_unit-tests.js │ │ └── 2_functional-tests.js │ └── views │ │ └── index.html ├── survey-form │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── styles.css │ ├── sample.env │ └── server.js ├── technical-documentation-page │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── styles.css │ ├── sample.env │ └── server.js ├── telephone-number-validator │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── script.js │ │ └── styles.css │ ├── sample.env │ └── server.js ├── timestamp-microservice │ ├── .dockerignore │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── style.css │ ├── sample.env │ ├── server.js │ ├── tests │ │ └── 2_functional-tests.js │ └── views │ │ └── index.html ├── treemap-diagram │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── script.js │ │ └── styles.css │ ├── sample.env │ └── server.js ├── tribute-page │ ├── .dockerignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── styles.css │ ├── sample.env │ └── server.js ├── twitch-proxy │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── config.js │ ├── kill-node-process-cron.js │ ├── package-lock.json │ ├── package.json │ ├── sample.env │ ├── server.js │ ├── static-data │ │ ├── helix │ │ │ ├── games.json │ │ │ ├── index.js │ │ │ ├── streams.json │ │ │ └── users.json │ │ ├── kraken.json │ │ └── update.js │ ├── update-api-key.mjs │ ├── utilities │ │ ├── blacklist.js │ │ ├── legacy-data-handler.js │ │ ├── logger.js │ │ ├── outbound-reqs-limiter.js │ │ ├── req-validate.js │ │ └── static-data-handler.js │ └── views │ │ └── index.html ├── url-shortener-microservice │ ├── .dockerignore │ ├── Dockerfile │ ├── controllers │ │ └── urlHandler.js │ ├── models │ │ ├── counters.js │ │ └── urlEntries.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── style.css │ ├── sample.env │ ├── server.js │ ├── tests │ │ └── 2_functional-tests.js │ └── views │ │ └── index.html ├── voting-app │ ├── .dockerignore │ ├── .gitignore │ ├── Dockerfile │ ├── app.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── chartjs-2.6.0.min.js │ │ ├── jquery-3.1.0.min.js │ │ ├── main.css │ │ └── main.js │ ├── sample.env │ └── views │ │ ├── footer.ejs │ │ ├── head.ejs │ │ ├── index.ejs │ │ ├── login.ejs │ │ ├── mypolls.ejs │ │ ├── navigation.ejs │ │ ├── newpoll.ejs │ │ ├── signup.ejs │ │ └── singlepoll.ejs └── weather-proxy │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── data │ ├── cache.json │ ├── cities.json │ └── imgLinks.json │ ├── images │ ├── 01d.png │ ├── 01n.png │ ├── 02d.png │ ├── 02n.png │ ├── 03d.png │ ├── 03n.png │ ├── 04d.png │ ├── 04n.png │ ├── 09d.png │ ├── 09n.png │ ├── 10d.png │ ├── 10n.png │ ├── 11d.png │ ├── 11n.png │ ├── 13d.png │ ├── 13n.png │ ├── 50d.png │ └── 50n.png │ ├── package-lock.json │ ├── package.json │ ├── sample.env │ ├── server.js │ └── views │ └── index.html ├── docker-compose.yml ├── jest.config.js ├── package-lock.json ├── package.json ├── port-map.json ├── renovate.json ├── sample.env ├── scripts ├── copy-dockerignore.js └── create-caddyfile.js ├── shared.Dockerfile ├── shared.dockerignore └── test ├── jest-utils.js ├── ports.test.js └── twitch-proxy.test.js /.eslintignore: -------------------------------------------------------------------------------- 1 | # Ignore minified libraries 2 | apps/voting-app/public/*.min.js 3 | # Ignore bundles 4 | apps/**/public/bundle.js 5 | # Ignore test runner files? 6 | apps/**/assertion-analyser.js 7 | apps/**/test-runner.js 8 | apps/**/fcctesting.js 9 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # ------------------------------------------------- 2 | # CODEOWNERS - For automated review request for 3 | # high impact files. 4 | # 5 | # Important: The order in this file cascades. 6 | # 7 | # https://help.github.com/articles/about-codeowners 8 | # ------------------------------------------------- 9 | 10 | # ------------------------------------------------- 11 | # All files are owned by dev team 12 | # ------------------------------------------------- 13 | 14 | * @freecodecamp/dev-team 15 | 16 | # --- Owned by none (negate rule above) --- 17 | 18 | *.md 19 | package.json 20 | package-lock.json 21 | 22 | # ------------------------------------------------- 23 | # All files in the root are owned by dev team 24 | # ------------------------------------------------- 25 | 26 | /* @freecodecamp/dev-team 27 | 28 | # --- Owned by none (negate rule above) --- 29 | 30 | /package.json 31 | /package-lock.json 32 | 33 | # ------------------------------------------------- 34 | # Files that need attention from Staff 35 | # ------------------------------------------------- 36 | 37 | # README, LICENSE, etc. 38 | /*.md @freeCodeCamp/staff 39 | -------------------------------------------------------------------------------- /.github/workflows/node-ci.yml: -------------------------------------------------------------------------------- 1 | name: Node.js CI 2 | on: 3 | pull_request: 4 | branches: 5 | - main 6 | 7 | jobs: 8 | ci: 9 | name: Lint / Build / Test 10 | runs-on: ubuntu-latest 11 | 12 | strategy: 13 | matrix: 14 | node-version: [18] 15 | fail-fast: false 16 | 17 | steps: 18 | - name: Checkout Source Files 19 | uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2 20 | 21 | - name: Use Node.js v${{ matrix.node-version }} 22 | uses: actions/setup-node@7c12f8017d5436eb855f1ed4399f037a36fbd9e8 # v2 23 | with: 24 | node-version: ${{ matrix.node-version }} 25 | 26 | - name: Install Dependencies 27 | run: npm ci 28 | 29 | - name: Lint Files 30 | run: npm run lint 31 | 32 | - name: Create .env File For CI Builds 33 | run: cp sample.env .env 34 | 35 | - name: Start Projects 36 | run: | 37 | npm run build -- --no-cache 38 | npm start 39 | 40 | - name: Sleep For 30 Seconds 41 | run: sleep 30 42 | 43 | - name: Run Tests 44 | run: npm run test 45 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/.env 2 | node_modules 3 | .DS_Store 4 | .vscode/* 5 | apps/stock-price-checker-proxy/cache/ 6 | apps/twitch-proxy/.data/ 7 | apps/twitch-proxy/.logs/ 8 | Caddyfile 9 | .eslintcache -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | image: gitpod/workspace-mongodb 2 | ports: 3 | - port: 27017 4 | onOpen: ignore 5 | - port: 50000-50200 6 | onOpen: ignore 7 | # Set to public for tests to have access across ports 8 | # Technically, could be configured with `credentials: true` in fetch calls too 9 | visibility: public 10 | tasks: 11 | - before: | 12 | export DEMO_APPS_DOMAIN=$(gp url) 13 | - init: | 14 | cp sample.env .env 15 | npm ci 16 | mkdir /workspace/log 17 | mongod --fork --dbpath /data/db --logpath /workspace/log/mongod.log 18 | command: | 19 | npm i -g pm2 20 | for file in apps/**/sample.env; do cp $file ${file/sample/}; done; 21 | npm run start 22 | vscode: 23 | extensions: 24 | - dbaeumer.vscode-eslint 25 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore minified libraries 2 | apps/voting-app/public/*.min.js 3 | # Ignore bundles 4 | apps/**/public/bundle.js 5 | # Ignore test runner files? 6 | apps/**/assertion-analyser.js 7 | apps/**/test-runner.js 8 | apps/**/fcctesting.js 9 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "endOfLine": "lf", 3 | "semi": true, 4 | "singleQuote": true, 5 | "jsxSingleQuote": true, 6 | "tabWidth": 2, 7 | "trailingComma": "none", 8 | "arrowParens": "avoid" 9 | } 10 | -------------------------------------------------------------------------------- /CONTRIBUTE.md: -------------------------------------------------------------------------------- 1 | Note: See https://github.com/freeCodeCamp/demo-projects/issues/403 2 | -------------------------------------------------------------------------------- /apps/25--5-clock/.dockerignore: -------------------------------------------------------------------------------- 1 | .env 2 | .git 3 | .gitignore 4 | .dockerignore 5 | node_modules 6 | Dockerfile 7 | -------------------------------------------------------------------------------- /apps/25--5-clock/.gitignore: -------------------------------------------------------------------------------- 1 | public/bundle.js -------------------------------------------------------------------------------- /apps/25--5-clock/client/.babelrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["@babel/preset-env", { "targets": "> 0.25%, not dead" }], 4 | "@babel/preset-react" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /apps/25--5-clock/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 8 | 12 | 13 |Please Upload a File ...
24 |19 | GET https://stock-price-checker-proxy.freecodecamp.rocks/v1/stock/[symbol]/quote21 | Where: 22 |
symbol = msft | goog | aapl | ...23 |
31 | {"unix":1451001600000, "utc":"Fri, 25 Dec 2015 00:00:00 GMT"}
34 |