From ab759671d82962ef574d3c7b0223b869b541828f Mon Sep 17 00:00:00 2001
From: Arik Chakma
Date: Sat, 21 Sep 2024 03:01:34 +0600
Subject: [PATCH] feat: migrate questions
---
.astro/astro/content.d.ts | 1486 +----------------
.gitignore | 1 +
src/components/Guide/GuideContent.astro | 12 +-
src/components/GuideListItem.astro | 12 +-
src/content/question-group.ts | 2 +-
.../question-groups/{backend => }/backend.md | 0
.../question-groups/{devops => }/devops.md | 0
.../{frontend => }/frontend.md | 0
.../{javascript => }/javascript.md | 0
.../question-groups/{nodejs => }/nodejs.md | 0
.../question-groups/{react => }/react.md | 0
.../backend/content/anomaly-detection.md | 0
.../backend/content/api-dependencies.md | 0
.../backend/content/api-endpoint.md | 0
.../backend/content/api-tests.md | 0
.../backend/content/api-versioning.md | 0
.../backend/content/batch-processing.md | 0
.../benefits-drawbacks-microservices.md | 0
.../backend/content/bg-tasks.md | 0
.../backend/content/blue-green-deployment.md | 0
.../backend/content/cache-eviction.md | 0
.../backend/content/cap-theorem.md | 0
.../question-groups/backend/content/ci-cd.md | 0
.../backend/content/containerization.md | 0
.../backend/content/correlation-ids.md | 0
.../backend/content/data-encryption.md | 0
.../backend/content/db-connections.md | 0
.../content/deadlock-db-transaction.md | 0
.../backend/content/debugging-backend.md | 0
.../content/decompose-microservices.md | 0
.../backend/content/distributed-caching.md | 0
.../backend/content/eventual-consistency.md | 0
.../backend/content/fault-tolerance.md | 0
.../backend/content/file-uploads.md | 0
.../backend/content/fulltext-search.md | 0
.../backend/content/gdpr-compliance.md | 0
.../backend/content/high-available-storage.md | 0
.../content/http-request-response-cycle.md | 0
.../backend/content/idempotency.md | 0
.../backend/content/instrument-monitor.md | 0
.../backend/content/iot-streams.md | 0
.../backend/content/load-balanced-session.md | 0
.../backend/content/load-testing-api.md | 0
.../backend/content/long-running.md | 0
.../backend/content/maintainable-code.md | 0
.../backend/content/message-queue.md | 0
.../content/optimistic-vs-pessimistic.md | 0
.../backend/content/protect-sql-injection.md | 0
.../backend/content/rate-limiting.md | 0
.../backend/content/realtime-data-sync.md | 0
.../backend/content/rest-core-principles.md | 0
.../backend/content/reverse-proxy.md | 0
.../backend/content/scale-backend.md | 0
.../backend/content/schema-migrations.md | 0
.../backend/content/secure-api.md | 0
.../backend/content/secure-interservice.md | 0
.../backend/content/session-management.md | 0
.../backend/content/sql-vs-nosql.md | 0
.../question-groups/backend/content/sso.md | 0
.../backend/content/statelessness-http.md | 0
.../backend/content/webhooks.md | 0
.../devops/content/ansible-benefits.md | 0
.../devops/content/auto-scaling.md | 0
.../devops/content/blue-green-deployment.md | 0
.../devops/content/build-pipelines.md | 0
.../devops/content/canary-release.md | 0
.../devops/content/cicd-setup.md | 0
.../devops/content/cluster-health.md | 0
.../devops/content/common-iac-tools.md | 0
.../devops/content/container-consistency.md | 0
.../devops/content/container-vs-vm.md | 0
.../devops/content/continuous-monitoring.md | 0
.../devops/content/data-migration.md | 0
.../devops/content/devsecops.md | 0
.../devops/content/docker-compose.md | 0
.../devops/content/explain-ci-vs-cd.md | 0
.../devops/content/health-monitor.md | 0
.../devops/content/high-availability.md | 0
.../devops/content/iac-concept.md | 0
.../devops/content/implement-logging.md | 0
.../devops/content/kubernetes-components.md | 0
.../devops/content/kubernetes-operators.md | 0
.../devops/content/load-balancer.md | 0
.../devops/content/microservice-challenges.md | 0
.../content/microservice-vs-monolithic.md | 0
.../devops/content/migrate-environment.md | 0
.../devops/content/multi-cloud-kubernetes.md | 0
.../devops/content/multi-cloud.md | 0
.../devops/content/network-configuration.md | 0
.../devops/content/optimize-cicd.md | 0
.../devops/content/orchestration.md | 0
.../devops/content/popular-cicd-tools.md | 0
.../devops/content/purpose-of-cm.md | 0
.../devops/content/reverse-proxy.md | 0
.../devops/content/role-of-devops.md | 0
.../devops/content/scaling-differences.md | 0
.../devops/content/secret-management.md | 0
.../devops/content/serverless-computing.md | 0
.../devops/content/stateful-applications.md | 0
.../devops/content/what-is-devops.md | 0
.../devops/content/what-is-docker.md | 0
.../devops/content/what-is-gitops.md | 0
.../devops/content/what-is-helm-chart.md | 0
.../devops/content/what-is-iac.md | 0
.../devops/content/what-is-kubernetes.md | 0
.../devops/content/what-is-prometheus.md | 0
.../devops/content/what-is-rollback.md | 0
.../devops/content/what-is-service-mesh.md | 0
.../devops/content/what-is-shift-left.md | 0
.../devops/content/what-is-version-control.md | 0
.../devops/content/zero-downtime.md | 0
.../frontend/content/async-ops-js.md | 0
.../frontend/content/block-inline-elems.md | 0
.../frontend/content/box-model.md | 0
.../frontend/content/browser-render.md | 0
.../frontend/content/client-storage.md | 0
.../frontend/content/closures.md | 0
.../frontend/content/critical-css.md | 0
.../question-groups/frontend/content/csp.md | 0
.../frontend/content/css-grid.md | 0
.../frontend/content/css-specificity.md | 0
.../frontend/content/css-variables.md | 0
.../question-groups/frontend/content/dom.md | 0
.../frontend/content/em-vs-rem.md | 0
.../frontend/content/event-delegation.md | 0
.../frontend/content/event-listeners.md | 0
.../frontend/content/event-loop-js.md | 0
.../frontend/content/flexbox-layout.md | 0
.../frontend/content/id-vs-class.md | 0
.../frontend/content/improve-web-perf.md | 0
.../frontend/content/js-promises.md | 0
.../frontend/content/media-queries.md | 0
.../frontend/content/null-vs-undefined.md | 0
.../frontend/content/optimize-assets.md | 0
.../frontend/content/same-origin-policy.md | 0
.../frontend/content/seo-best-practices.md | 0
.../frontend/content/service-workers.md | 0
.../frontend/content/ssr-when.md | 0
.../frontend/content/state-mgmt-spa.md | 0
.../frontend/content/tree-shaking.md | 0
.../question-groups/frontend/content/vdom.md | 0
.../content/alert-prompt-confirm.md | 0
.../content/append-child-vs-insert-before.md | 0
.../javascript/content/async-vs-sync.md | 0
.../javascript/content/break-and-continue.md | 0
.../javascript/content/callback-hell.md | 0
.../javascript/content/closure.md | 0
.../javascript/content/comma-operator.md | 0
.../javascript/content/create-element.md | 0
.../javascript/content/custom-event.md | 0
.../javascript/content/debug-javascript.md | 0
.../javascript/content/defer-vs-async.md | 0
.../javascript/content/do-while-loop.md | 0
.../javascript/content/equality-operator.md | 0
.../content/error-in-async-await.md | 0
.../javascript/content/error-in-promise.md | 0
.../javascript/content/event-bubbling.md | 0
.../javascript/content/event-loop.md | 0
.../javascript/content/explicit-binding.md | 0
.../javascript/content/filter-method.md | 0
.../content/finally-block-in-promise.md | 0
.../content/find-unique-array-values.md | 0
.../javascript/content/for-each-method.md | 0
.../javascript/content/heap-and-stack.md | 0
.../javascript/content/hoisting.md | 0
.../javascript/content/iife.md | 0
.../javascript/content/immutable-object.md | 0
.../javascript/content/increment-operator.md | 0
.../javascript/content/infinite-loop.md | 0
.../javascript/content/inheritance.md | 0
.../javascript/content/labelled-statements.md | 0
.../javascript/content/logical-operators.md | 0
.../javascript/content/map-method.md | 0
.../question-groups/javascript/content/map.md | 0
.../javascript/content/measure-dimensions.md | 0
.../javascript/content/merge-arrays.md | 0
.../content/nullish-coalescing-operator.md | 0
.../javascript/content/parse-json.md | 0
.../javascript/content/prevent-default.md | 0
.../content/promise-all-vs-all-settled.md | 0
.../javascript/content/prototype-chain.md | 0
.../javascript/content/query-selector.md | 0
.../javascript/content/reduce-method.md | 0
.../javascript/content/remove-element.md | 0
.../javascript/content/scroll-to-top.md | 0
.../javascript/content/set-interval.md | 0
.../javascript/content/set-timeout.md | 0
.../question-groups/javascript/content/set.md | 0
.../javascript/content/spread-operator.md | 0
.../javascript/content/switch-case.md | 0
.../javascript/content/ternary-operator.md | 0
.../content/variable-number-of-arguments.md | 0
.../nodejs/content/commonjs-vs-esm.md | 0
.../nodejs/content/error-handling.md | 0
.../nodejs/content/exit-codes.md | 0
.../nodejs/content/input-from-command-line.md | 0
.../nodejs/content/order-priority.md | 0
.../nodejs/content/process-argv.md | 0
.../nodejs/content/process-cwd-vs-dirname.md | 0
.../nodejs/content/web-server.md | 0
.../react/content/component-lifecycle.md | 0
.../content/controlled-vs-uncontrolled.md | 0
.../react/content/create-portal.md | 0
.../react/content/custom-hook.md | 0
.../react/content/error-boundaries.md | 0
.../react/content/flush-sync.md | 0
.../react/content/investigate-slow-app.md | 0
.../react/content/lazy-loading.md | 0
.../react/content/pure-components.md | 0
.../react/content/re-renders.md | 0
.../react/content/ref-forwarding.md | 0
.../react/content/render-list.md | 0
.../react/content/strict-mode.md | 0
.../question-groups/react/content/suspense.md | 0
.../react/content/synthetic-events.md | 0
.../react/content/use-transition.md | 0
.../react/content/virtual-dom.md | 0
src/lib/guide.ts | 2 +-
src/lib/question-group.ts | 71 +-
src/pages/authors/[authorId].astro | 10 +-
src/pages/backend/developer-skills.astro | 2 +-
src/pages/backend/developer-tools.astro | 2 +-
src/pages/backend/languages.astro | 2 +-
src/pages/backend/project-ideas.astro | 2 +-
src/pages/backend/technologies.astro | 4 +-
src/pages/devops/career-path.astro | 4 +-
src/pages/devops/devops-engineer.astro | 4 +-
src/pages/devops/devops-vs-sre.astro | 4 +-
.../how-to-become-devops-engineer.astro | 4 +-
src/pages/devops/skills.astro | 4 +-
src/pages/frontend/developer-skills.astro | 4 +-
.../how-to-become-frontend-developer.astro | 4 +-
src/pages/frontend/languages.astro | 4 +-
src/pages/full-stack/developer-skills.astro | 4 +-
.../full-stack/vs-software-engineer.astro | 4 +-
src/pages/guides/[guideId].astro | 6 +-
src/pages/guides/index.astro | 6 +-
src/pages/java/developer-skills.astro | 4 +-
src/pages/pages.json.ts | 12 +-
src/pages/questions/[questionGroupId].astro | 17 +-
src/pages/questions/index.astro | 6 +-
241 files changed, 110 insertions(+), 1589 deletions(-)
rename src/content/question-groups/{backend => }/backend.md (100%)
rename src/content/question-groups/{devops => }/devops.md (100%)
rename src/content/question-groups/{frontend => }/frontend.md (100%)
rename src/content/question-groups/{javascript => }/javascript.md (100%)
rename src/content/question-groups/{nodejs => }/nodejs.md (100%)
rename src/content/question-groups/{react => }/react.md (100%)
rename src/{content => data}/question-groups/backend/content/anomaly-detection.md (100%)
rename src/{content => data}/question-groups/backend/content/api-dependencies.md (100%)
rename src/{content => data}/question-groups/backend/content/api-endpoint.md (100%)
rename src/{content => data}/question-groups/backend/content/api-tests.md (100%)
rename src/{content => data}/question-groups/backend/content/api-versioning.md (100%)
rename src/{content => data}/question-groups/backend/content/batch-processing.md (100%)
rename src/{content => data}/question-groups/backend/content/benefits-drawbacks-microservices.md (100%)
rename src/{content => data}/question-groups/backend/content/bg-tasks.md (100%)
rename src/{content => data}/question-groups/backend/content/blue-green-deployment.md (100%)
rename src/{content => data}/question-groups/backend/content/cache-eviction.md (100%)
rename src/{content => data}/question-groups/backend/content/cap-theorem.md (100%)
rename src/{content => data}/question-groups/backend/content/ci-cd.md (100%)
rename src/{content => data}/question-groups/backend/content/containerization.md (100%)
rename src/{content => data}/question-groups/backend/content/correlation-ids.md (100%)
rename src/{content => data}/question-groups/backend/content/data-encryption.md (100%)
rename src/{content => data}/question-groups/backend/content/db-connections.md (100%)
rename src/{content => data}/question-groups/backend/content/deadlock-db-transaction.md (100%)
rename src/{content => data}/question-groups/backend/content/debugging-backend.md (100%)
rename src/{content => data}/question-groups/backend/content/decompose-microservices.md (100%)
rename src/{content => data}/question-groups/backend/content/distributed-caching.md (100%)
rename src/{content => data}/question-groups/backend/content/eventual-consistency.md (100%)
rename src/{content => data}/question-groups/backend/content/fault-tolerance.md (100%)
rename src/{content => data}/question-groups/backend/content/file-uploads.md (100%)
rename src/{content => data}/question-groups/backend/content/fulltext-search.md (100%)
rename src/{content => data}/question-groups/backend/content/gdpr-compliance.md (100%)
rename src/{content => data}/question-groups/backend/content/high-available-storage.md (100%)
rename src/{content => data}/question-groups/backend/content/http-request-response-cycle.md (100%)
rename src/{content => data}/question-groups/backend/content/idempotency.md (100%)
rename src/{content => data}/question-groups/backend/content/instrument-monitor.md (100%)
rename src/{content => data}/question-groups/backend/content/iot-streams.md (100%)
rename src/{content => data}/question-groups/backend/content/load-balanced-session.md (100%)
rename src/{content => data}/question-groups/backend/content/load-testing-api.md (100%)
rename src/{content => data}/question-groups/backend/content/long-running.md (100%)
rename src/{content => data}/question-groups/backend/content/maintainable-code.md (100%)
rename src/{content => data}/question-groups/backend/content/message-queue.md (100%)
rename src/{content => data}/question-groups/backend/content/optimistic-vs-pessimistic.md (100%)
rename src/{content => data}/question-groups/backend/content/protect-sql-injection.md (100%)
rename src/{content => data}/question-groups/backend/content/rate-limiting.md (100%)
rename src/{content => data}/question-groups/backend/content/realtime-data-sync.md (100%)
rename src/{content => data}/question-groups/backend/content/rest-core-principles.md (100%)
rename src/{content => data}/question-groups/backend/content/reverse-proxy.md (100%)
rename src/{content => data}/question-groups/backend/content/scale-backend.md (100%)
rename src/{content => data}/question-groups/backend/content/schema-migrations.md (100%)
rename src/{content => data}/question-groups/backend/content/secure-api.md (100%)
rename src/{content => data}/question-groups/backend/content/secure-interservice.md (100%)
rename src/{content => data}/question-groups/backend/content/session-management.md (100%)
rename src/{content => data}/question-groups/backend/content/sql-vs-nosql.md (100%)
rename src/{content => data}/question-groups/backend/content/sso.md (100%)
rename src/{content => data}/question-groups/backend/content/statelessness-http.md (100%)
rename src/{content => data}/question-groups/backend/content/webhooks.md (100%)
rename src/{content => data}/question-groups/devops/content/ansible-benefits.md (100%)
rename src/{content => data}/question-groups/devops/content/auto-scaling.md (100%)
rename src/{content => data}/question-groups/devops/content/blue-green-deployment.md (100%)
rename src/{content => data}/question-groups/devops/content/build-pipelines.md (100%)
rename src/{content => data}/question-groups/devops/content/canary-release.md (100%)
rename src/{content => data}/question-groups/devops/content/cicd-setup.md (100%)
rename src/{content => data}/question-groups/devops/content/cluster-health.md (100%)
rename src/{content => data}/question-groups/devops/content/common-iac-tools.md (100%)
rename src/{content => data}/question-groups/devops/content/container-consistency.md (100%)
rename src/{content => data}/question-groups/devops/content/container-vs-vm.md (100%)
rename src/{content => data}/question-groups/devops/content/continuous-monitoring.md (100%)
rename src/{content => data}/question-groups/devops/content/data-migration.md (100%)
rename src/{content => data}/question-groups/devops/content/devsecops.md (100%)
rename src/{content => data}/question-groups/devops/content/docker-compose.md (100%)
rename src/{content => data}/question-groups/devops/content/explain-ci-vs-cd.md (100%)
rename src/{content => data}/question-groups/devops/content/health-monitor.md (100%)
rename src/{content => data}/question-groups/devops/content/high-availability.md (100%)
rename src/{content => data}/question-groups/devops/content/iac-concept.md (100%)
rename src/{content => data}/question-groups/devops/content/implement-logging.md (100%)
rename src/{content => data}/question-groups/devops/content/kubernetes-components.md (100%)
rename src/{content => data}/question-groups/devops/content/kubernetes-operators.md (100%)
rename src/{content => data}/question-groups/devops/content/load-balancer.md (100%)
rename src/{content => data}/question-groups/devops/content/microservice-challenges.md (100%)
rename src/{content => data}/question-groups/devops/content/microservice-vs-monolithic.md (100%)
rename src/{content => data}/question-groups/devops/content/migrate-environment.md (100%)
rename src/{content => data}/question-groups/devops/content/multi-cloud-kubernetes.md (100%)
rename src/{content => data}/question-groups/devops/content/multi-cloud.md (100%)
rename src/{content => data}/question-groups/devops/content/network-configuration.md (100%)
rename src/{content => data}/question-groups/devops/content/optimize-cicd.md (100%)
rename src/{content => data}/question-groups/devops/content/orchestration.md (100%)
rename src/{content => data}/question-groups/devops/content/popular-cicd-tools.md (100%)
rename src/{content => data}/question-groups/devops/content/purpose-of-cm.md (100%)
rename src/{content => data}/question-groups/devops/content/reverse-proxy.md (100%)
rename src/{content => data}/question-groups/devops/content/role-of-devops.md (100%)
rename src/{content => data}/question-groups/devops/content/scaling-differences.md (100%)
rename src/{content => data}/question-groups/devops/content/secret-management.md (100%)
rename src/{content => data}/question-groups/devops/content/serverless-computing.md (100%)
rename src/{content => data}/question-groups/devops/content/stateful-applications.md (100%)
rename src/{content => data}/question-groups/devops/content/what-is-devops.md (100%)
rename src/{content => data}/question-groups/devops/content/what-is-docker.md (100%)
rename src/{content => data}/question-groups/devops/content/what-is-gitops.md (100%)
rename src/{content => data}/question-groups/devops/content/what-is-helm-chart.md (100%)
rename src/{content => data}/question-groups/devops/content/what-is-iac.md (100%)
rename src/{content => data}/question-groups/devops/content/what-is-kubernetes.md (100%)
rename src/{content => data}/question-groups/devops/content/what-is-prometheus.md (100%)
rename src/{content => data}/question-groups/devops/content/what-is-rollback.md (100%)
rename src/{content => data}/question-groups/devops/content/what-is-service-mesh.md (100%)
rename src/{content => data}/question-groups/devops/content/what-is-shift-left.md (100%)
rename src/{content => data}/question-groups/devops/content/what-is-version-control.md (100%)
rename src/{content => data}/question-groups/devops/content/zero-downtime.md (100%)
rename src/{content => data}/question-groups/frontend/content/async-ops-js.md (100%)
rename src/{content => data}/question-groups/frontend/content/block-inline-elems.md (100%)
rename src/{content => data}/question-groups/frontend/content/box-model.md (100%)
rename src/{content => data}/question-groups/frontend/content/browser-render.md (100%)
rename src/{content => data}/question-groups/frontend/content/client-storage.md (100%)
rename src/{content => data}/question-groups/frontend/content/closures.md (100%)
rename src/{content => data}/question-groups/frontend/content/critical-css.md (100%)
rename src/{content => data}/question-groups/frontend/content/csp.md (100%)
rename src/{content => data}/question-groups/frontend/content/css-grid.md (100%)
rename src/{content => data}/question-groups/frontend/content/css-specificity.md (100%)
rename src/{content => data}/question-groups/frontend/content/css-variables.md (100%)
rename src/{content => data}/question-groups/frontend/content/dom.md (100%)
rename src/{content => data}/question-groups/frontend/content/em-vs-rem.md (100%)
rename src/{content => data}/question-groups/frontend/content/event-delegation.md (100%)
rename src/{content => data}/question-groups/frontend/content/event-listeners.md (100%)
rename src/{content => data}/question-groups/frontend/content/event-loop-js.md (100%)
rename src/{content => data}/question-groups/frontend/content/flexbox-layout.md (100%)
rename src/{content => data}/question-groups/frontend/content/id-vs-class.md (100%)
rename src/{content => data}/question-groups/frontend/content/improve-web-perf.md (100%)
rename src/{content => data}/question-groups/frontend/content/js-promises.md (100%)
rename src/{content => data}/question-groups/frontend/content/media-queries.md (100%)
rename src/{content => data}/question-groups/frontend/content/null-vs-undefined.md (100%)
rename src/{content => data}/question-groups/frontend/content/optimize-assets.md (100%)
rename src/{content => data}/question-groups/frontend/content/same-origin-policy.md (100%)
rename src/{content => data}/question-groups/frontend/content/seo-best-practices.md (100%)
rename src/{content => data}/question-groups/frontend/content/service-workers.md (100%)
rename src/{content => data}/question-groups/frontend/content/ssr-when.md (100%)
rename src/{content => data}/question-groups/frontend/content/state-mgmt-spa.md (100%)
rename src/{content => data}/question-groups/frontend/content/tree-shaking.md (100%)
rename src/{content => data}/question-groups/frontend/content/vdom.md (100%)
rename src/{content => data}/question-groups/javascript/content/alert-prompt-confirm.md (100%)
rename src/{content => data}/question-groups/javascript/content/append-child-vs-insert-before.md (100%)
rename src/{content => data}/question-groups/javascript/content/async-vs-sync.md (100%)
rename src/{content => data}/question-groups/javascript/content/break-and-continue.md (100%)
rename src/{content => data}/question-groups/javascript/content/callback-hell.md (100%)
rename src/{content => data}/question-groups/javascript/content/closure.md (100%)
rename src/{content => data}/question-groups/javascript/content/comma-operator.md (100%)
rename src/{content => data}/question-groups/javascript/content/create-element.md (100%)
rename src/{content => data}/question-groups/javascript/content/custom-event.md (100%)
rename src/{content => data}/question-groups/javascript/content/debug-javascript.md (100%)
rename src/{content => data}/question-groups/javascript/content/defer-vs-async.md (100%)
rename src/{content => data}/question-groups/javascript/content/do-while-loop.md (100%)
rename src/{content => data}/question-groups/javascript/content/equality-operator.md (100%)
rename src/{content => data}/question-groups/javascript/content/error-in-async-await.md (100%)
rename src/{content => data}/question-groups/javascript/content/error-in-promise.md (100%)
rename src/{content => data}/question-groups/javascript/content/event-bubbling.md (100%)
rename src/{content => data}/question-groups/javascript/content/event-loop.md (100%)
rename src/{content => data}/question-groups/javascript/content/explicit-binding.md (100%)
rename src/{content => data}/question-groups/javascript/content/filter-method.md (100%)
rename src/{content => data}/question-groups/javascript/content/finally-block-in-promise.md (100%)
rename src/{content => data}/question-groups/javascript/content/find-unique-array-values.md (100%)
rename src/{content => data}/question-groups/javascript/content/for-each-method.md (100%)
rename src/{content => data}/question-groups/javascript/content/heap-and-stack.md (100%)
rename src/{content => data}/question-groups/javascript/content/hoisting.md (100%)
rename src/{content => data}/question-groups/javascript/content/iife.md (100%)
rename src/{content => data}/question-groups/javascript/content/immutable-object.md (100%)
rename src/{content => data}/question-groups/javascript/content/increment-operator.md (100%)
rename src/{content => data}/question-groups/javascript/content/infinite-loop.md (100%)
rename src/{content => data}/question-groups/javascript/content/inheritance.md (100%)
rename src/{content => data}/question-groups/javascript/content/labelled-statements.md (100%)
rename src/{content => data}/question-groups/javascript/content/logical-operators.md (100%)
rename src/{content => data}/question-groups/javascript/content/map-method.md (100%)
rename src/{content => data}/question-groups/javascript/content/map.md (100%)
rename src/{content => data}/question-groups/javascript/content/measure-dimensions.md (100%)
rename src/{content => data}/question-groups/javascript/content/merge-arrays.md (100%)
rename src/{content => data}/question-groups/javascript/content/nullish-coalescing-operator.md (100%)
rename src/{content => data}/question-groups/javascript/content/parse-json.md (100%)
rename src/{content => data}/question-groups/javascript/content/prevent-default.md (100%)
rename src/{content => data}/question-groups/javascript/content/promise-all-vs-all-settled.md (100%)
rename src/{content => data}/question-groups/javascript/content/prototype-chain.md (100%)
rename src/{content => data}/question-groups/javascript/content/query-selector.md (100%)
rename src/{content => data}/question-groups/javascript/content/reduce-method.md (100%)
rename src/{content => data}/question-groups/javascript/content/remove-element.md (100%)
rename src/{content => data}/question-groups/javascript/content/scroll-to-top.md (100%)
rename src/{content => data}/question-groups/javascript/content/set-interval.md (100%)
rename src/{content => data}/question-groups/javascript/content/set-timeout.md (100%)
rename src/{content => data}/question-groups/javascript/content/set.md (100%)
rename src/{content => data}/question-groups/javascript/content/spread-operator.md (100%)
rename src/{content => data}/question-groups/javascript/content/switch-case.md (100%)
rename src/{content => data}/question-groups/javascript/content/ternary-operator.md (100%)
rename src/{content => data}/question-groups/javascript/content/variable-number-of-arguments.md (100%)
rename src/{content => data}/question-groups/nodejs/content/commonjs-vs-esm.md (100%)
rename src/{content => data}/question-groups/nodejs/content/error-handling.md (100%)
rename src/{content => data}/question-groups/nodejs/content/exit-codes.md (100%)
rename src/{content => data}/question-groups/nodejs/content/input-from-command-line.md (100%)
rename src/{content => data}/question-groups/nodejs/content/order-priority.md (100%)
rename src/{content => data}/question-groups/nodejs/content/process-argv.md (100%)
rename src/{content => data}/question-groups/nodejs/content/process-cwd-vs-dirname.md (100%)
rename src/{content => data}/question-groups/nodejs/content/web-server.md (100%)
rename src/{content => data}/question-groups/react/content/component-lifecycle.md (100%)
rename src/{content => data}/question-groups/react/content/controlled-vs-uncontrolled.md (100%)
rename src/{content => data}/question-groups/react/content/create-portal.md (100%)
rename src/{content => data}/question-groups/react/content/custom-hook.md (100%)
rename src/{content => data}/question-groups/react/content/error-boundaries.md (100%)
rename src/{content => data}/question-groups/react/content/flush-sync.md (100%)
rename src/{content => data}/question-groups/react/content/investigate-slow-app.md (100%)
rename src/{content => data}/question-groups/react/content/lazy-loading.md (100%)
rename src/{content => data}/question-groups/react/content/pure-components.md (100%)
rename src/{content => data}/question-groups/react/content/re-renders.md (100%)
rename src/{content => data}/question-groups/react/content/ref-forwarding.md (100%)
rename src/{content => data}/question-groups/react/content/render-list.md (100%)
rename src/{content => data}/question-groups/react/content/strict-mode.md (100%)
rename src/{content => data}/question-groups/react/content/suspense.md (100%)
rename src/{content => data}/question-groups/react/content/synthetic-events.md (100%)
rename src/{content => data}/question-groups/react/content/use-transition.md (100%)
rename src/{content => data}/question-groups/react/content/virtual-dom.md (100%)
diff --git a/.astro/astro/content.d.ts b/.astro/astro/content.d.ts
index 7842074fc..90043353b 100644
--- a/.astro/astro/content.d.ts
+++ b/.astro/astro/content.d.ts
@@ -565,1499 +565,49 @@ declare module 'astro:content' {
} & { render(): Render[".md"] };
};
"question-groups": {
-"backend/backend.md": {
- id: "backend/backend.md";
- slug: "backend/backend";
+"backend.md": {
+ id: "backend.md";
+ slug: "backend";
body: string;
collection: "question-groups";
data: InferEntrySchema<"question-groups">
} & { render(): Render[".md"] };
-"backend/content/anomaly-detection.md": {
- id: "backend/content/anomaly-detection.md";
- slug: "backend/content/anomaly-detection";
+"devops.md": {
+ id: "devops.md";
+ slug: "devops";
body: string;
collection: "question-groups";
data: InferEntrySchema<"question-groups">
} & { render(): Render[".md"] };
-"backend/content/api-dependencies.md": {
- id: "backend/content/api-dependencies.md";
- slug: "backend/content/api-dependencies";
+"frontend.md": {
+ id: "frontend.md";
+ slug: "frontend";
body: string;
collection: "question-groups";
data: InferEntrySchema<"question-groups">
} & { render(): Render[".md"] };
-"backend/content/api-endpoint.md": {
- id: "backend/content/api-endpoint.md";
- slug: "backend/content/api-endpoint";
+"javascript.md": {
+ id: "javascript.md";
+ slug: "javascript";
body: string;
collection: "question-groups";
data: InferEntrySchema<"question-groups">
} & { render(): Render[".md"] };
-"backend/content/api-tests.md": {
- id: "backend/content/api-tests.md";
- slug: "backend/content/api-tests";
+"nodejs.md": {
+ id: "nodejs.md";
+ slug: "nodejs";
body: string;
collection: "question-groups";
data: InferEntrySchema<"question-groups">
} & { render(): Render[".md"] };
-"backend/content/api-versioning.md": {
- id: "backend/content/api-versioning.md";
- slug: "backend/content/api-versioning";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/batch-processing.md": {
- id: "backend/content/batch-processing.md";
- slug: "backend/content/batch-processing";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/benefits-drawbacks-microservices.md": {
- id: "backend/content/benefits-drawbacks-microservices.md";
- slug: "backend/content/benefits-drawbacks-microservices";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/bg-tasks.md": {
- id: "backend/content/bg-tasks.md";
- slug: "backend/content/bg-tasks";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/blue-green-deployment.md": {
- id: "backend/content/blue-green-deployment.md";
- slug: "backend/content/blue-green-deployment";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/cache-eviction.md": {
- id: "backend/content/cache-eviction.md";
- slug: "backend/content/cache-eviction";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/cap-theorem.md": {
- id: "backend/content/cap-theorem.md";
- slug: "backend/content/cap-theorem";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/ci-cd.md": {
- id: "backend/content/ci-cd.md";
- slug: "backend/content/ci-cd";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/containerization.md": {
- id: "backend/content/containerization.md";
- slug: "backend/content/containerization";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/correlation-ids.md": {
- id: "backend/content/correlation-ids.md";
- slug: "backend/content/correlation-ids";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/data-encryption.md": {
- id: "backend/content/data-encryption.md";
- slug: "backend/content/data-encryption";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/db-connections.md": {
- id: "backend/content/db-connections.md";
- slug: "backend/content/db-connections";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/deadlock-db-transaction.md": {
- id: "backend/content/deadlock-db-transaction.md";
- slug: "backend/content/deadlock-db-transaction";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/debugging-backend.md": {
- id: "backend/content/debugging-backend.md";
- slug: "backend/content/debugging-backend";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/decompose-microservices.md": {
- id: "backend/content/decompose-microservices.md";
- slug: "backend/content/decompose-microservices";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/distributed-caching.md": {
- id: "backend/content/distributed-caching.md";
- slug: "backend/content/distributed-caching";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/eventual-consistency.md": {
- id: "backend/content/eventual-consistency.md";
- slug: "backend/content/eventual-consistency";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/fault-tolerance.md": {
- id: "backend/content/fault-tolerance.md";
- slug: "backend/content/fault-tolerance";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/file-uploads.md": {
- id: "backend/content/file-uploads.md";
- slug: "backend/content/file-uploads";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/fulltext-search.md": {
- id: "backend/content/fulltext-search.md";
- slug: "backend/content/fulltext-search";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/gdpr-compliance.md": {
- id: "backend/content/gdpr-compliance.md";
- slug: "backend/content/gdpr-compliance";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/high-available-storage.md": {
- id: "backend/content/high-available-storage.md";
- slug: "backend/content/high-available-storage";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/http-request-response-cycle.md": {
- id: "backend/content/http-request-response-cycle.md";
- slug: "backend/content/http-request-response-cycle";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/idempotency.md": {
- id: "backend/content/idempotency.md";
- slug: "backend/content/idempotency";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/instrument-monitor.md": {
- id: "backend/content/instrument-monitor.md";
- slug: "backend/content/instrument-monitor";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/iot-streams.md": {
- id: "backend/content/iot-streams.md";
- slug: "backend/content/iot-streams";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/load-balanced-session.md": {
- id: "backend/content/load-balanced-session.md";
- slug: "backend/content/load-balanced-session";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/load-testing-api.md": {
- id: "backend/content/load-testing-api.md";
- slug: "backend/content/load-testing-api";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/long-running.md": {
- id: "backend/content/long-running.md";
- slug: "backend/content/long-running";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/maintainable-code.md": {
- id: "backend/content/maintainable-code.md";
- slug: "backend/content/maintainable-code";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/message-queue.md": {
- id: "backend/content/message-queue.md";
- slug: "backend/content/message-queue";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/optimistic-vs-pessimistic.md": {
- id: "backend/content/optimistic-vs-pessimistic.md";
- slug: "backend/content/optimistic-vs-pessimistic";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/protect-sql-injection.md": {
- id: "backend/content/protect-sql-injection.md";
- slug: "backend/content/protect-sql-injection";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/rate-limiting.md": {
- id: "backend/content/rate-limiting.md";
- slug: "backend/content/rate-limiting";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/realtime-data-sync.md": {
- id: "backend/content/realtime-data-sync.md";
- slug: "backend/content/realtime-data-sync";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/rest-core-principles.md": {
- id: "backend/content/rest-core-principles.md";
- slug: "backend/content/rest-core-principles";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/reverse-proxy.md": {
- id: "backend/content/reverse-proxy.md";
- slug: "backend/content/reverse-proxy";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/scale-backend.md": {
- id: "backend/content/scale-backend.md";
- slug: "backend/content/scale-backend";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/schema-migrations.md": {
- id: "backend/content/schema-migrations.md";
- slug: "backend/content/schema-migrations";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/secure-api.md": {
- id: "backend/content/secure-api.md";
- slug: "backend/content/secure-api";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/secure-interservice.md": {
- id: "backend/content/secure-interservice.md";
- slug: "backend/content/secure-interservice";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/session-management.md": {
- id: "backend/content/session-management.md";
- slug: "backend/content/session-management";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/sql-vs-nosql.md": {
- id: "backend/content/sql-vs-nosql.md";
- slug: "backend/content/sql-vs-nosql";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/sso.md": {
- id: "backend/content/sso.md";
- slug: "backend/content/sso";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/statelessness-http.md": {
- id: "backend/content/statelessness-http.md";
- slug: "backend/content/statelessness-http";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"backend/content/webhooks.md": {
- id: "backend/content/webhooks.md";
- slug: "backend/content/webhooks";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/ansible-benefits.md": {
- id: "devops/content/ansible-benefits.md";
- slug: "devops/content/ansible-benefits";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/auto-scaling.md": {
- id: "devops/content/auto-scaling.md";
- slug: "devops/content/auto-scaling";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/blue-green-deployment.md": {
- id: "devops/content/blue-green-deployment.md";
- slug: "devops/content/blue-green-deployment";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/build-pipelines.md": {
- id: "devops/content/build-pipelines.md";
- slug: "devops/content/build-pipelines";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/canary-release.md": {
- id: "devops/content/canary-release.md";
- slug: "devops/content/canary-release";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/cicd-setup.md": {
- id: "devops/content/cicd-setup.md";
- slug: "devops/content/cicd-setup";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/cluster-health.md": {
- id: "devops/content/cluster-health.md";
- slug: "devops/content/cluster-health";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/common-iac-tools.md": {
- id: "devops/content/common-iac-tools.md";
- slug: "devops/content/common-iac-tools";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/container-consistency.md": {
- id: "devops/content/container-consistency.md";
- slug: "devops/content/container-consistency";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/container-vs-vm.md": {
- id: "devops/content/container-vs-vm.md";
- slug: "devops/content/container-vs-vm";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/continuous-monitoring.md": {
- id: "devops/content/continuous-monitoring.md";
- slug: "devops/content/continuous-monitoring";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/data-migration.md": {
- id: "devops/content/data-migration.md";
- slug: "devops/content/data-migration";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/devsecops.md": {
- id: "devops/content/devsecops.md";
- slug: "devops/content/devsecops";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/docker-compose.md": {
- id: "devops/content/docker-compose.md";
- slug: "devops/content/docker-compose";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/explain-ci-vs-cd.md": {
- id: "devops/content/explain-ci-vs-cd.md";
- slug: "devops/content/explain-ci-vs-cd";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/health-monitor.md": {
- id: "devops/content/health-monitor.md";
- slug: "devops/content/health-monitor";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/high-availability.md": {
- id: "devops/content/high-availability.md";
- slug: "devops/content/high-availability";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/iac-concept.md": {
- id: "devops/content/iac-concept.md";
- slug: "devops/content/iac-concept";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/implement-logging.md": {
- id: "devops/content/implement-logging.md";
- slug: "devops/content/implement-logging";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/kubernetes-components.md": {
- id: "devops/content/kubernetes-components.md";
- slug: "devops/content/kubernetes-components";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/kubernetes-operators.md": {
- id: "devops/content/kubernetes-operators.md";
- slug: "devops/content/kubernetes-operators";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/load-balancer.md": {
- id: "devops/content/load-balancer.md";
- slug: "devops/content/load-balancer";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/microservice-challenges.md": {
- id: "devops/content/microservice-challenges.md";
- slug: "devops/content/microservice-challenges";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/microservice-vs-monolithic.md": {
- id: "devops/content/microservice-vs-monolithic.md";
- slug: "devops/content/microservice-vs-monolithic";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/migrate-environment.md": {
- id: "devops/content/migrate-environment.md";
- slug: "devops/content/migrate-environment";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/multi-cloud-kubernetes.md": {
- id: "devops/content/multi-cloud-kubernetes.md";
- slug: "devops/content/multi-cloud-kubernetes";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/multi-cloud.md": {
- id: "devops/content/multi-cloud.md";
- slug: "devops/content/multi-cloud";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/network-configuration.md": {
- id: "devops/content/network-configuration.md";
- slug: "devops/content/network-configuration";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/optimize-cicd.md": {
- id: "devops/content/optimize-cicd.md";
- slug: "devops/content/optimize-cicd";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/orchestration.md": {
- id: "devops/content/orchestration.md";
- slug: "devops/content/orchestration";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/popular-cicd-tools.md": {
- id: "devops/content/popular-cicd-tools.md";
- slug: "devops/content/popular-cicd-tools";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/purpose-of-cm.md": {
- id: "devops/content/purpose-of-cm.md";
- slug: "devops/content/purpose-of-cm";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/reverse-proxy.md": {
- id: "devops/content/reverse-proxy.md";
- slug: "devops/content/reverse-proxy";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/role-of-devops.md": {
- id: "devops/content/role-of-devops.md";
- slug: "devops/content/role-of-devops";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/scaling-differences.md": {
- id: "devops/content/scaling-differences.md";
- slug: "devops/content/scaling-differences";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/secret-management.md": {
- id: "devops/content/secret-management.md";
- slug: "devops/content/secret-management";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/serverless-computing.md": {
- id: "devops/content/serverless-computing.md";
- slug: "devops/content/serverless-computing";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/stateful-applications.md": {
- id: "devops/content/stateful-applications.md";
- slug: "devops/content/stateful-applications";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/what-is-devops.md": {
- id: "devops/content/what-is-devops.md";
- slug: "devops/content/what-is-devops";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/what-is-docker.md": {
- id: "devops/content/what-is-docker.md";
- slug: "devops/content/what-is-docker";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/what-is-gitops.md": {
- id: "devops/content/what-is-gitops.md";
- slug: "devops/content/what-is-gitops";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/what-is-helm-chart.md": {
- id: "devops/content/what-is-helm-chart.md";
- slug: "devops/content/what-is-helm-chart";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/what-is-iac.md": {
- id: "devops/content/what-is-iac.md";
- slug: "devops/content/what-is-iac";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/what-is-kubernetes.md": {
- id: "devops/content/what-is-kubernetes.md";
- slug: "devops/content/what-is-kubernetes";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/what-is-prometheus.md": {
- id: "devops/content/what-is-prometheus.md";
- slug: "devops/content/what-is-prometheus";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/what-is-rollback.md": {
- id: "devops/content/what-is-rollback.md";
- slug: "devops/content/what-is-rollback";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/what-is-service-mesh.md": {
- id: "devops/content/what-is-service-mesh.md";
- slug: "devops/content/what-is-service-mesh";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/what-is-shift-left.md": {
- id: "devops/content/what-is-shift-left.md";
- slug: "devops/content/what-is-shift-left";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/what-is-version-control.md": {
- id: "devops/content/what-is-version-control.md";
- slug: "devops/content/what-is-version-control";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/content/zero-downtime.md": {
- id: "devops/content/zero-downtime.md";
- slug: "devops/content/zero-downtime";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"devops/devops.md": {
- id: "devops/devops.md";
- slug: "devops/devops";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/async-ops-js.md": {
- id: "frontend/content/async-ops-js.md";
- slug: "frontend/content/async-ops-js";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/block-inline-elems.md": {
- id: "frontend/content/block-inline-elems.md";
- slug: "frontend/content/block-inline-elems";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/box-model.md": {
- id: "frontend/content/box-model.md";
- slug: "frontend/content/box-model";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/browser-render.md": {
- id: "frontend/content/browser-render.md";
- slug: "frontend/content/browser-render";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/client-storage.md": {
- id: "frontend/content/client-storage.md";
- slug: "frontend/content/client-storage";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/closures.md": {
- id: "frontend/content/closures.md";
- slug: "frontend/content/closures";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/critical-css.md": {
- id: "frontend/content/critical-css.md";
- slug: "frontend/content/critical-css";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/csp.md": {
- id: "frontend/content/csp.md";
- slug: "frontend/content/csp";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/css-grid.md": {
- id: "frontend/content/css-grid.md";
- slug: "frontend/content/css-grid";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/css-specificity.md": {
- id: "frontend/content/css-specificity.md";
- slug: "frontend/content/css-specificity";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/css-variables.md": {
- id: "frontend/content/css-variables.md";
- slug: "frontend/content/css-variables";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/dom.md": {
- id: "frontend/content/dom.md";
- slug: "frontend/content/dom";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/em-vs-rem.md": {
- id: "frontend/content/em-vs-rem.md";
- slug: "frontend/content/em-vs-rem";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/event-delegation.md": {
- id: "frontend/content/event-delegation.md";
- slug: "frontend/content/event-delegation";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/event-listeners.md": {
- id: "frontend/content/event-listeners.md";
- slug: "frontend/content/event-listeners";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/event-loop-js.md": {
- id: "frontend/content/event-loop-js.md";
- slug: "frontend/content/event-loop-js";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/flexbox-layout.md": {
- id: "frontend/content/flexbox-layout.md";
- slug: "frontend/content/flexbox-layout";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/id-vs-class.md": {
- id: "frontend/content/id-vs-class.md";
- slug: "frontend/content/id-vs-class";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/improve-web-perf.md": {
- id: "frontend/content/improve-web-perf.md";
- slug: "frontend/content/improve-web-perf";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/js-promises.md": {
- id: "frontend/content/js-promises.md";
- slug: "frontend/content/js-promises";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/media-queries.md": {
- id: "frontend/content/media-queries.md";
- slug: "frontend/content/media-queries";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/null-vs-undefined.md": {
- id: "frontend/content/null-vs-undefined.md";
- slug: "frontend/content/null-vs-undefined";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/optimize-assets.md": {
- id: "frontend/content/optimize-assets.md";
- slug: "frontend/content/optimize-assets";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/same-origin-policy.md": {
- id: "frontend/content/same-origin-policy.md";
- slug: "frontend/content/same-origin-policy";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/seo-best-practices.md": {
- id: "frontend/content/seo-best-practices.md";
- slug: "frontend/content/seo-best-practices";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/service-workers.md": {
- id: "frontend/content/service-workers.md";
- slug: "frontend/content/service-workers";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/ssr-when.md": {
- id: "frontend/content/ssr-when.md";
- slug: "frontend/content/ssr-when";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/state-mgmt-spa.md": {
- id: "frontend/content/state-mgmt-spa.md";
- slug: "frontend/content/state-mgmt-spa";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/tree-shaking.md": {
- id: "frontend/content/tree-shaking.md";
- slug: "frontend/content/tree-shaking";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/content/vdom.md": {
- id: "frontend/content/vdom.md";
- slug: "frontend/content/vdom";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"frontend/frontend.md": {
- id: "frontend/frontend.md";
- slug: "frontend/frontend";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/alert-prompt-confirm.md": {
- id: "javascript/content/alert-prompt-confirm.md";
- slug: "javascript/content/alert-prompt-confirm";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/append-child-vs-insert-before.md": {
- id: "javascript/content/append-child-vs-insert-before.md";
- slug: "javascript/content/append-child-vs-insert-before";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/async-vs-sync.md": {
- id: "javascript/content/async-vs-sync.md";
- slug: "javascript/content/async-vs-sync";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/break-and-continue.md": {
- id: "javascript/content/break-and-continue.md";
- slug: "javascript/content/break-and-continue";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/callback-hell.md": {
- id: "javascript/content/callback-hell.md";
- slug: "javascript/content/callback-hell";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/closure.md": {
- id: "javascript/content/closure.md";
- slug: "javascript/content/closure";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/comma-operator.md": {
- id: "javascript/content/comma-operator.md";
- slug: "javascript/content/comma-operator";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/create-element.md": {
- id: "javascript/content/create-element.md";
- slug: "javascript/content/create-element";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/custom-event.md": {
- id: "javascript/content/custom-event.md";
- slug: "javascript/content/custom-event";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/debug-javascript.md": {
- id: "javascript/content/debug-javascript.md";
- slug: "javascript/content/debug-javascript";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/defer-vs-async.md": {
- id: "javascript/content/defer-vs-async.md";
- slug: "javascript/content/defer-vs-async";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/do-while-loop.md": {
- id: "javascript/content/do-while-loop.md";
- slug: "javascript/content/do-while-loop";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/equality-operator.md": {
- id: "javascript/content/equality-operator.md";
- slug: "javascript/content/equality-operator";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/error-in-async-await.md": {
- id: "javascript/content/error-in-async-await.md";
- slug: "javascript/content/error-in-async-await";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/error-in-promise.md": {
- id: "javascript/content/error-in-promise.md";
- slug: "javascript/content/error-in-promise";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/event-bubbling.md": {
- id: "javascript/content/event-bubbling.md";
- slug: "javascript/content/event-bubbling";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/event-loop.md": {
- id: "javascript/content/event-loop.md";
- slug: "javascript/content/event-loop";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/explicit-binding.md": {
- id: "javascript/content/explicit-binding.md";
- slug: "javascript/content/explicit-binding";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/filter-method.md": {
- id: "javascript/content/filter-method.md";
- slug: "javascript/content/filter-method";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/finally-block-in-promise.md": {
- id: "javascript/content/finally-block-in-promise.md";
- slug: "javascript/content/finally-block-in-promise";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/find-unique-array-values.md": {
- id: "javascript/content/find-unique-array-values.md";
- slug: "javascript/content/find-unique-array-values";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/for-each-method.md": {
- id: "javascript/content/for-each-method.md";
- slug: "javascript/content/for-each-method";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/heap-and-stack.md": {
- id: "javascript/content/heap-and-stack.md";
- slug: "javascript/content/heap-and-stack";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/hoisting.md": {
- id: "javascript/content/hoisting.md";
- slug: "javascript/content/hoisting";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/iife.md": {
- id: "javascript/content/iife.md";
- slug: "javascript/content/iife";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/immutable-object.md": {
- id: "javascript/content/immutable-object.md";
- slug: "javascript/content/immutable-object";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/increment-operator.md": {
- id: "javascript/content/increment-operator.md";
- slug: "javascript/content/increment-operator";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/infinite-loop.md": {
- id: "javascript/content/infinite-loop.md";
- slug: "javascript/content/infinite-loop";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/inheritance.md": {
- id: "javascript/content/inheritance.md";
- slug: "javascript/content/inheritance";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/labelled-statements.md": {
- id: "javascript/content/labelled-statements.md";
- slug: "javascript/content/labelled-statements";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/logical-operators.md": {
- id: "javascript/content/logical-operators.md";
- slug: "javascript/content/logical-operators";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/map-method.md": {
- id: "javascript/content/map-method.md";
- slug: "javascript/content/map-method";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/map.md": {
- id: "javascript/content/map.md";
- slug: "javascript/content/map";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/measure-dimensions.md": {
- id: "javascript/content/measure-dimensions.md";
- slug: "javascript/content/measure-dimensions";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/merge-arrays.md": {
- id: "javascript/content/merge-arrays.md";
- slug: "javascript/content/merge-arrays";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/nullish-coalescing-operator.md": {
- id: "javascript/content/nullish-coalescing-operator.md";
- slug: "javascript/content/nullish-coalescing-operator";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/parse-json.md": {
- id: "javascript/content/parse-json.md";
- slug: "javascript/content/parse-json";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/prevent-default.md": {
- id: "javascript/content/prevent-default.md";
- slug: "javascript/content/prevent-default";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/promise-all-vs-all-settled.md": {
- id: "javascript/content/promise-all-vs-all-settled.md";
- slug: "javascript/content/promise-all-vs-all-settled";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/prototype-chain.md": {
- id: "javascript/content/prototype-chain.md";
- slug: "javascript/content/prototype-chain";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/query-selector.md": {
- id: "javascript/content/query-selector.md";
- slug: "javascript/content/query-selector";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/reduce-method.md": {
- id: "javascript/content/reduce-method.md";
- slug: "javascript/content/reduce-method";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/remove-element.md": {
- id: "javascript/content/remove-element.md";
- slug: "javascript/content/remove-element";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/scroll-to-top.md": {
- id: "javascript/content/scroll-to-top.md";
- slug: "javascript/content/scroll-to-top";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/set-interval.md": {
- id: "javascript/content/set-interval.md";
- slug: "javascript/content/set-interval";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/set-timeout.md": {
- id: "javascript/content/set-timeout.md";
- slug: "javascript/content/set-timeout";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/set.md": {
- id: "javascript/content/set.md";
- slug: "javascript/content/set";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/spread-operator.md": {
- id: "javascript/content/spread-operator.md";
- slug: "javascript/content/spread-operator";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/switch-case.md": {
- id: "javascript/content/switch-case.md";
- slug: "javascript/content/switch-case";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/ternary-operator.md": {
- id: "javascript/content/ternary-operator.md";
- slug: "javascript/content/ternary-operator";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/content/variable-number-of-arguments.md": {
- id: "javascript/content/variable-number-of-arguments.md";
- slug: "javascript/content/variable-number-of-arguments";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"javascript/javascript.md": {
- id: "javascript/javascript.md";
- slug: "javascript/javascript";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"nodejs/content/commonjs-vs-esm.md": {
- id: "nodejs/content/commonjs-vs-esm.md";
- slug: "nodejs/content/commonjs-vs-esm";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"nodejs/content/error-handling.md": {
- id: "nodejs/content/error-handling.md";
- slug: "nodejs/content/error-handling";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"nodejs/content/exit-codes.md": {
- id: "nodejs/content/exit-codes.md";
- slug: "nodejs/content/exit-codes";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"nodejs/content/input-from-command-line.md": {
- id: "nodejs/content/input-from-command-line.md";
- slug: "nodejs/content/input-from-command-line";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"nodejs/content/order-priority.md": {
- id: "nodejs/content/order-priority.md";
- slug: "nodejs/content/order-priority";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"nodejs/content/process-argv.md": {
- id: "nodejs/content/process-argv.md";
- slug: "nodejs/content/process-argv";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"nodejs/content/process-cwd-vs-dirname.md": {
- id: "nodejs/content/process-cwd-vs-dirname.md";
- slug: "nodejs/content/process-cwd-vs-dirname";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"nodejs/content/web-server.md": {
- id: "nodejs/content/web-server.md";
- slug: "nodejs/content/web-server";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"nodejs/nodejs.md": {
- id: "nodejs/nodejs.md";
- slug: "nodejs/nodejs";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/component-lifecycle.md": {
- id: "react/content/component-lifecycle.md";
- slug: "react/content/component-lifecycle";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/controlled-vs-uncontrolled.md": {
- id: "react/content/controlled-vs-uncontrolled.md";
- slug: "react/content/controlled-vs-uncontrolled";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/create-portal.md": {
- id: "react/content/create-portal.md";
- slug: "react/content/create-portal";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/custom-hook.md": {
- id: "react/content/custom-hook.md";
- slug: "react/content/custom-hook";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/error-boundaries.md": {
- id: "react/content/error-boundaries.md";
- slug: "react/content/error-boundaries";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/flush-sync.md": {
- id: "react/content/flush-sync.md";
- slug: "react/content/flush-sync";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/investigate-slow-app.md": {
- id: "react/content/investigate-slow-app.md";
- slug: "react/content/investigate-slow-app";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/lazy-loading.md": {
- id: "react/content/lazy-loading.md";
- slug: "react/content/lazy-loading";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/pure-components.md": {
- id: "react/content/pure-components.md";
- slug: "react/content/pure-components";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/re-renders.md": {
- id: "react/content/re-renders.md";
- slug: "react/content/re-renders";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/ref-forwarding.md": {
- id: "react/content/ref-forwarding.md";
- slug: "react/content/ref-forwarding";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/render-list.md": {
- id: "react/content/render-list.md";
- slug: "react/content/render-list";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/strict-mode.md": {
- id: "react/content/strict-mode.md";
- slug: "react/content/strict-mode";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/suspense.md": {
- id: "react/content/suspense.md";
- slug: "react/content/suspense";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/synthetic-events.md": {
- id: "react/content/synthetic-events.md";
- slug: "react/content/synthetic-events";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/use-transition.md": {
- id: "react/content/use-transition.md";
- slug: "react/content/use-transition";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/content/virtual-dom.md": {
- id: "react/content/virtual-dom.md";
- slug: "react/content/virtual-dom";
- body: string;
- collection: "question-groups";
- data: InferEntrySchema<"question-groups">
-} & { render(): Render[".md"] };
-"react/react.md": {
- id: "react/react.md";
- slug: "react/react";
+"react.md": {
+ id: "react.md";
+ slug: "react";
body: string;
collection: "question-groups";
data: InferEntrySchema<"question-groups">
} & { render(): Render[".md"] };
};
-"questions": Record;
};
diff --git a/.gitignore b/.gitignore
index af5f0247e..2f58356a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,3 +33,4 @@ tests-examples
!/editor/readonly-editor.tsx
!/editor/renderer/renderer.ts
!/editor/renderer/index.tsx
+/.astro
diff --git a/src/components/Guide/GuideContent.astro b/src/components/Guide/GuideContent.astro
index 3eeb4db1e..d07edd159 100644
--- a/src/components/Guide/GuideContent.astro
+++ b/src/components/Guide/GuideContent.astro
@@ -10,11 +10,11 @@ interface Props {
const { guide } = Astro.props;
-const allHeadings = guide.getHeadings();
+const { headings: allHeadings, Content } = await guide.render();
const tableOfContent = getGuideTableOfContent(allHeadings);
const showTableOfContent = tableOfContent.length > 0;
-const { frontmatter: guideFrontmatter, author } = guide;
+const { data: guideFrontmatter, author } = guide;
---
@@ -44,11 +44,11 @@ const { frontmatter: guideFrontmatter, author } = guide;
class='inline-flex items-center font-medium underline-offset-2 hover:text-gray-600 hover:underline'
>
- {author.frontmatter.name}
+ {author.data.name}
·
-
+
diff --git a/src/components/GuideListItem.astro b/src/components/GuideListItem.astro
index 7b9e278c2..a4b972673 100644
--- a/src/components/GuideListItem.astro
+++ b/src/components/GuideListItem.astro
@@ -1,7 +1,7 @@
---
-import type { GuideFileType, GuideFrontmatter } from '../lib/guide';
+import type { GuideFileType } from '../lib/guide';
import { replaceVariables } from '../lib/markdown';
-import { QuestionGroupType } from '../lib/question-group';
+import type { QuestionGroupType } from '../lib/question-group';
export interface Props {
guide: GuideFileType | QuestionGroupType;
@@ -14,7 +14,7 @@ function isQuestionGroupType(
}
const { guide } = Astro.props;
-const { data, id } = guide;
+const { data: frontmatter, slug: id } = guide;
let pageUrl = '';
let guideType = '';
@@ -23,9 +23,9 @@ if (isQuestionGroupType(guide)) {
pageUrl = `/questions/${id}`;
guideType = 'Questions';
} else {
- const excludedBySlug = (frontmatter as GuideFrontmatter).excludedBySlug;
+ const excludedBySlug = (frontmatter as GuideFileType['data']).excludedBySlug;
pageUrl = excludedBySlug ? excludedBySlug : `/guides/${id}`;
- guideType = (frontmatter as GuideFrontmatter).type;
+ guideType = (frontmatter as GuideFileType['data']).type;
}
---
@@ -46,7 +46,7 @@ if (isQuestionGroupType(guide)) {
New
·
- {new Date(frontmatter.date).toLocaleString('default', {
+ {new Date(frontmatter.date!).toLocaleString('default', {
month: 'long',
})}
diff --git a/src/content/question-group.ts b/src/content/question-group.ts
index 3bc632e12..6e2a965e9 100644
--- a/src/content/question-group.ts
+++ b/src/content/question-group.ts
@@ -10,7 +10,7 @@ export const questionGroupCollection = defineCollection({
description: z.string(),
isNew: z.boolean(),
authorId: z.string().optional(),
- date: z.string().optional(),
+ date: z.date().optional(),
seo: z.object({
title: z.string(),
description: z.string(),
diff --git a/src/content/question-groups/backend/backend.md b/src/content/question-groups/backend.md
similarity index 100%
rename from src/content/question-groups/backend/backend.md
rename to src/content/question-groups/backend.md
diff --git a/src/content/question-groups/devops/devops.md b/src/content/question-groups/devops.md
similarity index 100%
rename from src/content/question-groups/devops/devops.md
rename to src/content/question-groups/devops.md
diff --git a/src/content/question-groups/frontend/frontend.md b/src/content/question-groups/frontend.md
similarity index 100%
rename from src/content/question-groups/frontend/frontend.md
rename to src/content/question-groups/frontend.md
diff --git a/src/content/question-groups/javascript/javascript.md b/src/content/question-groups/javascript.md
similarity index 100%
rename from src/content/question-groups/javascript/javascript.md
rename to src/content/question-groups/javascript.md
diff --git a/src/content/question-groups/nodejs/nodejs.md b/src/content/question-groups/nodejs.md
similarity index 100%
rename from src/content/question-groups/nodejs/nodejs.md
rename to src/content/question-groups/nodejs.md
diff --git a/src/content/question-groups/react/react.md b/src/content/question-groups/react.md
similarity index 100%
rename from src/content/question-groups/react/react.md
rename to src/content/question-groups/react.md
diff --git a/src/content/question-groups/backend/content/anomaly-detection.md b/src/data/question-groups/backend/content/anomaly-detection.md
similarity index 100%
rename from src/content/question-groups/backend/content/anomaly-detection.md
rename to src/data/question-groups/backend/content/anomaly-detection.md
diff --git a/src/content/question-groups/backend/content/api-dependencies.md b/src/data/question-groups/backend/content/api-dependencies.md
similarity index 100%
rename from src/content/question-groups/backend/content/api-dependencies.md
rename to src/data/question-groups/backend/content/api-dependencies.md
diff --git a/src/content/question-groups/backend/content/api-endpoint.md b/src/data/question-groups/backend/content/api-endpoint.md
similarity index 100%
rename from src/content/question-groups/backend/content/api-endpoint.md
rename to src/data/question-groups/backend/content/api-endpoint.md
diff --git a/src/content/question-groups/backend/content/api-tests.md b/src/data/question-groups/backend/content/api-tests.md
similarity index 100%
rename from src/content/question-groups/backend/content/api-tests.md
rename to src/data/question-groups/backend/content/api-tests.md
diff --git a/src/content/question-groups/backend/content/api-versioning.md b/src/data/question-groups/backend/content/api-versioning.md
similarity index 100%
rename from src/content/question-groups/backend/content/api-versioning.md
rename to src/data/question-groups/backend/content/api-versioning.md
diff --git a/src/content/question-groups/backend/content/batch-processing.md b/src/data/question-groups/backend/content/batch-processing.md
similarity index 100%
rename from src/content/question-groups/backend/content/batch-processing.md
rename to src/data/question-groups/backend/content/batch-processing.md
diff --git a/src/content/question-groups/backend/content/benefits-drawbacks-microservices.md b/src/data/question-groups/backend/content/benefits-drawbacks-microservices.md
similarity index 100%
rename from src/content/question-groups/backend/content/benefits-drawbacks-microservices.md
rename to src/data/question-groups/backend/content/benefits-drawbacks-microservices.md
diff --git a/src/content/question-groups/backend/content/bg-tasks.md b/src/data/question-groups/backend/content/bg-tasks.md
similarity index 100%
rename from src/content/question-groups/backend/content/bg-tasks.md
rename to src/data/question-groups/backend/content/bg-tasks.md
diff --git a/src/content/question-groups/backend/content/blue-green-deployment.md b/src/data/question-groups/backend/content/blue-green-deployment.md
similarity index 100%
rename from src/content/question-groups/backend/content/blue-green-deployment.md
rename to src/data/question-groups/backend/content/blue-green-deployment.md
diff --git a/src/content/question-groups/backend/content/cache-eviction.md b/src/data/question-groups/backend/content/cache-eviction.md
similarity index 100%
rename from src/content/question-groups/backend/content/cache-eviction.md
rename to src/data/question-groups/backend/content/cache-eviction.md
diff --git a/src/content/question-groups/backend/content/cap-theorem.md b/src/data/question-groups/backend/content/cap-theorem.md
similarity index 100%
rename from src/content/question-groups/backend/content/cap-theorem.md
rename to src/data/question-groups/backend/content/cap-theorem.md
diff --git a/src/content/question-groups/backend/content/ci-cd.md b/src/data/question-groups/backend/content/ci-cd.md
similarity index 100%
rename from src/content/question-groups/backend/content/ci-cd.md
rename to src/data/question-groups/backend/content/ci-cd.md
diff --git a/src/content/question-groups/backend/content/containerization.md b/src/data/question-groups/backend/content/containerization.md
similarity index 100%
rename from src/content/question-groups/backend/content/containerization.md
rename to src/data/question-groups/backend/content/containerization.md
diff --git a/src/content/question-groups/backend/content/correlation-ids.md b/src/data/question-groups/backend/content/correlation-ids.md
similarity index 100%
rename from src/content/question-groups/backend/content/correlation-ids.md
rename to src/data/question-groups/backend/content/correlation-ids.md
diff --git a/src/content/question-groups/backend/content/data-encryption.md b/src/data/question-groups/backend/content/data-encryption.md
similarity index 100%
rename from src/content/question-groups/backend/content/data-encryption.md
rename to src/data/question-groups/backend/content/data-encryption.md
diff --git a/src/content/question-groups/backend/content/db-connections.md b/src/data/question-groups/backend/content/db-connections.md
similarity index 100%
rename from src/content/question-groups/backend/content/db-connections.md
rename to src/data/question-groups/backend/content/db-connections.md
diff --git a/src/content/question-groups/backend/content/deadlock-db-transaction.md b/src/data/question-groups/backend/content/deadlock-db-transaction.md
similarity index 100%
rename from src/content/question-groups/backend/content/deadlock-db-transaction.md
rename to src/data/question-groups/backend/content/deadlock-db-transaction.md
diff --git a/src/content/question-groups/backend/content/debugging-backend.md b/src/data/question-groups/backend/content/debugging-backend.md
similarity index 100%
rename from src/content/question-groups/backend/content/debugging-backend.md
rename to src/data/question-groups/backend/content/debugging-backend.md
diff --git a/src/content/question-groups/backend/content/decompose-microservices.md b/src/data/question-groups/backend/content/decompose-microservices.md
similarity index 100%
rename from src/content/question-groups/backend/content/decompose-microservices.md
rename to src/data/question-groups/backend/content/decompose-microservices.md
diff --git a/src/content/question-groups/backend/content/distributed-caching.md b/src/data/question-groups/backend/content/distributed-caching.md
similarity index 100%
rename from src/content/question-groups/backend/content/distributed-caching.md
rename to src/data/question-groups/backend/content/distributed-caching.md
diff --git a/src/content/question-groups/backend/content/eventual-consistency.md b/src/data/question-groups/backend/content/eventual-consistency.md
similarity index 100%
rename from src/content/question-groups/backend/content/eventual-consistency.md
rename to src/data/question-groups/backend/content/eventual-consistency.md
diff --git a/src/content/question-groups/backend/content/fault-tolerance.md b/src/data/question-groups/backend/content/fault-tolerance.md
similarity index 100%
rename from src/content/question-groups/backend/content/fault-tolerance.md
rename to src/data/question-groups/backend/content/fault-tolerance.md
diff --git a/src/content/question-groups/backend/content/file-uploads.md b/src/data/question-groups/backend/content/file-uploads.md
similarity index 100%
rename from src/content/question-groups/backend/content/file-uploads.md
rename to src/data/question-groups/backend/content/file-uploads.md
diff --git a/src/content/question-groups/backend/content/fulltext-search.md b/src/data/question-groups/backend/content/fulltext-search.md
similarity index 100%
rename from src/content/question-groups/backend/content/fulltext-search.md
rename to src/data/question-groups/backend/content/fulltext-search.md
diff --git a/src/content/question-groups/backend/content/gdpr-compliance.md b/src/data/question-groups/backend/content/gdpr-compliance.md
similarity index 100%
rename from src/content/question-groups/backend/content/gdpr-compliance.md
rename to src/data/question-groups/backend/content/gdpr-compliance.md
diff --git a/src/content/question-groups/backend/content/high-available-storage.md b/src/data/question-groups/backend/content/high-available-storage.md
similarity index 100%
rename from src/content/question-groups/backend/content/high-available-storage.md
rename to src/data/question-groups/backend/content/high-available-storage.md
diff --git a/src/content/question-groups/backend/content/http-request-response-cycle.md b/src/data/question-groups/backend/content/http-request-response-cycle.md
similarity index 100%
rename from src/content/question-groups/backend/content/http-request-response-cycle.md
rename to src/data/question-groups/backend/content/http-request-response-cycle.md
diff --git a/src/content/question-groups/backend/content/idempotency.md b/src/data/question-groups/backend/content/idempotency.md
similarity index 100%
rename from src/content/question-groups/backend/content/idempotency.md
rename to src/data/question-groups/backend/content/idempotency.md
diff --git a/src/content/question-groups/backend/content/instrument-monitor.md b/src/data/question-groups/backend/content/instrument-monitor.md
similarity index 100%
rename from src/content/question-groups/backend/content/instrument-monitor.md
rename to src/data/question-groups/backend/content/instrument-monitor.md
diff --git a/src/content/question-groups/backend/content/iot-streams.md b/src/data/question-groups/backend/content/iot-streams.md
similarity index 100%
rename from src/content/question-groups/backend/content/iot-streams.md
rename to src/data/question-groups/backend/content/iot-streams.md
diff --git a/src/content/question-groups/backend/content/load-balanced-session.md b/src/data/question-groups/backend/content/load-balanced-session.md
similarity index 100%
rename from src/content/question-groups/backend/content/load-balanced-session.md
rename to src/data/question-groups/backend/content/load-balanced-session.md
diff --git a/src/content/question-groups/backend/content/load-testing-api.md b/src/data/question-groups/backend/content/load-testing-api.md
similarity index 100%
rename from src/content/question-groups/backend/content/load-testing-api.md
rename to src/data/question-groups/backend/content/load-testing-api.md
diff --git a/src/content/question-groups/backend/content/long-running.md b/src/data/question-groups/backend/content/long-running.md
similarity index 100%
rename from src/content/question-groups/backend/content/long-running.md
rename to src/data/question-groups/backend/content/long-running.md
diff --git a/src/content/question-groups/backend/content/maintainable-code.md b/src/data/question-groups/backend/content/maintainable-code.md
similarity index 100%
rename from src/content/question-groups/backend/content/maintainable-code.md
rename to src/data/question-groups/backend/content/maintainable-code.md
diff --git a/src/content/question-groups/backend/content/message-queue.md b/src/data/question-groups/backend/content/message-queue.md
similarity index 100%
rename from src/content/question-groups/backend/content/message-queue.md
rename to src/data/question-groups/backend/content/message-queue.md
diff --git a/src/content/question-groups/backend/content/optimistic-vs-pessimistic.md b/src/data/question-groups/backend/content/optimistic-vs-pessimistic.md
similarity index 100%
rename from src/content/question-groups/backend/content/optimistic-vs-pessimistic.md
rename to src/data/question-groups/backend/content/optimistic-vs-pessimistic.md
diff --git a/src/content/question-groups/backend/content/protect-sql-injection.md b/src/data/question-groups/backend/content/protect-sql-injection.md
similarity index 100%
rename from src/content/question-groups/backend/content/protect-sql-injection.md
rename to src/data/question-groups/backend/content/protect-sql-injection.md
diff --git a/src/content/question-groups/backend/content/rate-limiting.md b/src/data/question-groups/backend/content/rate-limiting.md
similarity index 100%
rename from src/content/question-groups/backend/content/rate-limiting.md
rename to src/data/question-groups/backend/content/rate-limiting.md
diff --git a/src/content/question-groups/backend/content/realtime-data-sync.md b/src/data/question-groups/backend/content/realtime-data-sync.md
similarity index 100%
rename from src/content/question-groups/backend/content/realtime-data-sync.md
rename to src/data/question-groups/backend/content/realtime-data-sync.md
diff --git a/src/content/question-groups/backend/content/rest-core-principles.md b/src/data/question-groups/backend/content/rest-core-principles.md
similarity index 100%
rename from src/content/question-groups/backend/content/rest-core-principles.md
rename to src/data/question-groups/backend/content/rest-core-principles.md
diff --git a/src/content/question-groups/backend/content/reverse-proxy.md b/src/data/question-groups/backend/content/reverse-proxy.md
similarity index 100%
rename from src/content/question-groups/backend/content/reverse-proxy.md
rename to src/data/question-groups/backend/content/reverse-proxy.md
diff --git a/src/content/question-groups/backend/content/scale-backend.md b/src/data/question-groups/backend/content/scale-backend.md
similarity index 100%
rename from src/content/question-groups/backend/content/scale-backend.md
rename to src/data/question-groups/backend/content/scale-backend.md
diff --git a/src/content/question-groups/backend/content/schema-migrations.md b/src/data/question-groups/backend/content/schema-migrations.md
similarity index 100%
rename from src/content/question-groups/backend/content/schema-migrations.md
rename to src/data/question-groups/backend/content/schema-migrations.md
diff --git a/src/content/question-groups/backend/content/secure-api.md b/src/data/question-groups/backend/content/secure-api.md
similarity index 100%
rename from src/content/question-groups/backend/content/secure-api.md
rename to src/data/question-groups/backend/content/secure-api.md
diff --git a/src/content/question-groups/backend/content/secure-interservice.md b/src/data/question-groups/backend/content/secure-interservice.md
similarity index 100%
rename from src/content/question-groups/backend/content/secure-interservice.md
rename to src/data/question-groups/backend/content/secure-interservice.md
diff --git a/src/content/question-groups/backend/content/session-management.md b/src/data/question-groups/backend/content/session-management.md
similarity index 100%
rename from src/content/question-groups/backend/content/session-management.md
rename to src/data/question-groups/backend/content/session-management.md
diff --git a/src/content/question-groups/backend/content/sql-vs-nosql.md b/src/data/question-groups/backend/content/sql-vs-nosql.md
similarity index 100%
rename from src/content/question-groups/backend/content/sql-vs-nosql.md
rename to src/data/question-groups/backend/content/sql-vs-nosql.md
diff --git a/src/content/question-groups/backend/content/sso.md b/src/data/question-groups/backend/content/sso.md
similarity index 100%
rename from src/content/question-groups/backend/content/sso.md
rename to src/data/question-groups/backend/content/sso.md
diff --git a/src/content/question-groups/backend/content/statelessness-http.md b/src/data/question-groups/backend/content/statelessness-http.md
similarity index 100%
rename from src/content/question-groups/backend/content/statelessness-http.md
rename to src/data/question-groups/backend/content/statelessness-http.md
diff --git a/src/content/question-groups/backend/content/webhooks.md b/src/data/question-groups/backend/content/webhooks.md
similarity index 100%
rename from src/content/question-groups/backend/content/webhooks.md
rename to src/data/question-groups/backend/content/webhooks.md
diff --git a/src/content/question-groups/devops/content/ansible-benefits.md b/src/data/question-groups/devops/content/ansible-benefits.md
similarity index 100%
rename from src/content/question-groups/devops/content/ansible-benefits.md
rename to src/data/question-groups/devops/content/ansible-benefits.md
diff --git a/src/content/question-groups/devops/content/auto-scaling.md b/src/data/question-groups/devops/content/auto-scaling.md
similarity index 100%
rename from src/content/question-groups/devops/content/auto-scaling.md
rename to src/data/question-groups/devops/content/auto-scaling.md
diff --git a/src/content/question-groups/devops/content/blue-green-deployment.md b/src/data/question-groups/devops/content/blue-green-deployment.md
similarity index 100%
rename from src/content/question-groups/devops/content/blue-green-deployment.md
rename to src/data/question-groups/devops/content/blue-green-deployment.md
diff --git a/src/content/question-groups/devops/content/build-pipelines.md b/src/data/question-groups/devops/content/build-pipelines.md
similarity index 100%
rename from src/content/question-groups/devops/content/build-pipelines.md
rename to src/data/question-groups/devops/content/build-pipelines.md
diff --git a/src/content/question-groups/devops/content/canary-release.md b/src/data/question-groups/devops/content/canary-release.md
similarity index 100%
rename from src/content/question-groups/devops/content/canary-release.md
rename to src/data/question-groups/devops/content/canary-release.md
diff --git a/src/content/question-groups/devops/content/cicd-setup.md b/src/data/question-groups/devops/content/cicd-setup.md
similarity index 100%
rename from src/content/question-groups/devops/content/cicd-setup.md
rename to src/data/question-groups/devops/content/cicd-setup.md
diff --git a/src/content/question-groups/devops/content/cluster-health.md b/src/data/question-groups/devops/content/cluster-health.md
similarity index 100%
rename from src/content/question-groups/devops/content/cluster-health.md
rename to src/data/question-groups/devops/content/cluster-health.md
diff --git a/src/content/question-groups/devops/content/common-iac-tools.md b/src/data/question-groups/devops/content/common-iac-tools.md
similarity index 100%
rename from src/content/question-groups/devops/content/common-iac-tools.md
rename to src/data/question-groups/devops/content/common-iac-tools.md
diff --git a/src/content/question-groups/devops/content/container-consistency.md b/src/data/question-groups/devops/content/container-consistency.md
similarity index 100%
rename from src/content/question-groups/devops/content/container-consistency.md
rename to src/data/question-groups/devops/content/container-consistency.md
diff --git a/src/content/question-groups/devops/content/container-vs-vm.md b/src/data/question-groups/devops/content/container-vs-vm.md
similarity index 100%
rename from src/content/question-groups/devops/content/container-vs-vm.md
rename to src/data/question-groups/devops/content/container-vs-vm.md
diff --git a/src/content/question-groups/devops/content/continuous-monitoring.md b/src/data/question-groups/devops/content/continuous-monitoring.md
similarity index 100%
rename from src/content/question-groups/devops/content/continuous-monitoring.md
rename to src/data/question-groups/devops/content/continuous-monitoring.md
diff --git a/src/content/question-groups/devops/content/data-migration.md b/src/data/question-groups/devops/content/data-migration.md
similarity index 100%
rename from src/content/question-groups/devops/content/data-migration.md
rename to src/data/question-groups/devops/content/data-migration.md
diff --git a/src/content/question-groups/devops/content/devsecops.md b/src/data/question-groups/devops/content/devsecops.md
similarity index 100%
rename from src/content/question-groups/devops/content/devsecops.md
rename to src/data/question-groups/devops/content/devsecops.md
diff --git a/src/content/question-groups/devops/content/docker-compose.md b/src/data/question-groups/devops/content/docker-compose.md
similarity index 100%
rename from src/content/question-groups/devops/content/docker-compose.md
rename to src/data/question-groups/devops/content/docker-compose.md
diff --git a/src/content/question-groups/devops/content/explain-ci-vs-cd.md b/src/data/question-groups/devops/content/explain-ci-vs-cd.md
similarity index 100%
rename from src/content/question-groups/devops/content/explain-ci-vs-cd.md
rename to src/data/question-groups/devops/content/explain-ci-vs-cd.md
diff --git a/src/content/question-groups/devops/content/health-monitor.md b/src/data/question-groups/devops/content/health-monitor.md
similarity index 100%
rename from src/content/question-groups/devops/content/health-monitor.md
rename to src/data/question-groups/devops/content/health-monitor.md
diff --git a/src/content/question-groups/devops/content/high-availability.md b/src/data/question-groups/devops/content/high-availability.md
similarity index 100%
rename from src/content/question-groups/devops/content/high-availability.md
rename to src/data/question-groups/devops/content/high-availability.md
diff --git a/src/content/question-groups/devops/content/iac-concept.md b/src/data/question-groups/devops/content/iac-concept.md
similarity index 100%
rename from src/content/question-groups/devops/content/iac-concept.md
rename to src/data/question-groups/devops/content/iac-concept.md
diff --git a/src/content/question-groups/devops/content/implement-logging.md b/src/data/question-groups/devops/content/implement-logging.md
similarity index 100%
rename from src/content/question-groups/devops/content/implement-logging.md
rename to src/data/question-groups/devops/content/implement-logging.md
diff --git a/src/content/question-groups/devops/content/kubernetes-components.md b/src/data/question-groups/devops/content/kubernetes-components.md
similarity index 100%
rename from src/content/question-groups/devops/content/kubernetes-components.md
rename to src/data/question-groups/devops/content/kubernetes-components.md
diff --git a/src/content/question-groups/devops/content/kubernetes-operators.md b/src/data/question-groups/devops/content/kubernetes-operators.md
similarity index 100%
rename from src/content/question-groups/devops/content/kubernetes-operators.md
rename to src/data/question-groups/devops/content/kubernetes-operators.md
diff --git a/src/content/question-groups/devops/content/load-balancer.md b/src/data/question-groups/devops/content/load-balancer.md
similarity index 100%
rename from src/content/question-groups/devops/content/load-balancer.md
rename to src/data/question-groups/devops/content/load-balancer.md
diff --git a/src/content/question-groups/devops/content/microservice-challenges.md b/src/data/question-groups/devops/content/microservice-challenges.md
similarity index 100%
rename from src/content/question-groups/devops/content/microservice-challenges.md
rename to src/data/question-groups/devops/content/microservice-challenges.md
diff --git a/src/content/question-groups/devops/content/microservice-vs-monolithic.md b/src/data/question-groups/devops/content/microservice-vs-monolithic.md
similarity index 100%
rename from src/content/question-groups/devops/content/microservice-vs-monolithic.md
rename to src/data/question-groups/devops/content/microservice-vs-monolithic.md
diff --git a/src/content/question-groups/devops/content/migrate-environment.md b/src/data/question-groups/devops/content/migrate-environment.md
similarity index 100%
rename from src/content/question-groups/devops/content/migrate-environment.md
rename to src/data/question-groups/devops/content/migrate-environment.md
diff --git a/src/content/question-groups/devops/content/multi-cloud-kubernetes.md b/src/data/question-groups/devops/content/multi-cloud-kubernetes.md
similarity index 100%
rename from src/content/question-groups/devops/content/multi-cloud-kubernetes.md
rename to src/data/question-groups/devops/content/multi-cloud-kubernetes.md
diff --git a/src/content/question-groups/devops/content/multi-cloud.md b/src/data/question-groups/devops/content/multi-cloud.md
similarity index 100%
rename from src/content/question-groups/devops/content/multi-cloud.md
rename to src/data/question-groups/devops/content/multi-cloud.md
diff --git a/src/content/question-groups/devops/content/network-configuration.md b/src/data/question-groups/devops/content/network-configuration.md
similarity index 100%
rename from src/content/question-groups/devops/content/network-configuration.md
rename to src/data/question-groups/devops/content/network-configuration.md
diff --git a/src/content/question-groups/devops/content/optimize-cicd.md b/src/data/question-groups/devops/content/optimize-cicd.md
similarity index 100%
rename from src/content/question-groups/devops/content/optimize-cicd.md
rename to src/data/question-groups/devops/content/optimize-cicd.md
diff --git a/src/content/question-groups/devops/content/orchestration.md b/src/data/question-groups/devops/content/orchestration.md
similarity index 100%
rename from src/content/question-groups/devops/content/orchestration.md
rename to src/data/question-groups/devops/content/orchestration.md
diff --git a/src/content/question-groups/devops/content/popular-cicd-tools.md b/src/data/question-groups/devops/content/popular-cicd-tools.md
similarity index 100%
rename from src/content/question-groups/devops/content/popular-cicd-tools.md
rename to src/data/question-groups/devops/content/popular-cicd-tools.md
diff --git a/src/content/question-groups/devops/content/purpose-of-cm.md b/src/data/question-groups/devops/content/purpose-of-cm.md
similarity index 100%
rename from src/content/question-groups/devops/content/purpose-of-cm.md
rename to src/data/question-groups/devops/content/purpose-of-cm.md
diff --git a/src/content/question-groups/devops/content/reverse-proxy.md b/src/data/question-groups/devops/content/reverse-proxy.md
similarity index 100%
rename from src/content/question-groups/devops/content/reverse-proxy.md
rename to src/data/question-groups/devops/content/reverse-proxy.md
diff --git a/src/content/question-groups/devops/content/role-of-devops.md b/src/data/question-groups/devops/content/role-of-devops.md
similarity index 100%
rename from src/content/question-groups/devops/content/role-of-devops.md
rename to src/data/question-groups/devops/content/role-of-devops.md
diff --git a/src/content/question-groups/devops/content/scaling-differences.md b/src/data/question-groups/devops/content/scaling-differences.md
similarity index 100%
rename from src/content/question-groups/devops/content/scaling-differences.md
rename to src/data/question-groups/devops/content/scaling-differences.md
diff --git a/src/content/question-groups/devops/content/secret-management.md b/src/data/question-groups/devops/content/secret-management.md
similarity index 100%
rename from src/content/question-groups/devops/content/secret-management.md
rename to src/data/question-groups/devops/content/secret-management.md
diff --git a/src/content/question-groups/devops/content/serverless-computing.md b/src/data/question-groups/devops/content/serverless-computing.md
similarity index 100%
rename from src/content/question-groups/devops/content/serverless-computing.md
rename to src/data/question-groups/devops/content/serverless-computing.md
diff --git a/src/content/question-groups/devops/content/stateful-applications.md b/src/data/question-groups/devops/content/stateful-applications.md
similarity index 100%
rename from src/content/question-groups/devops/content/stateful-applications.md
rename to src/data/question-groups/devops/content/stateful-applications.md
diff --git a/src/content/question-groups/devops/content/what-is-devops.md b/src/data/question-groups/devops/content/what-is-devops.md
similarity index 100%
rename from src/content/question-groups/devops/content/what-is-devops.md
rename to src/data/question-groups/devops/content/what-is-devops.md
diff --git a/src/content/question-groups/devops/content/what-is-docker.md b/src/data/question-groups/devops/content/what-is-docker.md
similarity index 100%
rename from src/content/question-groups/devops/content/what-is-docker.md
rename to src/data/question-groups/devops/content/what-is-docker.md
diff --git a/src/content/question-groups/devops/content/what-is-gitops.md b/src/data/question-groups/devops/content/what-is-gitops.md
similarity index 100%
rename from src/content/question-groups/devops/content/what-is-gitops.md
rename to src/data/question-groups/devops/content/what-is-gitops.md
diff --git a/src/content/question-groups/devops/content/what-is-helm-chart.md b/src/data/question-groups/devops/content/what-is-helm-chart.md
similarity index 100%
rename from src/content/question-groups/devops/content/what-is-helm-chart.md
rename to src/data/question-groups/devops/content/what-is-helm-chart.md
diff --git a/src/content/question-groups/devops/content/what-is-iac.md b/src/data/question-groups/devops/content/what-is-iac.md
similarity index 100%
rename from src/content/question-groups/devops/content/what-is-iac.md
rename to src/data/question-groups/devops/content/what-is-iac.md
diff --git a/src/content/question-groups/devops/content/what-is-kubernetes.md b/src/data/question-groups/devops/content/what-is-kubernetes.md
similarity index 100%
rename from src/content/question-groups/devops/content/what-is-kubernetes.md
rename to src/data/question-groups/devops/content/what-is-kubernetes.md
diff --git a/src/content/question-groups/devops/content/what-is-prometheus.md b/src/data/question-groups/devops/content/what-is-prometheus.md
similarity index 100%
rename from src/content/question-groups/devops/content/what-is-prometheus.md
rename to src/data/question-groups/devops/content/what-is-prometheus.md
diff --git a/src/content/question-groups/devops/content/what-is-rollback.md b/src/data/question-groups/devops/content/what-is-rollback.md
similarity index 100%
rename from src/content/question-groups/devops/content/what-is-rollback.md
rename to src/data/question-groups/devops/content/what-is-rollback.md
diff --git a/src/content/question-groups/devops/content/what-is-service-mesh.md b/src/data/question-groups/devops/content/what-is-service-mesh.md
similarity index 100%
rename from src/content/question-groups/devops/content/what-is-service-mesh.md
rename to src/data/question-groups/devops/content/what-is-service-mesh.md
diff --git a/src/content/question-groups/devops/content/what-is-shift-left.md b/src/data/question-groups/devops/content/what-is-shift-left.md
similarity index 100%
rename from src/content/question-groups/devops/content/what-is-shift-left.md
rename to src/data/question-groups/devops/content/what-is-shift-left.md
diff --git a/src/content/question-groups/devops/content/what-is-version-control.md b/src/data/question-groups/devops/content/what-is-version-control.md
similarity index 100%
rename from src/content/question-groups/devops/content/what-is-version-control.md
rename to src/data/question-groups/devops/content/what-is-version-control.md
diff --git a/src/content/question-groups/devops/content/zero-downtime.md b/src/data/question-groups/devops/content/zero-downtime.md
similarity index 100%
rename from src/content/question-groups/devops/content/zero-downtime.md
rename to src/data/question-groups/devops/content/zero-downtime.md
diff --git a/src/content/question-groups/frontend/content/async-ops-js.md b/src/data/question-groups/frontend/content/async-ops-js.md
similarity index 100%
rename from src/content/question-groups/frontend/content/async-ops-js.md
rename to src/data/question-groups/frontend/content/async-ops-js.md
diff --git a/src/content/question-groups/frontend/content/block-inline-elems.md b/src/data/question-groups/frontend/content/block-inline-elems.md
similarity index 100%
rename from src/content/question-groups/frontend/content/block-inline-elems.md
rename to src/data/question-groups/frontend/content/block-inline-elems.md
diff --git a/src/content/question-groups/frontend/content/box-model.md b/src/data/question-groups/frontend/content/box-model.md
similarity index 100%
rename from src/content/question-groups/frontend/content/box-model.md
rename to src/data/question-groups/frontend/content/box-model.md
diff --git a/src/content/question-groups/frontend/content/browser-render.md b/src/data/question-groups/frontend/content/browser-render.md
similarity index 100%
rename from src/content/question-groups/frontend/content/browser-render.md
rename to src/data/question-groups/frontend/content/browser-render.md
diff --git a/src/content/question-groups/frontend/content/client-storage.md b/src/data/question-groups/frontend/content/client-storage.md
similarity index 100%
rename from src/content/question-groups/frontend/content/client-storage.md
rename to src/data/question-groups/frontend/content/client-storage.md
diff --git a/src/content/question-groups/frontend/content/closures.md b/src/data/question-groups/frontend/content/closures.md
similarity index 100%
rename from src/content/question-groups/frontend/content/closures.md
rename to src/data/question-groups/frontend/content/closures.md
diff --git a/src/content/question-groups/frontend/content/critical-css.md b/src/data/question-groups/frontend/content/critical-css.md
similarity index 100%
rename from src/content/question-groups/frontend/content/critical-css.md
rename to src/data/question-groups/frontend/content/critical-css.md
diff --git a/src/content/question-groups/frontend/content/csp.md b/src/data/question-groups/frontend/content/csp.md
similarity index 100%
rename from src/content/question-groups/frontend/content/csp.md
rename to src/data/question-groups/frontend/content/csp.md
diff --git a/src/content/question-groups/frontend/content/css-grid.md b/src/data/question-groups/frontend/content/css-grid.md
similarity index 100%
rename from src/content/question-groups/frontend/content/css-grid.md
rename to src/data/question-groups/frontend/content/css-grid.md
diff --git a/src/content/question-groups/frontend/content/css-specificity.md b/src/data/question-groups/frontend/content/css-specificity.md
similarity index 100%
rename from src/content/question-groups/frontend/content/css-specificity.md
rename to src/data/question-groups/frontend/content/css-specificity.md
diff --git a/src/content/question-groups/frontend/content/css-variables.md b/src/data/question-groups/frontend/content/css-variables.md
similarity index 100%
rename from src/content/question-groups/frontend/content/css-variables.md
rename to src/data/question-groups/frontend/content/css-variables.md
diff --git a/src/content/question-groups/frontend/content/dom.md b/src/data/question-groups/frontend/content/dom.md
similarity index 100%
rename from src/content/question-groups/frontend/content/dom.md
rename to src/data/question-groups/frontend/content/dom.md
diff --git a/src/content/question-groups/frontend/content/em-vs-rem.md b/src/data/question-groups/frontend/content/em-vs-rem.md
similarity index 100%
rename from src/content/question-groups/frontend/content/em-vs-rem.md
rename to src/data/question-groups/frontend/content/em-vs-rem.md
diff --git a/src/content/question-groups/frontend/content/event-delegation.md b/src/data/question-groups/frontend/content/event-delegation.md
similarity index 100%
rename from src/content/question-groups/frontend/content/event-delegation.md
rename to src/data/question-groups/frontend/content/event-delegation.md
diff --git a/src/content/question-groups/frontend/content/event-listeners.md b/src/data/question-groups/frontend/content/event-listeners.md
similarity index 100%
rename from src/content/question-groups/frontend/content/event-listeners.md
rename to src/data/question-groups/frontend/content/event-listeners.md
diff --git a/src/content/question-groups/frontend/content/event-loop-js.md b/src/data/question-groups/frontend/content/event-loop-js.md
similarity index 100%
rename from src/content/question-groups/frontend/content/event-loop-js.md
rename to src/data/question-groups/frontend/content/event-loop-js.md
diff --git a/src/content/question-groups/frontend/content/flexbox-layout.md b/src/data/question-groups/frontend/content/flexbox-layout.md
similarity index 100%
rename from src/content/question-groups/frontend/content/flexbox-layout.md
rename to src/data/question-groups/frontend/content/flexbox-layout.md
diff --git a/src/content/question-groups/frontend/content/id-vs-class.md b/src/data/question-groups/frontend/content/id-vs-class.md
similarity index 100%
rename from src/content/question-groups/frontend/content/id-vs-class.md
rename to src/data/question-groups/frontend/content/id-vs-class.md
diff --git a/src/content/question-groups/frontend/content/improve-web-perf.md b/src/data/question-groups/frontend/content/improve-web-perf.md
similarity index 100%
rename from src/content/question-groups/frontend/content/improve-web-perf.md
rename to src/data/question-groups/frontend/content/improve-web-perf.md
diff --git a/src/content/question-groups/frontend/content/js-promises.md b/src/data/question-groups/frontend/content/js-promises.md
similarity index 100%
rename from src/content/question-groups/frontend/content/js-promises.md
rename to src/data/question-groups/frontend/content/js-promises.md
diff --git a/src/content/question-groups/frontend/content/media-queries.md b/src/data/question-groups/frontend/content/media-queries.md
similarity index 100%
rename from src/content/question-groups/frontend/content/media-queries.md
rename to src/data/question-groups/frontend/content/media-queries.md
diff --git a/src/content/question-groups/frontend/content/null-vs-undefined.md b/src/data/question-groups/frontend/content/null-vs-undefined.md
similarity index 100%
rename from src/content/question-groups/frontend/content/null-vs-undefined.md
rename to src/data/question-groups/frontend/content/null-vs-undefined.md
diff --git a/src/content/question-groups/frontend/content/optimize-assets.md b/src/data/question-groups/frontend/content/optimize-assets.md
similarity index 100%
rename from src/content/question-groups/frontend/content/optimize-assets.md
rename to src/data/question-groups/frontend/content/optimize-assets.md
diff --git a/src/content/question-groups/frontend/content/same-origin-policy.md b/src/data/question-groups/frontend/content/same-origin-policy.md
similarity index 100%
rename from src/content/question-groups/frontend/content/same-origin-policy.md
rename to src/data/question-groups/frontend/content/same-origin-policy.md
diff --git a/src/content/question-groups/frontend/content/seo-best-practices.md b/src/data/question-groups/frontend/content/seo-best-practices.md
similarity index 100%
rename from src/content/question-groups/frontend/content/seo-best-practices.md
rename to src/data/question-groups/frontend/content/seo-best-practices.md
diff --git a/src/content/question-groups/frontend/content/service-workers.md b/src/data/question-groups/frontend/content/service-workers.md
similarity index 100%
rename from src/content/question-groups/frontend/content/service-workers.md
rename to src/data/question-groups/frontend/content/service-workers.md
diff --git a/src/content/question-groups/frontend/content/ssr-when.md b/src/data/question-groups/frontend/content/ssr-when.md
similarity index 100%
rename from src/content/question-groups/frontend/content/ssr-when.md
rename to src/data/question-groups/frontend/content/ssr-when.md
diff --git a/src/content/question-groups/frontend/content/state-mgmt-spa.md b/src/data/question-groups/frontend/content/state-mgmt-spa.md
similarity index 100%
rename from src/content/question-groups/frontend/content/state-mgmt-spa.md
rename to src/data/question-groups/frontend/content/state-mgmt-spa.md
diff --git a/src/content/question-groups/frontend/content/tree-shaking.md b/src/data/question-groups/frontend/content/tree-shaking.md
similarity index 100%
rename from src/content/question-groups/frontend/content/tree-shaking.md
rename to src/data/question-groups/frontend/content/tree-shaking.md
diff --git a/src/content/question-groups/frontend/content/vdom.md b/src/data/question-groups/frontend/content/vdom.md
similarity index 100%
rename from src/content/question-groups/frontend/content/vdom.md
rename to src/data/question-groups/frontend/content/vdom.md
diff --git a/src/content/question-groups/javascript/content/alert-prompt-confirm.md b/src/data/question-groups/javascript/content/alert-prompt-confirm.md
similarity index 100%
rename from src/content/question-groups/javascript/content/alert-prompt-confirm.md
rename to src/data/question-groups/javascript/content/alert-prompt-confirm.md
diff --git a/src/content/question-groups/javascript/content/append-child-vs-insert-before.md b/src/data/question-groups/javascript/content/append-child-vs-insert-before.md
similarity index 100%
rename from src/content/question-groups/javascript/content/append-child-vs-insert-before.md
rename to src/data/question-groups/javascript/content/append-child-vs-insert-before.md
diff --git a/src/content/question-groups/javascript/content/async-vs-sync.md b/src/data/question-groups/javascript/content/async-vs-sync.md
similarity index 100%
rename from src/content/question-groups/javascript/content/async-vs-sync.md
rename to src/data/question-groups/javascript/content/async-vs-sync.md
diff --git a/src/content/question-groups/javascript/content/break-and-continue.md b/src/data/question-groups/javascript/content/break-and-continue.md
similarity index 100%
rename from src/content/question-groups/javascript/content/break-and-continue.md
rename to src/data/question-groups/javascript/content/break-and-continue.md
diff --git a/src/content/question-groups/javascript/content/callback-hell.md b/src/data/question-groups/javascript/content/callback-hell.md
similarity index 100%
rename from src/content/question-groups/javascript/content/callback-hell.md
rename to src/data/question-groups/javascript/content/callback-hell.md
diff --git a/src/content/question-groups/javascript/content/closure.md b/src/data/question-groups/javascript/content/closure.md
similarity index 100%
rename from src/content/question-groups/javascript/content/closure.md
rename to src/data/question-groups/javascript/content/closure.md
diff --git a/src/content/question-groups/javascript/content/comma-operator.md b/src/data/question-groups/javascript/content/comma-operator.md
similarity index 100%
rename from src/content/question-groups/javascript/content/comma-operator.md
rename to src/data/question-groups/javascript/content/comma-operator.md
diff --git a/src/content/question-groups/javascript/content/create-element.md b/src/data/question-groups/javascript/content/create-element.md
similarity index 100%
rename from src/content/question-groups/javascript/content/create-element.md
rename to src/data/question-groups/javascript/content/create-element.md
diff --git a/src/content/question-groups/javascript/content/custom-event.md b/src/data/question-groups/javascript/content/custom-event.md
similarity index 100%
rename from src/content/question-groups/javascript/content/custom-event.md
rename to src/data/question-groups/javascript/content/custom-event.md
diff --git a/src/content/question-groups/javascript/content/debug-javascript.md b/src/data/question-groups/javascript/content/debug-javascript.md
similarity index 100%
rename from src/content/question-groups/javascript/content/debug-javascript.md
rename to src/data/question-groups/javascript/content/debug-javascript.md
diff --git a/src/content/question-groups/javascript/content/defer-vs-async.md b/src/data/question-groups/javascript/content/defer-vs-async.md
similarity index 100%
rename from src/content/question-groups/javascript/content/defer-vs-async.md
rename to src/data/question-groups/javascript/content/defer-vs-async.md
diff --git a/src/content/question-groups/javascript/content/do-while-loop.md b/src/data/question-groups/javascript/content/do-while-loop.md
similarity index 100%
rename from src/content/question-groups/javascript/content/do-while-loop.md
rename to src/data/question-groups/javascript/content/do-while-loop.md
diff --git a/src/content/question-groups/javascript/content/equality-operator.md b/src/data/question-groups/javascript/content/equality-operator.md
similarity index 100%
rename from src/content/question-groups/javascript/content/equality-operator.md
rename to src/data/question-groups/javascript/content/equality-operator.md
diff --git a/src/content/question-groups/javascript/content/error-in-async-await.md b/src/data/question-groups/javascript/content/error-in-async-await.md
similarity index 100%
rename from src/content/question-groups/javascript/content/error-in-async-await.md
rename to src/data/question-groups/javascript/content/error-in-async-await.md
diff --git a/src/content/question-groups/javascript/content/error-in-promise.md b/src/data/question-groups/javascript/content/error-in-promise.md
similarity index 100%
rename from src/content/question-groups/javascript/content/error-in-promise.md
rename to src/data/question-groups/javascript/content/error-in-promise.md
diff --git a/src/content/question-groups/javascript/content/event-bubbling.md b/src/data/question-groups/javascript/content/event-bubbling.md
similarity index 100%
rename from src/content/question-groups/javascript/content/event-bubbling.md
rename to src/data/question-groups/javascript/content/event-bubbling.md
diff --git a/src/content/question-groups/javascript/content/event-loop.md b/src/data/question-groups/javascript/content/event-loop.md
similarity index 100%
rename from src/content/question-groups/javascript/content/event-loop.md
rename to src/data/question-groups/javascript/content/event-loop.md
diff --git a/src/content/question-groups/javascript/content/explicit-binding.md b/src/data/question-groups/javascript/content/explicit-binding.md
similarity index 100%
rename from src/content/question-groups/javascript/content/explicit-binding.md
rename to src/data/question-groups/javascript/content/explicit-binding.md
diff --git a/src/content/question-groups/javascript/content/filter-method.md b/src/data/question-groups/javascript/content/filter-method.md
similarity index 100%
rename from src/content/question-groups/javascript/content/filter-method.md
rename to src/data/question-groups/javascript/content/filter-method.md
diff --git a/src/content/question-groups/javascript/content/finally-block-in-promise.md b/src/data/question-groups/javascript/content/finally-block-in-promise.md
similarity index 100%
rename from src/content/question-groups/javascript/content/finally-block-in-promise.md
rename to src/data/question-groups/javascript/content/finally-block-in-promise.md
diff --git a/src/content/question-groups/javascript/content/find-unique-array-values.md b/src/data/question-groups/javascript/content/find-unique-array-values.md
similarity index 100%
rename from src/content/question-groups/javascript/content/find-unique-array-values.md
rename to src/data/question-groups/javascript/content/find-unique-array-values.md
diff --git a/src/content/question-groups/javascript/content/for-each-method.md b/src/data/question-groups/javascript/content/for-each-method.md
similarity index 100%
rename from src/content/question-groups/javascript/content/for-each-method.md
rename to src/data/question-groups/javascript/content/for-each-method.md
diff --git a/src/content/question-groups/javascript/content/heap-and-stack.md b/src/data/question-groups/javascript/content/heap-and-stack.md
similarity index 100%
rename from src/content/question-groups/javascript/content/heap-and-stack.md
rename to src/data/question-groups/javascript/content/heap-and-stack.md
diff --git a/src/content/question-groups/javascript/content/hoisting.md b/src/data/question-groups/javascript/content/hoisting.md
similarity index 100%
rename from src/content/question-groups/javascript/content/hoisting.md
rename to src/data/question-groups/javascript/content/hoisting.md
diff --git a/src/content/question-groups/javascript/content/iife.md b/src/data/question-groups/javascript/content/iife.md
similarity index 100%
rename from src/content/question-groups/javascript/content/iife.md
rename to src/data/question-groups/javascript/content/iife.md
diff --git a/src/content/question-groups/javascript/content/immutable-object.md b/src/data/question-groups/javascript/content/immutable-object.md
similarity index 100%
rename from src/content/question-groups/javascript/content/immutable-object.md
rename to src/data/question-groups/javascript/content/immutable-object.md
diff --git a/src/content/question-groups/javascript/content/increment-operator.md b/src/data/question-groups/javascript/content/increment-operator.md
similarity index 100%
rename from src/content/question-groups/javascript/content/increment-operator.md
rename to src/data/question-groups/javascript/content/increment-operator.md
diff --git a/src/content/question-groups/javascript/content/infinite-loop.md b/src/data/question-groups/javascript/content/infinite-loop.md
similarity index 100%
rename from src/content/question-groups/javascript/content/infinite-loop.md
rename to src/data/question-groups/javascript/content/infinite-loop.md
diff --git a/src/content/question-groups/javascript/content/inheritance.md b/src/data/question-groups/javascript/content/inheritance.md
similarity index 100%
rename from src/content/question-groups/javascript/content/inheritance.md
rename to src/data/question-groups/javascript/content/inheritance.md
diff --git a/src/content/question-groups/javascript/content/labelled-statements.md b/src/data/question-groups/javascript/content/labelled-statements.md
similarity index 100%
rename from src/content/question-groups/javascript/content/labelled-statements.md
rename to src/data/question-groups/javascript/content/labelled-statements.md
diff --git a/src/content/question-groups/javascript/content/logical-operators.md b/src/data/question-groups/javascript/content/logical-operators.md
similarity index 100%
rename from src/content/question-groups/javascript/content/logical-operators.md
rename to src/data/question-groups/javascript/content/logical-operators.md
diff --git a/src/content/question-groups/javascript/content/map-method.md b/src/data/question-groups/javascript/content/map-method.md
similarity index 100%
rename from src/content/question-groups/javascript/content/map-method.md
rename to src/data/question-groups/javascript/content/map-method.md
diff --git a/src/content/question-groups/javascript/content/map.md b/src/data/question-groups/javascript/content/map.md
similarity index 100%
rename from src/content/question-groups/javascript/content/map.md
rename to src/data/question-groups/javascript/content/map.md
diff --git a/src/content/question-groups/javascript/content/measure-dimensions.md b/src/data/question-groups/javascript/content/measure-dimensions.md
similarity index 100%
rename from src/content/question-groups/javascript/content/measure-dimensions.md
rename to src/data/question-groups/javascript/content/measure-dimensions.md
diff --git a/src/content/question-groups/javascript/content/merge-arrays.md b/src/data/question-groups/javascript/content/merge-arrays.md
similarity index 100%
rename from src/content/question-groups/javascript/content/merge-arrays.md
rename to src/data/question-groups/javascript/content/merge-arrays.md
diff --git a/src/content/question-groups/javascript/content/nullish-coalescing-operator.md b/src/data/question-groups/javascript/content/nullish-coalescing-operator.md
similarity index 100%
rename from src/content/question-groups/javascript/content/nullish-coalescing-operator.md
rename to src/data/question-groups/javascript/content/nullish-coalescing-operator.md
diff --git a/src/content/question-groups/javascript/content/parse-json.md b/src/data/question-groups/javascript/content/parse-json.md
similarity index 100%
rename from src/content/question-groups/javascript/content/parse-json.md
rename to src/data/question-groups/javascript/content/parse-json.md
diff --git a/src/content/question-groups/javascript/content/prevent-default.md b/src/data/question-groups/javascript/content/prevent-default.md
similarity index 100%
rename from src/content/question-groups/javascript/content/prevent-default.md
rename to src/data/question-groups/javascript/content/prevent-default.md
diff --git a/src/content/question-groups/javascript/content/promise-all-vs-all-settled.md b/src/data/question-groups/javascript/content/promise-all-vs-all-settled.md
similarity index 100%
rename from src/content/question-groups/javascript/content/promise-all-vs-all-settled.md
rename to src/data/question-groups/javascript/content/promise-all-vs-all-settled.md
diff --git a/src/content/question-groups/javascript/content/prototype-chain.md b/src/data/question-groups/javascript/content/prototype-chain.md
similarity index 100%
rename from src/content/question-groups/javascript/content/prototype-chain.md
rename to src/data/question-groups/javascript/content/prototype-chain.md
diff --git a/src/content/question-groups/javascript/content/query-selector.md b/src/data/question-groups/javascript/content/query-selector.md
similarity index 100%
rename from src/content/question-groups/javascript/content/query-selector.md
rename to src/data/question-groups/javascript/content/query-selector.md
diff --git a/src/content/question-groups/javascript/content/reduce-method.md b/src/data/question-groups/javascript/content/reduce-method.md
similarity index 100%
rename from src/content/question-groups/javascript/content/reduce-method.md
rename to src/data/question-groups/javascript/content/reduce-method.md
diff --git a/src/content/question-groups/javascript/content/remove-element.md b/src/data/question-groups/javascript/content/remove-element.md
similarity index 100%
rename from src/content/question-groups/javascript/content/remove-element.md
rename to src/data/question-groups/javascript/content/remove-element.md
diff --git a/src/content/question-groups/javascript/content/scroll-to-top.md b/src/data/question-groups/javascript/content/scroll-to-top.md
similarity index 100%
rename from src/content/question-groups/javascript/content/scroll-to-top.md
rename to src/data/question-groups/javascript/content/scroll-to-top.md
diff --git a/src/content/question-groups/javascript/content/set-interval.md b/src/data/question-groups/javascript/content/set-interval.md
similarity index 100%
rename from src/content/question-groups/javascript/content/set-interval.md
rename to src/data/question-groups/javascript/content/set-interval.md
diff --git a/src/content/question-groups/javascript/content/set-timeout.md b/src/data/question-groups/javascript/content/set-timeout.md
similarity index 100%
rename from src/content/question-groups/javascript/content/set-timeout.md
rename to src/data/question-groups/javascript/content/set-timeout.md
diff --git a/src/content/question-groups/javascript/content/set.md b/src/data/question-groups/javascript/content/set.md
similarity index 100%
rename from src/content/question-groups/javascript/content/set.md
rename to src/data/question-groups/javascript/content/set.md
diff --git a/src/content/question-groups/javascript/content/spread-operator.md b/src/data/question-groups/javascript/content/spread-operator.md
similarity index 100%
rename from src/content/question-groups/javascript/content/spread-operator.md
rename to src/data/question-groups/javascript/content/spread-operator.md
diff --git a/src/content/question-groups/javascript/content/switch-case.md b/src/data/question-groups/javascript/content/switch-case.md
similarity index 100%
rename from src/content/question-groups/javascript/content/switch-case.md
rename to src/data/question-groups/javascript/content/switch-case.md
diff --git a/src/content/question-groups/javascript/content/ternary-operator.md b/src/data/question-groups/javascript/content/ternary-operator.md
similarity index 100%
rename from src/content/question-groups/javascript/content/ternary-operator.md
rename to src/data/question-groups/javascript/content/ternary-operator.md
diff --git a/src/content/question-groups/javascript/content/variable-number-of-arguments.md b/src/data/question-groups/javascript/content/variable-number-of-arguments.md
similarity index 100%
rename from src/content/question-groups/javascript/content/variable-number-of-arguments.md
rename to src/data/question-groups/javascript/content/variable-number-of-arguments.md
diff --git a/src/content/question-groups/nodejs/content/commonjs-vs-esm.md b/src/data/question-groups/nodejs/content/commonjs-vs-esm.md
similarity index 100%
rename from src/content/question-groups/nodejs/content/commonjs-vs-esm.md
rename to src/data/question-groups/nodejs/content/commonjs-vs-esm.md
diff --git a/src/content/question-groups/nodejs/content/error-handling.md b/src/data/question-groups/nodejs/content/error-handling.md
similarity index 100%
rename from src/content/question-groups/nodejs/content/error-handling.md
rename to src/data/question-groups/nodejs/content/error-handling.md
diff --git a/src/content/question-groups/nodejs/content/exit-codes.md b/src/data/question-groups/nodejs/content/exit-codes.md
similarity index 100%
rename from src/content/question-groups/nodejs/content/exit-codes.md
rename to src/data/question-groups/nodejs/content/exit-codes.md
diff --git a/src/content/question-groups/nodejs/content/input-from-command-line.md b/src/data/question-groups/nodejs/content/input-from-command-line.md
similarity index 100%
rename from src/content/question-groups/nodejs/content/input-from-command-line.md
rename to src/data/question-groups/nodejs/content/input-from-command-line.md
diff --git a/src/content/question-groups/nodejs/content/order-priority.md b/src/data/question-groups/nodejs/content/order-priority.md
similarity index 100%
rename from src/content/question-groups/nodejs/content/order-priority.md
rename to src/data/question-groups/nodejs/content/order-priority.md
diff --git a/src/content/question-groups/nodejs/content/process-argv.md b/src/data/question-groups/nodejs/content/process-argv.md
similarity index 100%
rename from src/content/question-groups/nodejs/content/process-argv.md
rename to src/data/question-groups/nodejs/content/process-argv.md
diff --git a/src/content/question-groups/nodejs/content/process-cwd-vs-dirname.md b/src/data/question-groups/nodejs/content/process-cwd-vs-dirname.md
similarity index 100%
rename from src/content/question-groups/nodejs/content/process-cwd-vs-dirname.md
rename to src/data/question-groups/nodejs/content/process-cwd-vs-dirname.md
diff --git a/src/content/question-groups/nodejs/content/web-server.md b/src/data/question-groups/nodejs/content/web-server.md
similarity index 100%
rename from src/content/question-groups/nodejs/content/web-server.md
rename to src/data/question-groups/nodejs/content/web-server.md
diff --git a/src/content/question-groups/react/content/component-lifecycle.md b/src/data/question-groups/react/content/component-lifecycle.md
similarity index 100%
rename from src/content/question-groups/react/content/component-lifecycle.md
rename to src/data/question-groups/react/content/component-lifecycle.md
diff --git a/src/content/question-groups/react/content/controlled-vs-uncontrolled.md b/src/data/question-groups/react/content/controlled-vs-uncontrolled.md
similarity index 100%
rename from src/content/question-groups/react/content/controlled-vs-uncontrolled.md
rename to src/data/question-groups/react/content/controlled-vs-uncontrolled.md
diff --git a/src/content/question-groups/react/content/create-portal.md b/src/data/question-groups/react/content/create-portal.md
similarity index 100%
rename from src/content/question-groups/react/content/create-portal.md
rename to src/data/question-groups/react/content/create-portal.md
diff --git a/src/content/question-groups/react/content/custom-hook.md b/src/data/question-groups/react/content/custom-hook.md
similarity index 100%
rename from src/content/question-groups/react/content/custom-hook.md
rename to src/data/question-groups/react/content/custom-hook.md
diff --git a/src/content/question-groups/react/content/error-boundaries.md b/src/data/question-groups/react/content/error-boundaries.md
similarity index 100%
rename from src/content/question-groups/react/content/error-boundaries.md
rename to src/data/question-groups/react/content/error-boundaries.md
diff --git a/src/content/question-groups/react/content/flush-sync.md b/src/data/question-groups/react/content/flush-sync.md
similarity index 100%
rename from src/content/question-groups/react/content/flush-sync.md
rename to src/data/question-groups/react/content/flush-sync.md
diff --git a/src/content/question-groups/react/content/investigate-slow-app.md b/src/data/question-groups/react/content/investigate-slow-app.md
similarity index 100%
rename from src/content/question-groups/react/content/investigate-slow-app.md
rename to src/data/question-groups/react/content/investigate-slow-app.md
diff --git a/src/content/question-groups/react/content/lazy-loading.md b/src/data/question-groups/react/content/lazy-loading.md
similarity index 100%
rename from src/content/question-groups/react/content/lazy-loading.md
rename to src/data/question-groups/react/content/lazy-loading.md
diff --git a/src/content/question-groups/react/content/pure-components.md b/src/data/question-groups/react/content/pure-components.md
similarity index 100%
rename from src/content/question-groups/react/content/pure-components.md
rename to src/data/question-groups/react/content/pure-components.md
diff --git a/src/content/question-groups/react/content/re-renders.md b/src/data/question-groups/react/content/re-renders.md
similarity index 100%
rename from src/content/question-groups/react/content/re-renders.md
rename to src/data/question-groups/react/content/re-renders.md
diff --git a/src/content/question-groups/react/content/ref-forwarding.md b/src/data/question-groups/react/content/ref-forwarding.md
similarity index 100%
rename from src/content/question-groups/react/content/ref-forwarding.md
rename to src/data/question-groups/react/content/ref-forwarding.md
diff --git a/src/content/question-groups/react/content/render-list.md b/src/data/question-groups/react/content/render-list.md
similarity index 100%
rename from src/content/question-groups/react/content/render-list.md
rename to src/data/question-groups/react/content/render-list.md
diff --git a/src/content/question-groups/react/content/strict-mode.md b/src/data/question-groups/react/content/strict-mode.md
similarity index 100%
rename from src/content/question-groups/react/content/strict-mode.md
rename to src/data/question-groups/react/content/strict-mode.md
diff --git a/src/content/question-groups/react/content/suspense.md b/src/data/question-groups/react/content/suspense.md
similarity index 100%
rename from src/content/question-groups/react/content/suspense.md
rename to src/data/question-groups/react/content/suspense.md
diff --git a/src/content/question-groups/react/content/synthetic-events.md b/src/data/question-groups/react/content/synthetic-events.md
similarity index 100%
rename from src/content/question-groups/react/content/synthetic-events.md
rename to src/data/question-groups/react/content/synthetic-events.md
diff --git a/src/content/question-groups/react/content/use-transition.md b/src/data/question-groups/react/content/use-transition.md
similarity index 100%
rename from src/content/question-groups/react/content/use-transition.md
rename to src/data/question-groups/react/content/use-transition.md
diff --git a/src/content/question-groups/react/content/virtual-dom.md b/src/data/question-groups/react/content/virtual-dom.md
similarity index 100%
rename from src/content/question-groups/react/content/virtual-dom.md
rename to src/data/question-groups/react/content/virtual-dom.md
diff --git a/src/lib/guide.ts b/src/lib/guide.ts
index 35e2b4cb3..4639530ef 100644
--- a/src/lib/guide.ts
+++ b/src/lib/guide.ts
@@ -57,7 +57,7 @@ export async function getGuideById(
): Promise {
const allGuides = await getAllGuides();
- return allGuides.find((guide) => guide.id === id);
+ return allGuides.find((guide) => guide.slug === id);
}
type HeadingType = ReturnType[number];
diff --git a/src/lib/question-group.ts b/src/lib/question-group.ts
index c1b848c79..7c25d25a1 100644
--- a/src/lib/question-group.ts
+++ b/src/lib/question-group.ts
@@ -1,7 +1,6 @@
-import type { MarkdownFileType } from './file';
import slugify from 'slugify';
import { getAllAuthors } from './author.ts';
-import type { CollectionEntry } from 'astro:content';
+import { getCollection, type CollectionEntry } from 'astro:content';
type RawQuestionGroupFileType = CollectionEntry<'question-groups'>;
@@ -24,14 +23,9 @@ export type QuestionGroupType = RawQuestionGroupFileType & {
* @returns Promisified BestPracticeFileType[]
*/
export async function getAllQuestionGroups(): Promise {
- const questionGroupFilesMap = import.meta.glob(
- `/src/data/question-groups/*/*.md`,
- {
- eager: true,
- },
- );
-
- const answerFilesMap = import.meta.glob(
+ const questionGroupEntries = await getCollection('question-groups');
+ const allAuthors = await getAllAuthors();
+ const answerFilesMap = import.meta.glob(
// get the files inside /src/data/question-groups/[ignore]/content/*.md
`/src/data/question-groups/*/content/*.md`,
{
@@ -40,25 +34,19 @@ export async function getAllQuestionGroups(): Promise {
},
);
- const allAuthors = await getAllAuthors();
-
- return Object.values(questionGroupFilesMap)
- .map((questionGroupFile) => {
- const fileParts = questionGroupFile?.file?.split('/');
- const [questionGroupDir, questionGroupFileName] = fileParts?.slice(-2);
-
- const questionGroupFileId = questionGroupFileName?.replace('.md', '');
+ return questionGroupEntries
+ .map((questionGroupEntry) => {
const formattedAnswers: QuestionType[] =
- questionGroupFile.frontmatter.questions.map((qa) => {
+ questionGroupEntry.data.questions.map((qa) => {
const questionText = qa.question;
let answerText = qa.answer;
let isLongAnswer = false;
if (answerText.endsWith('.md')) {
- const answerFilePath = `/src/data/question-groups/${questionGroupDir}/content/${answerText}`;
+ const answerFilePath = `/src/data/question-groups/${questionGroupEntry.slug}/content/${answerText}`;
answerText =
- (answerFilesMap[answerFilePath] as any)?.default ||
- answerFilesMap[answerFilePath] ||
+ // @ts-ignore
+ answerFilesMap[answerFilePath]?.default ||
`File missing: ${answerFilePath}`;
isLongAnswer = true;
@@ -84,23 +72,24 @@ export async function getAllQuestionGroups(): Promise {
return acc;
}, [] as string[]);
+ const author = allAuthors.find(
+ (author) => author.slug === questionGroupEntry.data.authorId,
+ );
+
return {
- ...questionGroupFile,
- id: questionGroupFileId,
+ ...questionGroupEntry,
questions: formattedAnswers,
allTopics: uniqueTopics,
- author: allAuthors.find(
- (author) => author.id === questionGroupFile.frontmatter.authorId,
- )!,
+ author,
};
})
- .sort((a, b) => a.frontmatter.order - b.frontmatter.order);
+ .sort((a, b) => a.data.order - b.data.order);
}
-export async function getQuestionGroupById(id: string) {
+export async function getQuestionGroupById(slug: string) {
const questionGroups = await getAllQuestionGroups();
- return questionGroups.find((group) => group.id === id);
+ return questionGroups.find((group) => group.slug === slug);
}
export async function getQuestionGroupsByIds(
@@ -110,24 +99,14 @@ export async function getQuestionGroupsByIds(
return [];
}
- const questionGroupFilesMap = import.meta.glob<
- MarkdownFileType
- >(`/src/data/question-groups/*/*.md`, {
- eager: true,
- });
-
- return Object.values(questionGroupFilesMap)
+ const questionGroups = await getAllQuestionGroups();
+ return questionGroups
+ .filter((group) => ids.includes(group.slug))
.map((group) => {
- const fileId = group?.file?.split('/')?.pop()?.replace('.md', '');
- const frontmatter = group.frontmatter;
-
return {
- id: fileId!,
- title: frontmatter.briefTitle,
- description: `${frontmatter.questions.length} Questions`,
+ id: group.id,
+ title: group.data.title,
+ description: `${group.questions.length} Questions`,
};
- })
- .filter((group) => {
- return ids.includes(group.id);
});
}
diff --git a/src/pages/authors/[authorId].astro b/src/pages/authors/[authorId].astro
index b67361202..18947fc91 100644
--- a/src/pages/authors/[authorId].astro
+++ b/src/pages/authors/[authorId].astro
@@ -26,7 +26,7 @@ const { Content } = await author.render();
const guides = await getGuidesByAuthor(authorId);
const questionGuides = (await getAllQuestionGroups()).filter(
- (group) => group.frontmatter.authorId === authorId,
+ (group) => group.data.authorId === authorId,
);
const videos = await getVideosByAuthor(authorId);
---
@@ -135,12 +135,10 @@ const videos = await getVideosByAuthor(authorId);
class='rounded-t-xl bg-gradient-to-b from-gray-100 to-white px-3 py-2 md:px-6 md:py-3 [&>*:last-child]:border-b-0'
>
{
- [...guides]
+ [...guides, ...questionGuides]
.sort((a, b) => {
- const aDate = a.data.date;
- // const aDate = a.data.date || a.data.publishedAt;
- const bDate = b.data.date;
- // const bDate = b.data.date || b.data.publishedAt;
+ const aDate = a.data.date!;
+ const bDate = b.data.date!;
return new Date(bDate).getTime() - new Date(aDate).getTime();
})
.map((guide) => )
diff --git a/src/pages/backend/developer-skills.astro b/src/pages/backend/developer-skills.astro
index fb1cf59c6..edc27d616 100644
--- a/src/pages/backend/developer-skills.astro
+++ b/src/pages/backend/developer-skills.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'backend-developer-skills';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
diff --git a/src/pages/backend/developer-tools.astro b/src/pages/backend/developer-tools.astro
index b788dacda..9199e54d6 100644
--- a/src/pages/backend/developer-tools.astro
+++ b/src/pages/backend/developer-tools.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'backend-developer-tools';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
diff --git a/src/pages/backend/languages.astro b/src/pages/backend/languages.astro
index 76da82b2a..432a577eb 100644
--- a/src/pages/backend/languages.astro
+++ b/src/pages/backend/languages.astro
@@ -12,7 +12,7 @@ if (!guide) {
return Astro.redirect('/404');
}
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
diff --git a/src/pages/backend/project-ideas.astro b/src/pages/backend/project-ideas.astro
index 1e1d960fe..f1beadac7 100644
--- a/src/pages/backend/project-ideas.astro
+++ b/src/pages/backend/project-ideas.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'backend-project-ideas';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
diff --git a/src/pages/backend/technologies.astro b/src/pages/backend/technologies.astro
index 18df34e73..25e0236e6 100644
--- a/src/pages/backend/technologies.astro
+++ b/src/pages/backend/technologies.astro
@@ -12,7 +12,7 @@ if (!guide) {
return Astro.redirect('/404');
}
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
@@ -25,7 +25,7 @@ const ogImageUrl =
diff --git a/src/pages/devops/career-path.astro b/src/pages/devops/career-path.astro
index af1f52631..9f1363f4e 100644
--- a/src/pages/devops/career-path.astro
+++ b/src/pages/devops/career-path.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'devops-career-path';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
@@ -22,7 +22,7 @@ const ogImageUrl =
diff --git a/src/pages/devops/devops-engineer.astro b/src/pages/devops/devops-engineer.astro
index c90546429..063fc285d 100644
--- a/src/pages/devops/devops-engineer.astro
+++ b/src/pages/devops/devops-engineer.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'devops-engineer';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
@@ -22,7 +22,7 @@ const ogImageUrl =
diff --git a/src/pages/devops/devops-vs-sre.astro b/src/pages/devops/devops-vs-sre.astro
index fb90dbb7e..096277921 100644
--- a/src/pages/devops/devops-vs-sre.astro
+++ b/src/pages/devops/devops-vs-sre.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'devops-vs-sre';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
@@ -22,7 +22,7 @@ const ogImageUrl =
diff --git a/src/pages/devops/how-to-become-devops-engineer.astro b/src/pages/devops/how-to-become-devops-engineer.astro
index 19b85ca49..e535d008b 100644
--- a/src/pages/devops/how-to-become-devops-engineer.astro
+++ b/src/pages/devops/how-to-become-devops-engineer.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'how-to-become-devops-engineer';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
@@ -22,7 +22,7 @@ const ogImageUrl =
diff --git a/src/pages/devops/skills.astro b/src/pages/devops/skills.astro
index 43029d0a1..da5bac958 100644
--- a/src/pages/devops/skills.astro
+++ b/src/pages/devops/skills.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'devops-skills';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
@@ -22,7 +22,7 @@ const ogImageUrl =
diff --git a/src/pages/frontend/developer-skills.astro b/src/pages/frontend/developer-skills.astro
index ad90760e5..b35d65ed1 100644
--- a/src/pages/frontend/developer-skills.astro
+++ b/src/pages/frontend/developer-skills.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'frontend-developer-skills';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
@@ -22,7 +22,7 @@ const ogImageUrl =
diff --git a/src/pages/frontend/how-to-become-frontend-developer.astro b/src/pages/frontend/how-to-become-frontend-developer.astro
index 5a2f32954..ffc537370 100644
--- a/src/pages/frontend/how-to-become-frontend-developer.astro
+++ b/src/pages/frontend/how-to-become-frontend-developer.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'how-to-become-frontend-developer';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
@@ -22,7 +22,7 @@ const ogImageUrl =
diff --git a/src/pages/frontend/languages.astro b/src/pages/frontend/languages.astro
index 06b1a1840..05f5b25eb 100644
--- a/src/pages/frontend/languages.astro
+++ b/src/pages/frontend/languages.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'frontend-languages';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
@@ -22,7 +22,7 @@ const ogImageUrl =
diff --git a/src/pages/full-stack/developer-skills.astro b/src/pages/full-stack/developer-skills.astro
index fb6c53871..60f60ac41 100644
--- a/src/pages/full-stack/developer-skills.astro
+++ b/src/pages/full-stack/developer-skills.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'full-stack-developer-skills';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
@@ -22,7 +22,7 @@ const ogImageUrl =
diff --git a/src/pages/full-stack/vs-software-engineer.astro b/src/pages/full-stack/vs-software-engineer.astro
index 2abdba17e..7a2668825 100644
--- a/src/pages/full-stack/vs-software-engineer.astro
+++ b/src/pages/full-stack/vs-software-engineer.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'full-stack-vs-software-engineer';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
@@ -22,7 +22,7 @@ const ogImageUrl =
diff --git a/src/pages/guides/[guideId].astro b/src/pages/guides/[guideId].astro
index 5b26c13e8..946891ba8 100644
--- a/src/pages/guides/[guideId].astro
+++ b/src/pages/guides/[guideId].astro
@@ -12,18 +12,18 @@ export interface Props {
export async function getStaticPaths() {
const guides = (await getAllGuides()).filter(
- (guide) => !guide.frontmatter.excludedBySlug,
+ (guide) => !guide.data.excludedBySlug,
);
return guides.map((guide) => ({
- params: { guideId: guide.id },
+ params: { guideId: guide.slug },
props: { guide },
}));
}
const { guideId } = Astro.params;
const { guide } = Astro.props;
-const { frontmatter: guideData, author } = guide;
+const { data: guideData, author } = guide;
const ogImageUrl =
guideData.seo.ogImageUrl ||
diff --git a/src/pages/guides/index.astro b/src/pages/guides/index.astro
index d3b7a75ef..b0fb6d01f 100644
--- a/src/pages/guides/index.astro
+++ b/src/pages/guides/index.astro
@@ -7,13 +7,13 @@ import { getAllQuestionGroups } from '../../lib/question-group';
const guides = await getAllGuides();
const questionGuides = (await getAllQuestionGroups()).filter(
- (questionGroup) => questionGroup.frontmatter.authorId,
+ (questionGroup) => questionGroup.data.authorId,
);
const allGuides = [...guides, ...questionGuides];
const sortedGuides = allGuides.sort((a, b) => {
- const aDate = new Date(a.frontmatter.date);
- const bDate = new Date(b.frontmatter.date);
+ const aDate = new Date(a.data.date!);
+ const bDate = new Date(b.data.date!);
return bDate.getTime() - aDate.getTime();
});
diff --git a/src/pages/java/developer-skills.astro b/src/pages/java/developer-skills.astro
index 5b0061bb1..63cf918a2 100644
--- a/src/pages/java/developer-skills.astro
+++ b/src/pages/java/developer-skills.astro
@@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown';
const guideId = 'java-developer-skills';
const guide = await getGuideById(guideId);
-const { frontmatter: guideData } = guide!;
+const { data: guideData } = guide!;
const ogImageUrl =
guideData.seo.ogImageUrl ||
@@ -22,7 +22,7 @@ const ogImageUrl =
diff --git a/src/pages/pages.json.ts b/src/pages/pages.json.ts
index d79ec3d12..16703b170 100644
--- a/src/pages/pages.json.ts
+++ b/src/pages/pages.json.ts
@@ -36,17 +36,17 @@ export async function GET() {
...questionGroups.map((questionGroup) => ({
id: questionGroup.id,
url: `/questions/${questionGroup.id}`,
- title: questionGroup.frontmatter.briefTitle,
+ title: questionGroup.data.briefTitle,
group: 'Questions',
})),
...guides.map((guide) => ({
id: guide.id,
- url: guide.frontmatter.excludedBySlug
- ? guide.frontmatter.excludedBySlug
+ url: guide.data.excludedBySlug
+ ? guide.data.excludedBySlug
: `/guides/${guide.id}`,
- title: guide.frontmatter.title,
- description: guide.frontmatter.description,
- authorId: guide.frontmatter.authorId,
+ title: guide.data.title,
+ description: guide.data.description,
+ authorId: guide.data.authorId,
group: 'Guides',
})),
...videos.map((video) => ({
diff --git a/src/pages/questions/[questionGroupId].astro b/src/pages/questions/[questionGroupId].astro
index d782db83d..6ea62c146 100644
--- a/src/pages/questions/[questionGroupId].astro
+++ b/src/pages/questions/[questionGroupId].astro
@@ -1,9 +1,6 @@
---
-import GridItem from '../../components/GridItem.astro';
-import SimplePageHeader from '../../components/SimplePageHeader.astro';
import BaseLayout from '../../layouts/BaseLayout.astro';
import Footer from '../../components/Footer.astro';
-import AstroIcon from '../../components/AstroIcon.astro';
import { QuestionsList } from '../../components/Questions/QuestionsList';
import {
@@ -22,14 +19,14 @@ export async function getStaticPaths() {
return questionGroups.map((questionGroup) => {
return {
- params: { questionGroupId: questionGroup.id },
+ params: { questionGroupId: questionGroup.slug },
props: { questionGroup },
};
});
}
const { questionGroup } = Astro.props;
-const { frontmatter } = questionGroup;
+const { data: frontmatter } = questionGroup;
---
{
- !questionGroup.frontmatter.authorId && (
+ !frontmatter.authorId && (
@@ -64,7 +61,7 @@ const { frontmatter } = questionGroup;
@@ -73,11 +70,7 @@ const { frontmatter } = questionGroup;
)
}
- {
- questionGroup.frontmatter.authorId && (
-
- )
- }
+ {frontmatter?.authorId &&
}
diff --git a/src/pages/questions/index.astro b/src/pages/questions/index.astro
index efa15bb67..c001d0e66 100644
--- a/src/pages/questions/index.astro
+++ b/src/pages/questions/index.astro
@@ -24,9 +24,9 @@ const questionGroups = await getAllQuestionGroups();
{
questionGroups.map((questionGroup) => (
))