diff --git a/tutorials/angular/index.mdx b/tutorials/angular/index.mdx new file mode 100644 index 000000000..541ebfd6a --- /dev/null +++ b/tutorials/angular/index.mdx @@ -0,0 +1,232 @@ +```txt +docs/ +└── tutorials/ + └── angular/ + ├── index.mdx + ├── 01-introduction/ + │ ├── what-is-angular.mdx + │ ├── angular-features.mdx + │ ├── angular-vs-react.mdx + │ ├── angular-vs-vue.mdx + │ ├── angular-architecture.mdx + │ └── how-angular-works.mdx + ├── 02-environment-setup/ + │ ├── install-nodejs-and-npm.mdx + │ ├── install-angular-cli.mdx + │ ├── setup-vscode-for-angular.mdx + │ ├── angular-playground.mdx + │ └── verify-installation.mdx + ├── 03-first-angular-application/ + │ ├── create-angular-project.mdx + │ ├── angular-project-structure.mdx + │ ├── run-development-server.mdx + │ ├── angular-application-bootstrap.mdx + │ ├── angular-configuration-files.mdx + │ └── build-and-serve.mdx + ├── 04-components/ + │ ├── component-fundamentals.mdx + │ ├── create-components.mdx + │ ├── component-metadata.mdx + │ ├── standalone-components.mdx + │ ├── component-lifecycle.mdx + │ ├── component-communication.mdx + │ ├── input-and-output.mdx + │ ├── model-inputs-and-two-way-binding.mdx + │ └── reusable-components.mdx + ├── 05-templates-and-data-binding/ + │ ├── template-syntax.mdx + │ ├── interpolation.mdx + │ ├── property-binding.mdx + │ ├── event-binding.mdx + │ ├── two-way-data-binding.mdx + │ ├── template-reference-variables.mdx + │ ├── attribute-and-class-binding.mdx + │ └── template-expression-best-practices.mdx + ├── 06-control-flow-and-directives/ + │ ├── built-in-control-flow.mdx + │ ├── conditional-rendering.mdx + │ ├── loops-and-track.mdx + │ ├── switch-control-flow.mdx + │ ├── built-in-directives.mdx + │ ├── custom-attribute-directives.mdx + │ ├── structural-directives-and-legacy-syntax.mdx + │ └── custom-structural-directives.mdx + ├── 07-signals-and-reactivity/ + │ ├── signals-fundamentals.mdx + │ ├── signal-and-value-updates.mdx + │ ├── computed-signals.mdx + │ ├── effects-and-side-effects.mdx + │ ├── linked-signals.mdx + │ ├── signal-inputs.mdx + │ ├── signals-and-change-detection.mdx + │ └── signals-vs-rxjs.mdx + ├── 08-typescript-for-angular/ + │ ├── typescript-fundamentals.mdx + │ ├── interfaces-and-type-aliases.mdx + │ ├── generics-and-utility-types.mdx + │ ├── strict-type-checking.mdx + │ ├── typed-components.mdx + │ └── typing-events-and-forms.mdx + ├── 09-services-and-dependency-injection/ + │ ├── service-fundamentals.mdx + │ ├── create-angular-services.mdx + │ ├── dependency-injection-overview.mdx + │ ├── inject-function.mdx + │ ├── injection-tokens.mdx + │ ├── provider-scopes.mdx + │ ├── hierarchical-injectors.mdx + │ └── service-design-patterns.mdx + ├── 10-routing-and-navigation/ + │ ├── router-setup.mdx + │ ├── route-configuration.mdx + │ ├── router-outlet-and-links.mdx + │ ├── route-parameters.mdx + │ ├── query-parameters.mdx + │ ├── child-and-nested-routes.mdx + │ ├── route-guards.mdx + │ ├── resolvers-and-data-loading.mdx + │ ├── lazy-loading.mdx + │ ├── route-level-providers.mdx + │ └── navigation-and-error-routes.mdx + ├── 11-forms-and-validation/ + │ ├── forms-overview.mdx + │ ├── template-driven-forms.mdx + │ ├── reactive-forms.mdx + │ ├── typed-reactive-forms.mdx + │ ├── form-controls-and-groups.mdx + │ ├── form-arrays.mdx + │ ├── built-in-validators.mdx + │ ├── custom-validators.mdx + │ ├── async-validators.mdx + │ ├── cross-field-validation.mdx + │ └── dynamic-forms.mdx + ├── 12-http-and-api-integration/ + │ ├── httpclient-setup.mdx + │ ├── get-post-put-and-delete.mdx + │ ├── typed-api-responses.mdx + │ ├── http-error-handling.mdx + │ ├── interceptors.mdx + │ ├── authentication-headers.mdx + │ ├── request-cancellation.mdx + │ ├── retry-and-timeout-strategies.mdx + │ └── api-service-architecture.mdx + ├── 13-rxjs-and-observables/ + │ ├── observables-fundamentals.mdx + │ ├── observers-and-subscriptions.mdx + │ ├── operators-and-pipelines.mdx + │ ├── map-filter-and-tap.mdx + │ ├── switchmap-mergemap-and-concatmap.mdx + │ ├── subjects-and-behavior-subjects.mdx + │ ├── error-handling-and-retry.mdx + │ ├── async-pipe.mdx + │ ├── signals-and-observables-interop.mdx + │ └── subscription-cleanup.mdx + ├── 14-state-management/ + │ ├── local-component-state.mdx + │ ├── shared-state-with-services.mdx + │ ├── signal-based-state.mdx + │ ├── rxjs-based-state.mdx + │ ├── ngrx-overview.mdx + │ ├── ngrx-store-actions-and-reducers.mdx + │ ├── ngrx-effects-and-selectors.mdx + │ ├── state-management-patterns.mdx + │ └── choosing-a-state-management-approach.mdx + ├── 15-styling-and-ui-development/ + │ ├── component-styles.mdx + │ ├── global-styles-and-themes.mdx + │ ├── css-encapsulation.mdx + │ ├── responsive-angular-layouts.mdx + │ ├── tailwind-css-with-angular.mdx + │ ├── angular-material-setup.mdx + │ ├── reusable-ui-components.mdx + │ └── design-systems.mdx + ├── 16-accessibility-and-internationalization/ + │ ├── accessible-angular-components.mdx + │ ├── semantic-html-and-keyboard-navigation.mdx + │ ├── aria-and-accessibility.mdx + │ ├── angular-aria-and-cdk.mdx + │ ├── localization-overview.mdx + │ ├── translation-and-formatting.mdx + │ └── accessibility-testing.mdx + ├── 17-testing-and-quality/ + │ ├── angular-testing-overview.mdx + │ ├── component-unit-tests.mdx + │ ├── service-tests.mdx + │ ├── dependency-injection-in-tests.mdx + │ ├── http-testing.mdx + │ ├── routing-tests.mdx + │ ├── forms-and-validation-tests.mdx + │ ├── component-harnesses.mdx + │ ├── end-to-end-testing.mdx + │ └── linting-and-formatting.mdx + ├── 18-performance-optimization/ + │ ├── change-detection.mdx + │ ├── zoneless-angular.mdx + │ ├── onpush-and-component-performance.mdx + │ ├── lazy-loading-and-code-splitting.mdx + │ ├── defer-and-deferrable-views.mdx + │ ├── track-and-list-performance.mdx + │ ├── bundle-analysis.mdx + │ ├── profiling-and-performance-tools.mdx + │ └── performance-best-practices.mdx + ├── 19-server-rendering-and-seo/ + │ ├── server-side-rendering.mdx + │ ├── static-site-generation.mdx + │ ├── hydration-and-incremental-hydration.mdx + │ ├── prerendering-and-route-configuration.mdx + │ ├── metadata-and-seo.mdx + │ ├── browser-only-apis-and-platform-checks.mdx + │ ├── server-rendering-data-loading.mdx + │ └── deployment-for-rendered-applications.mdx + ├── 20-security-and-best-practices/ + │ ├── angular-security-model.mdx + │ ├── cross-site-scripting-prevention.mdx + │ ├── safe-template-binding.mdx + │ ├── authentication-and-authorization.mdx + │ ├── route-guards-and-server-security.mdx + │ ├── dependency-security.mdx + │ ├── environment-configuration.mdx + │ └── production-readiness-checklist.mdx + ├── 21-advanced-angular/ + │ ├── custom-pipes.mdx + │ ├── content-projection.mdx + │ ├── view-queries-and-content-queries.mdx + │ ├── dynamic-component-creation.mdx + │ ├── custom-form-controls.mdx + │ ├── control-value-accessor.mdx + │ ├── library-development.mdx + │ ├── angular-elements.mdx + │ └── migration-and-upgrades.mdx + ├── 22-deployment-and-devops/ + │ ├── production-builds.mdx + │ ├── environment-and-build-configuration.mdx + │ ├── deploy-to-static-hosting.mdx + │ ├── deploy-to-cloud-platforms.mdx + │ ├── dockerize-angular.mdx + │ ├── nginx-and-web-server-configuration.mdx + │ ├── continuous-integration.mdx + │ └── release-monitoring-and-error-tracking.mdx + ├── 23-projects/ + │ ├── personal-portfolio.mdx + │ ├── task-management-app.mdx + │ ├── weather-dashboard.mdx + │ ├── ecommerce-storefront.mdx + │ ├── admin-dashboard.mdx + │ ├── authentication-portal.mdx + │ ├── full-stack-angular-app.mdx + │ └── production-capstone.mdx + ├── reference/ + │ ├── angular-cli-cheatsheet.mdx + │ ├── template-syntax-reference.mdx + │ ├── signals-reference.mdx + │ ├── dependency-injection-reference.mdx + │ ├── router-reference.mdx + │ ├── forms-reference.mdx + │ ├── common-errors-and-solutions.mdx + │ ├── glossary.mdx + │ └── official-resources.mdx + └── assets/ + ├── images/ + ├── diagrams/ + └── examples/ +``` \ No newline at end of file diff --git a/tutorials/aspnet-core/index.mdx b/tutorials/aspnet-core/index.mdx new file mode 100644 index 000000000..227acab14 --- /dev/null +++ b/tutorials/aspnet-core/index.mdx @@ -0,0 +1,246 @@ +```txt +docs/ +└── tutorials/ + └── aspnet-core/ + ├── index.mdx + ├── 01-introduction/ + │ ├── what-is-aspnet-core.mdx + │ ├── dotnet-vs-aspnet-core.mdx + │ ├── aspnet-core-features.mdx + │ ├── aspnet-core-architecture.mdx + │ ├── aspnet-core-use-cases.mdx + │ └── dotnet-versions-and-support.mdx + ├── 02-csharp-prerequisites/ + │ ├── csharp-fundamentals.mdx + │ ├── variables-and-data-types.mdx + │ ├── classes-and-objects.mdx + │ ├── interfaces-and-inheritance.mdx + │ ├── generics-and-collections.mdx + │ ├── delegates-and-events.mdx + │ ├── linq-fundamentals.mdx + │ ├── async-and-await.mdx + │ ├── nullable-reference-types.mdx + │ └── exception-handling.mdx + ├── 03-environment-setup/ + │ ├── install-dotnet-sdk.mdx + │ ├── verify-dotnet-installation.mdx + │ ├── setup-visual-studio.mdx + │ ├── setup-vscode.mdx + │ ├── setup-rider.mdx + │ ├── dotnet-cli-fundamentals.mdx + │ ├── create-first-web-api.mdx + │ └── run-and-debug-project.mdx + ├── 04-project-structure/ + │ ├── project-directory-layout.mdx + │ ├── csproj-explained.mdx + │ ├── program-cs-explained.mdx + │ ├── launch-settings-json.mdx + │ ├── appsettings-json.mdx + │ ├── environment-specific-settings.mdx + │ ├── dependency-injection-container.mdx + │ └── build-run-and-publish.mdx + ├── 05-aspnet-core-fundamentals/ + │ ├── request-response-lifecycle.mdx + │ ├── kestrel-web-server.mdx + │ ├── middleware-fundamentals.mdx + │ ├── middleware-pipeline.mdx + │ ├── routing-fundamentals.mdx + │ ├── endpoint-routing.mdx + │ ├── configuration-and-options.mdx + │ ├── dependency-injection-lifetimes.mdx + │ ├── logging-fundamentals.mdx + │ └── hosting-and-environments.mdx + ├── 06-minimal-apis/ + │ ├── minimal-api-fundamentals.mdx + │ ├── mapget-and-mappost.mdx + │ ├── route-groups.mdx + │ ├── route-parameters-and-query-strings.mdx + │ ├── request-and-response-types.mdx + │ ├── endpoint-filters.mdx + │ ├── validation-in-minimal-apis.mdx + │ ├── typed-results.mdx + │ └── minimal-api-best-practices.mdx + ├── 07-controller-based-web-apis/ + │ ├── controllers-and-actions.mdx + │ ├── api-controller-attribute.mdx + │ ├── http-methods-and-routing.mdx + │ ├── model-binding.mdx + │ ├── request-and-response-dtos.mdx + │ ├── action-results-and-status-codes.mdx + │ ├── content-negotiation.mdx + │ ├── api-versioning.mdx + │ ├── pagination-sorting-and-filtering.mdx + │ └── minimal-apis-vs-controllers.mdx + ├── 08-validation-and-error-handling/ + │ ├── model-validation.mdx + │ ├── data-annotations.mdx + │ ├── custom-validation.mdx + │ ├── fluentvalidation-integration.mdx + │ ├── global-exception-handling.mdx + │ ├── problem-details.mdx + │ ├── exception-handler-middleware.mdx + │ ├── validation-error-responses.mdx + │ └── error-handling-best-practices.mdx + ├── 09-entity-framework-core/ + │ ├── orm-fundamentals.mdx + │ ├── install-entity-framework-core.mdx + │ ├── database-provider-selection.mdx + │ ├── dbcontext-and-dbset.mdx + │ ├── entity-modeling.mdx + │ ├── code-first-migrations.mdx + │ ├── relationships-and-navigation-properties.mdx + │ ├── crud-operations.mdx + │ ├── linq-to-entities.mdx + │ ├── tracking-vs-no-tracking.mdx + │ ├── eager-explicit-and-lazy-loading.mdx + │ ├── transactions-and-concurrency.mdx + │ ├── query-performance-and-n-plus-one.mdx + │ └── repository-pattern-considerations.mdx + ├── 10-database-integration/ + │ ├── sql-server-setup.mdx + │ ├── postgresql-setup.mdx + │ ├── sqlite-for-development.mdx + │ ├── connection-strings.mdx + │ ├── database-seeding.mdx + │ ├── migration-workflows.mdx + │ ├── stored-procedures-and-raw-sql.mdx + │ ├── database-testing.mdx + │ └── production-database-security.mdx + ├── 11-application-architecture/ + │ ├── controllers-services-and-data-access.mdx + │ ├── clean-architecture.mdx + │ ├── modular-monoliths.mdx + │ ├── domain-driven-design-fundamentals.mdx + │ ├── domain-and-application-services.mdx + │ ├── cqrs-fundamentals.mdx + │ ├── mediatr-and-request-handling.mdx + │ ├── mapping-and-object-transformation.mdx + │ └── architecture-testing.mdx + ├── 12-authentication-and-authorization/ + │ ├── authentication-fundamentals.mdx + │ ├── authorization-policies.mdx + │ ├── aspnet-core-identity.mdx + │ ├── registration-and-login.mdx + │ ├── password-hashing.mdx + │ ├── cookie-authentication.mdx + │ ├── jwt-bearer-authentication.mdx + │ ├── roles-and-claims.mdx + │ ├── oauth2-and-openid-connect.mdx + │ ├── resource-based-authorization.mdx + │ ├── cors-and-csrf.mdx + │ └── authentication-testing.mdx + ├── 13-security/ + │ ├── web-security-fundamentals.mdx + │ ├── secrets-and-user-secrets.mdx + │ ├── environment-variables.mdx + │ ├── https-and-tls.mdx + │ ├── input-validation-and-output-encoding.mdx + │ ├── sql-injection-prevention.mdx + │ ├── rate-limiting.mdx + │ ├── antiforgery-protection.mdx + │ ├── secure-file-uploads.mdx + │ ├── security-headers.mdx + │ └── production-security-checklist.mdx + ├── 14-testing-and-quality/ + │ ├── testing-strategy.mdx + │ ├── xunit-fundamentals.mdx + │ ├── nunit-and-mstest-overview.mdx + │ ├── unit-testing-services.mdx + │ ├── mocking-with-moq.mdx + │ ├── integration-testing-webapplicationfactory.mdx + │ ├── api-integration-tests.mdx + │ ├── database-tests-with-testcontainers.mdx + │ ├── code-coverage.mdx + │ └── ci-testing-workflow.mdx + ├── 15-caching-and-performance/ + │ ├── caching-fundamentals.mdx + │ ├── in-memory-caching.mdx + │ ├── distributed-caching.mdx + │ ├── redis-integration.mdx + │ ├── output-caching.mdx + │ ├── response-compression.mdx + │ ├── asynchronous-io.mdx + │ ├── http-client-factory.mdx + │ ├── database-query-optimization.mdx + │ └── performance-profiling.mdx + ├── 16-background-jobs-and-messaging/ + │ ├── hosted-services.mdx + │ ├── backgroundservice-and-ihostedservice.mdx + │ ├── scheduled-jobs.mdx + │ ├── background-job-queues.mdx + │ ├── rabbitmq-integration.mdx + │ ├── kafka-integration.mdx + │ ├── message-retries-and-dead-letter-queues.mdx + │ ├── idempotent-message-processing.mdx + │ └── outbox-pattern.mdx + ├── 17-real-time-and-networking/ + │ ├── signalr-fundamentals.mdx + │ ├── real-time-chat-application.mdx + │ ├── hub-authorization.mdx + │ ├── websocket-fundamentals.mdx + │ ├── grpc-with-aspnet-core.mdx + │ ├── server-sent-events.mdx + │ └── real-time-testing.mdx + ├── 18-mvc-razor-pages-and-blazor/ + │ ├── mvc-pattern-and-controllers.mdx + │ ├── razor-views-and-layouts.mdx + │ ├── razor-pages-fundamentals.mdx + │ ├── model-binding-in-mvc.mdx + │ ├── forms-and-tag-helpers.mdx + │ ├── blazor-components-overview.mdx + │ ├── blazor-server-and-webassembly.mdx + │ └── choosing-the-right-web-model.mdx + ├── 19-observability-and-resilience/ + │ ├── structured-logging.mdx + │ ├── health-checks.mdx + │ ├── metrics-and-tracing.mdx + │ ├── opentelemetry-integration.mdx + │ ├── correlation-ids.mdx + │ ├── retries-and-timeouts.mdx + │ ├── circuit-breakers.mdx + │ └── production-monitoring.mdx + ├── 20-microservices-and-distributed-systems/ + │ ├── microservices-fundamentals.mdx + │ ├── service-boundaries.mdx + │ ├── inter-service-http-communication.mdx + │ ├── api-gateway-pattern.mdx + │ ├── service-discovery-and-configuration.mdx + │ ├── distributed-transactions-and-saga.mdx + │ ├── event-driven-architecture.mdx + │ └── distributed-system-resilience.mdx + ├── 21-deployment-and-devops/ + │ ├── build-and-publish.mdx + │ ├── framework-dependent-vs-self-contained.mdx + │ ├── dockerize-aspnet-core.mdx + │ ├── docker-compose-and-databases.mdx + │ ├── github-actions-ci-cd.mdx + │ ├── deploy-to-azure.mdx + │ ├── deploy-to-linux.mdx + │ ├── reverse-proxy-and-https.mdx + │ ├── configuration-and-secrets-in-production.mdx + │ └── production-deployment-checklist.mdx + ├── 22-projects/ + │ ├── hello-world-web-api.mdx + │ ├── task-management-api.mdx + │ ├── library-management-system.mdx + │ ├── employee-management-api.mdx + │ ├── identity-and-authentication-service.mdx + │ ├── ecommerce-backend.mdx + │ ├── real-time-notification-service.mdx + │ ├── microservices-order-platform.mdx + │ └── production-capstone.mdx + ├── reference/ + │ ├── dotnet-cli-commands.mdx + │ ├── aspnet-core-middleware-reference.mdx + │ ├── dependency-injection-reference.mdx + │ ├── http-status-codes.mdx + │ ├── ef-core-commands.mdx + │ ├── common-errors-and-solutions.mdx + │ ├── dotnet-version-compatibility.mdx + │ ├── glossary.mdx + │ └── official-resources.mdx + └── assets/ + ├── images/ + ├── diagrams/ + └── examples/ +``` \ No newline at end of file diff --git a/tutorials/blockchain/index.mdx b/tutorials/blockchain/index.mdx new file mode 100644 index 000000000..5d9b8b777 --- /dev/null +++ b/tutorials/blockchain/index.mdx @@ -0,0 +1,183 @@ +```txt +docs/ +└── tutorials/ + └── blockchain/ + ├── index.mdx + ├── introduction/ + │ ├── what-is-blockchain.mdx + │ ├── how-blockchain-works.mdx + │ ├── blockchain-characteristics.mdx + │ ├── blockchain-vs-databases.mdx + │ ├── public-private-consortium.mdx + │ └── real-world-use-cases.mdx + ├── fundamentals/ + │ ├── blocks-and-transactions.mdx + │ ├── distributed-ledgers.mdx + │ ├── nodes-and-peers.mdx + │ ├── blocks-and-hashing.mdx + │ ├── merkle-trees.mdx + │ ├── forks-and-chain-reorganization.mdx + │ └── blockchain-limitations.mdx + ├── cryptography/ + │ ├── cryptographic-hashing.mdx + │ ├── public-private-keys.mdx + │ ├── digital-signatures.mdx + │ ├── wallet-addresses.mdx + │ ├── elliptic-curve-cryptography.mdx + │ ├── randomness-and-entropy.mdx + │ └── cryptography-best-practices.mdx + ├── consensus/ + │ ├── consensus-overview.mdx + │ ├── proof-of-work.mdx + │ ├── proof-of-stake.mdx + │ ├── byzantine-fault-tolerance.mdx + │ ├── validators-and-miners.mdx + │ ├── finality-and-confirmations.mdx + │ └── consensus-tradeoffs.mdx + ├── development-setup/ + │ ├── prerequisites.mdx + │ ├── nodejs-and-npm.mdx + │ ├── typescript-setup.mdx + │ ├── local-blockchain.mdx + │ ├── hardhat-setup.mdx + │ └── foundry-setup.mdx + ├── ethereum/ + │ ├── ethereum-overview.mdx + │ ├── accounts-and-addresses.mdx + │ ├── transactions-and-gas.mdx + │ ├── ethereum-virtual-machine.mdx + │ ├── execution-and-consensus.mdx + │ ├── rpc-providers.mdx + │ ├── testnets.mdx + │ └── layer-two-networks.mdx + ├── solidity/ + │ ├── introduction.mdx + │ ├── contract-structure.mdx + │ ├── data-types.mdx + │ ├── variables-and-constants.mdx + │ ├── functions-and-modifiers.mdx + │ ├── visibility-and-mutability.mdx + │ ├── mappings-and-arrays.mdx + │ ├── structs-and-enums.mdx + │ ├── events-and-errors.mdx + │ ├── inheritance.mdx + │ ├── interfaces-and-libraries.mdx + │ ├── receive-and-fallback.mdx + │ └── gas-optimization.mdx + ├── smart-contracts/ + │ ├── what-are-smart-contracts.mdx + │ ├── deployment-lifecycle.mdx + │ ├── storage-memory-calldata.mdx + │ ├── access-control.mdx + │ ├── contract-interactions.mdx + │ ├── upgradeability.mdx + │ └── contract-verification.mdx + ├── development-tools/ + │ ├── hardhat.mdx + │ ├── foundry.mdx + │ ├── remix-ide.mdx + │ ├── ethers-js.mdx + │ ├── viem.mdx + │ ├── wallet-integration.mdx + │ └── block-explorers.mdx + ├── testing/ + │ ├── unit-testing.mdx + │ ├── integration-testing.mdx + │ ├── fuzz-testing.mdx + │ ├── invariant-testing.mdx + │ ├── fork-testing.mdx + │ ├── gas-testing.mdx + │ └── test-coverage.mdx + ├── security/ + │ ├── reentrancy.mdx + │ ├── access-control-vulnerabilities.mdx + │ ├── integer-arithmetic.mdx + │ ├── oracle-manipulation.mdx + │ ├── front-running-and-mev.mdx + │ ├── denial-of-service.mdx + │ ├── signature-replay.mdx + │ ├── secure-randomness.mdx + │ ├── audit-workflow.mdx + │ └── security-checklist.mdx + ├── decentralized-applications/ + │ ├── dapp-architecture.mdx + │ ├── frontend-wallet-connection.mdx + │ ├── reading-contract-data.mdx + │ ├── writing-contract-data.mdx + │ ├── transaction-status.mdx + │ ├── network-switching.mdx + │ ├── events-and-indexing.mdx + │ └── user-experience.mdx + ├── tokens-and-standards/ + │ ├── fungible-tokens.mdx + │ ├── erc-20.mdx + │ ├── non-fungible-tokens.mdx + │ ├── erc-721.mdx + │ ├── erc-1155.mdx + │ ├── token-approvals.mdx + │ └── token-security.mdx + ├── defi/ + │ ├── decentralized-finance.mdx + │ ├── decentralized-exchanges.mdx + │ ├── liquidity-pools.mdx + │ ├── lending-and-borrowing.mdx + │ ├── stablecoins.mdx + │ ├── price-oracles.mdx + │ └── defi-risks.mdx + ├── scaling-and-interoperability/ + │ ├── scalability-challenges.mdx + │ ├── layer-two-rollups.mdx + │ ├── optimistic-vs-zk-rollups.mdx + │ ├── bridges-and-cross-chain.mdx + │ ├── interoperability-risks.mdx + │ └── data-availability.mdx + ├── infrastructure/ + │ ├── blockchain-nodes.mdx + │ ├── rpc-services.mdx + │ ├── event-indexing.mdx + │ ├── decentralized-storage.mdx + │ ├── ipfs-fundamentals.mdx + │ ├── oracles-and-external-data.mdx + │ └── monitoring-and-logging.mdx + ├── privacy-and-governance/ + │ ├── onchain-vs-offchain-data.mdx + │ ├── privacy-limitations.mdx + │ ├── decentralized-governance.mdx + │ ├── dao-fundamentals.mdx + │ └── governance-security.mdx + ├── projects/ + │ ├── toy-blockchain.mdx + │ ├── digital-certificate.mdx + │ ├── voting-contract.mdx + │ ├── crowdfunding-dapp.mdx + │ ├── erc20-token.mdx + │ ├── nft-collection.mdx + │ ├── onchain-credential-system.mdx + │ └── production-dapp.mdx + ├── troubleshooting/ + │ ├── deployment-errors.mdx + │ ├── transaction-reverts.mdx + │ ├── gas-estimation-errors.mdx + │ ├── wallet-connection-errors.mdx + │ ├── rpc-errors.mdx + │ └── contract-verification-errors.mdx + ├── interview-questions/ + │ ├── beginner.mdx + │ ├── intermediate.mdx + │ ├── advanced.mdx + │ └── scenario-based.mdx + ├── exercises/ + │ ├── beginner-labs.mdx + │ ├── intermediate-labs.mdx + │ ├── advanced-labs.mdx + │ └── solutions.mdx + ├── reference/ + │ ├── solidity-cheatsheet.mdx + │ ├── ethereum-glossary.mdx + │ ├── evm-and-gas-reference.mdx + │ ├── security-checklist.mdx + │ └── official-resources.mdx + └── assets/ + ├── images/ + └── diagrams/ +``` \ No newline at end of file diff --git a/tutorials/c/index.mdx b/tutorials/c/index.mdx new file mode 100644 index 000000000..da0a65fba --- /dev/null +++ b/tutorials/c/index.mdx @@ -0,0 +1,225 @@ +```mdx +docs/ +└── tutorials/ + └── c/ + ├── index.mdx + │ + ├── 01-getting-started/ + │ ├── what-is-c.mdx + │ ├── history-and-features.mdx + │ ├── install-c-compiler.mdx + │ ├── setup-vscode.mdx + │ ├── gcc-and-clang.mdx + │ ├── compile-and-run-c.mdx + │ └── first-c-program.mdx + │ + ├── 02-c-fundamentals/ + │ ├── program-structure.mdx + │ ├── tokens-and-keywords.mdx + │ ├── variables-and-constants.mdx + │ ├── data-types.mdx + │ ├── format-specifiers.mdx + │ ├── type-conversion.mdx + │ ├── operators.mdx + │ ├── comments-and-documentation.mdx + │ └── naming-conventions.mdx + │ + ├── 03-input-output-and-control-flow/ + │ ├── printf-and-scanf.mdx + │ ├── character-input-output.mdx + │ ├── if-else-statements.mdx + │ ├── switch-statements.mdx + │ ├── for-loops.mdx + │ ├── while-loops.mdx + │ ├── do-while-loops.mdx + │ ├── break-and-continue.mdx + │ └── nested-control-flow.mdx + │ + ├── 04-functions-and-scope/ + │ ├── function-fundamentals.mdx + │ ├── function-declarations.mdx + │ ├── parameters-and-return-values.mdx + │ ├── call-by-value.mdx + │ ├── recursion.mdx + │ ├── variable-scope.mdx + │ ├── storage-classes.mdx + │ ├── static-and-extern.mdx + │ └── header-files.mdx + │ + ├── 05-arrays-and-strings/ + │ ├── array-fundamentals.mdx + │ ├── multidimensional-arrays.mdx + │ ├── array-traversal.mdx + │ ├── character-arrays.mdx + │ ├── c-strings.mdx + │ ├── string-library-functions.mdx + │ ├── string-comparison.mdx + │ ├── string-tokenization.mdx + │ └── safe-string-handling.mdx + │ + ├── 06-pointers/ + │ ├── pointer-fundamentals.mdx + │ ├── addresses-and-dereferencing.mdx + │ ├── pointers-and-arrays.mdx + │ ├── pointer-arithmetic.mdx + │ ├── pointers-and-functions.mdx + │ ├── pointer-to-pointer.mdx + │ ├── null-pointers.mdx + │ ├── void-pointers.mdx + │ ├── function-pointers.mdx + │ └── common-pointer-mistakes.mdx + │ + ├── 07-structures-unions-and-enums/ + │ ├── structures.mdx + │ ├── structure-members.mdx + │ ├── arrays-of-structures.mdx + │ ├── pointers-to-structures.mdx + │ ├── nested-structures.mdx + │ ├── unions.mdx + │ ├── enumerations.mdx + │ ├── typedef.mdx + │ └── bit-fields.mdx + │ + ├── 08-dynamic-memory-management/ + │ ├── stack-and-heap.mdx + │ ├── malloc.mdx + │ ├── calloc.mdx + │ ├── realloc.mdx + │ ├── free.mdx + │ ├── memory-ownership.mdx + │ ├── memory-leaks.mdx + │ ├── dangling-pointers.mdx + │ └── buffer-overflows.mdx + │ + ├── 09-preprocessor-and-build-process/ + │ ├── preprocessing-overview.mdx + │ ├── include-directives.mdx + │ ├── define-and-undef.mdx + │ ├── macros.mdx + │ ├── conditional-compilation.mdx + │ ├── header-guards.mdx + │ ├── compilation-stages.mdx + │ ├── linking-and-libraries.mdx + │ └── makefiles-basics.mdx + │ + ├── 10-file-handling/ + │ ├── file-pointers.mdx + │ ├── fopen-and-fclose.mdx + │ ├── reading-text-files.mdx + │ ├── writing-text-files.mdx + │ ├── formatted-file-io.mdx + │ ├── binary-file-io.mdx + │ ├── file-positioning.mdx + │ ├── error-handling-for-files.mdx + │ └── csv-file-processing.mdx + │ + ├── 11-standard-library/ + │ ├── stdio.h.mdx + │ ├── stdlib.h.mdx + │ ├── string.h.mdx + │ ├── math.h.mdx + │ ├── ctype.h.mdx + │ ├── time.h.mdx + │ ├── assert.h.mdx + │ ├── stdint.h-and-size-t.mdx + │ └── errno-and-error-reporting.mdx + │ + ├── 12-data-structures/ + │ ├── data-structures-overview.mdx + │ ├── linked-lists.mdx + │ ├── doubly-linked-lists.mdx + │ ├── stacks.mdx + │ ├── queues.mdx + │ ├── circular-queues.mdx + │ ├── hash-tables.mdx + │ ├── binary-trees.mdx + │ ├── binary-search-trees.mdx + │ └── heaps-and-priority-queues.mdx + │ + ├── 13-algorithms-and-complexity/ + │ ├── algorithm-fundamentals.mdx + │ ├── time-and-space-complexity.mdx + │ ├── linear-and-binary-search.mdx + │ ├── bubble-and-selection-sort.mdx + │ ├── insertion-sort.mdx + │ ├── merge-sort.mdx + │ ├── quicksort.mdx + │ ├── recursion-and-backtracking.mdx + │ ├── graph-traversal.mdx + │ └── algorithm-practice.mdx + │ + ├── 14-advanced-c/ + │ ├── pointer-qualifiers.mdx + │ ├── const-volatile-and-restrict.mdx + │ ├── alignment-and-padding.mdx + │ ├── endianness.mdx + │ ├── undefined-behavior.mdx + │ ├── implementation-defined-behavior.mdx + │ ├── variadic-functions.mdx + │ ├── flexible-array-members.mdx + │ ├── atomics-and-stdatomic.mdx + │ └── c-language-standards.mdx + │ + ├── 15-debugging-and-testing/ + │ ├── compiler-warnings.mdx + │ ├── debugging-with-gdb.mdx + │ ├── debugging-with-lldb.mdx + │ ├── assertions.mdx + │ ├── unit-testing.mdx + │ ├── addresssanitizer.mdx + │ ├── undefinedbehaviorsanitizer.mdx + │ ├── valgrind-memory-checking.mdx + │ └── static-analysis.mdx + │ + ├── 16-systems-programming/ + │ ├── processes-and-memory.mdx + │ ├── command-line-arguments.mdx + │ ├── environment-variables.mdx + │ ├── signals-and-handlers.mdx + │ ├── sockets-introduction.mdx + │ ├── tcp-client-server.mdx + │ ├── threads-with-pthreads.mdx + │ └── platform-specific-apis.mdx + │ + ├── 17-secure-c-programming/ + │ ├── secure-c-fundamentals.mdx + │ ├── bounds-checking.mdx + │ ├── integer-overflow.mdx + │ ├── format-string-vulnerabilities.mdx + │ ├── safe-memory-management.mdx + │ ├── input-validation.mdx + │ ├── secure-file-handling.mdx + │ └── secure-c-checklist.mdx + │ + ├── 18-projects/ + │ ├── console-calculator.mdx + │ ├── number-guessing-game.mdx + │ ├── student-record-manager.mdx + │ ├── contact-management-system.mdx + │ ├── file-compression-tool.mdx + │ ├── custom-data-structures-library.mdx + │ ├── command-line-task-manager.mdx + │ └── tcp-chat-application.mdx + │ + ├── 19-practice/ + │ ├── beginner-exercises.mdx + │ ├── intermediate-exercises.mdx + │ ├── pointer-challenges.mdx + │ ├── memory-management-challenges.mdx + │ ├── data-structure-exercises.mdx + │ ├── quizzes.mdx + │ └── interview-questions.mdx + │ + ├── reference/ + │ ├── c-syntax-cheatsheet.mdx + │ ├── operators-reference.mdx + │ ├── standard-library-reference.mdx + │ ├── format-specifiers-reference.mdx + │ ├── compiler-commands.mdx + │ ├── common-errors.mdx + │ └── glossary.mdx + │ + └── assets/ + ├── images/ + └── diagrams/ +``` \ No newline at end of file diff --git a/tutorials/cloudflare/index.mdx b/tutorials/cloudflare/index.mdx new file mode 100644 index 000000000..8a3331e74 --- /dev/null +++ b/tutorials/cloudflare/index.mdx @@ -0,0 +1,151 @@ +```txt +docs/ +└── tutorials/ + └── cloudflare/ + ├── index.mdx + ├── introduction/ + │ ├── what-is-cloudflare.mdx + │ ├── how-cloudflare-works.mdx + │ ├── global-network.mdx + │ ├── cloudflare-vs-traditional-hosting.mdx + │ └── account-and-dashboard.mdx + ├── getting-started/ + │ ├── create-account.mdx + │ ├── add-a-domain.mdx + │ ├── nameservers.mdx + │ ├── dashboard-tour.mdx + │ └── development-setup.mdx + ├── dns/ + │ ├── dns-fundamentals.mdx + │ ├── dns-records.mdx + │ ├── aaaa-cname-mx-txt.mdx + │ ├── proxied-vs-dns-only.mdx + │ ├── dns-propagation.mdx + │ ├── dnssec.mdx + │ └── troubleshooting.mdx + ├── cdn-and-performance/ + │ ├── cdn-fundamentals.mdx + │ ├── caching-basics.mdx + │ ├── cache-rules.mdx + │ ├── cache-control.mdx + │ ├── purge-cache.mdx + │ ├── image-optimization.mdx + │ ├── compression-and-protocols.mdx + │ └── performance-monitoring.mdx + ├── ssl-and-tls/ + │ ├── ssl-tls-fundamentals.mdx + │ ├── encryption-modes.mdx + │ ├── origin-certificates.mdx + │ ├── https-redirects.mdx + │ ├── hsts.mdx + │ └── ssl-troubleshooting.mdx + ├── security/ + │ ├── security-overview.mdx + │ ├── waf-fundamentals.mdx + │ ├── managed-rules.mdx + │ ├── custom-rules.mdx + │ ├── rate-limiting.mdx + │ ├── ddos-protection.mdx + │ ├── bot-protection.mdx + │ ├── security-headers.mdx + │ └── security-best-practices.mdx + ├── zero-trust/ + │ ├── zero-trust-overview.mdx + │ ├── identity-providers.mdx + │ ├── access-applications.mdx + │ ├── access-policies.mdx + │ ├── cloudflare-tunnel.mdx + │ ├── warp-client.mdx + │ ├── private-networking.mdx + │ └── troubleshooting.mdx + ├── developers/ + │ ├── workers/ + │ │ ├── introduction.mdx + │ │ ├── first-worker.mdx + │ │ ├── request-response.mdx + │ │ ├── routing-and-custom-domains.mdx + │ │ ├── environment-bindings.mdx + │ │ ├── secrets.mdx + │ │ ├── scheduled-jobs.mdx + │ │ ├── service-bindings.mdx + │ │ └── testing-and-deployment.mdx + │ ├── pages/ + │ │ ├── pages-introduction.mdx + │ │ ├── github-deployment.mdx + │ │ ├── build-configuration.mdx + │ │ ├── custom-domains.mdx + │ │ └── preview-deployments.mdx + │ ├── d1/ + │ │ ├── database-basics.mdx + │ │ ├── schema-and-migrations.mdx + │ │ └── worker-integration.mdx + │ ├── r2/ + │ │ ├── object-storage.mdx + │ │ ├── bucket-management.mdx + │ │ └── worker-integration.mdx + │ ├── kv/ + │ │ ├── key-value-basics.mdx + │ │ └── worker-integration.mdx + │ ├── durable-objects/ + │ │ ├── concepts.mdx + │ │ └── practical-example.mdx + │ └── queues/ + │ ├── queue-fundamentals.mdx + │ └── worker-consumers.mdx + ├── networking/ + │ ├── cloudflare-tunnel.mdx + │ ├── load-balancing.mdx + │ ├── origin-connectivity.mdx + │ ├── ipv6.mdx + │ └── troubleshooting.mdx + ├── email-and-domains/ + │ ├── email-routing.mdx + │ ├── mx-records.mdx + │ ├── spf-dkim-dmarc.mdx + │ └── domain-troubleshooting.mdx + ├── analytics-and-observability/ + │ ├── web-analytics.mdx + │ ├── traffic-insights.mdx + │ ├── security-events.mdx + │ ├── logs-and-monitoring.mdx + │ └── troubleshooting-workflows.mdx + ├── automation/ + │ ├── api-tokens.mdx + │ ├── cloudflare-api.mdx + │ ├── terraform-provider.mdx + │ ├── github-actions.mdx + │ └── wrangler-cli.mdx + ├── projects/ + │ ├── secure-static-website.mdx + │ ├── github-pages-custom-domain.mdx + │ ├── workers-api.mdx + │ ├── serverless-contact-form.mdx + │ ├── zero-trust-private-app.mdx + │ └── production-web-platform.mdx + ├── troubleshooting/ + │ ├── dns-errors.mdx + │ ├── ssl-errors.mdx + │ ├── cache-errors.mdx + │ ├── http-status-codes.mdx + │ ├── worker-errors.mdx + │ └── common-dashboard-issues.mdx + ├── interview-questions/ + │ ├── beginner.mdx + │ ├── intermediate.mdx + │ ├── advanced.mdx + │ └── scenario-based.mdx + ├── exercises/ + │ ├── beginner-labs.mdx + │ ├── intermediate-labs.mdx + │ ├── advanced-labs.mdx + │ └── solutions.mdx + ├── reference/ + │ ├── dns-records-cheatsheet.mdx + │ ├── http-status-codes.mdx + │ ├── wrangler-commands.mdx + │ ├── glossary.mdx + │ └── official-resources.mdx + └── assets/ + ├── images/ + └── diagrams/ +``` \ No newline at end of file diff --git a/tutorials/cpp/index.mdx b/tutorials/cpp/index.mdx new file mode 100644 index 000000000..f955fa534 --- /dev/null +++ b/tutorials/cpp/index.mdx @@ -0,0 +1,247 @@ +```mdx +docs/ +└── tutorials/ + └── cpp/ + ├── index.mdx + │ + ├── 01-getting-started/ + │ ├── what-is-cpp.mdx + │ ├── history-and-features.mdx + │ ├── cpp-vs-c.mdx + │ ├── install-cpp-compiler.mdx + │ ├── setup-vscode-visual-studio.mdx + │ ├── gcc-clang-and-msvc.mdx + │ ├── compilation-and-linking.mdx + │ └── first-cpp-program.mdx + │ + ├── 02-cpp-fundamentals/ + │ ├── program-structure.mdx + │ ├── variables-and-constants.mdx + │ ├── built-in-data-types.mdx + │ ├── type-inference-with-auto.mdx + │ ├── type-conversions.mdx + │ ├── operators.mdx + │ ├── input-and-output.mdx + │ ├── namespaces.mdx + │ └── naming-conventions.mdx + │ + ├── 03-control-flow/ + │ ├── if-else-statements.mdx + │ ├── switch-statements.mdx + │ ├── for-loops.mdx + │ ├── while-and-do-while.mdx + │ ├── range-based-for-loops.mdx + │ ├── break-and-continue.mdx + │ └── nested-control-flow.mdx + │ + ├── 04-functions/ + │ ├── function-fundamentals.mdx + │ ├── function-declarations.mdx + │ ├── parameters-and-return-values.mdx + │ ├── function-overloading.mdx + │ ├── default-arguments.mdx + │ ├── inline-functions.mdx + │ ├── recursion.mdx + │ ├── lambda-expressions.mdx + │ └── function-templates.mdx + │ + ├── 05-arrays-strings-and-pointers/ + │ ├── arrays.mdx + │ ├── multidimensional-arrays.mdx + │ ├── c-style-strings.mdx + │ ├── std-string.mdx + │ ├── string-operations.mdx + │ ├── pointers.mdx + │ ├── references.mdx + │ ├── pointers-vs-references.mdx + │ ├── pointer-arithmetic.mdx + │ └── smart-pointer-introduction.mdx + │ + ├── 06-object-oriented-programming/ + │ ├── classes-and-objects.mdx + │ ├── access-specifiers.mdx + │ ├── constructors.mdx + │ ├── destructors.mdx + │ ├── this-pointer.mdx + │ ├── encapsulation.mdx + │ ├── inheritance.mdx + │ ├── polymorphism.mdx + │ ├── virtual-functions.mdx + │ ├── abstract-classes.mdx + │ ├── operator-overloading.mdx + │ ├── composition-vs-inheritance.mdx + │ └── rule-of-zero-three-five.mdx + │ + ├── 07-memory-management/ + │ ├── stack-and-heap.mdx + │ ├── dynamic-allocation.mdx + │ ├── new-and-delete.mdx + │ ├── memory-leaks.mdx + │ ├── unique-ptr.mdx + │ ├── shared-ptr.mdx + │ ├── weak-ptr.mdx + │ ├── move-semantics.mdx + │ ├── lvalues-and-rvalues.mdx + │ └── resource-acquisition-is-initialization.mdx + │ + ├── 08-templates-and-generic-programming/ + │ ├── function-templates.mdx + │ ├── class-templates.mdx + │ ├── template-specialization.mdx + │ ├── variadic-templates.mdx + │ ├── type-traits.mdx + │ ├── concepts-and-requires.mdx + │ ├── constexpr-and-consteval.mdx + │ └── generic-programming-patterns.mdx + │ + ├── 09-standard-template-library/ + │ ├── stl-overview.mdx + │ ├── vector.mdx + │ ├── array-and-span.mdx + │ ├── deque-and-list.mdx + │ ├── stack-and-queue.mdx + │ ├── set-and-multiset.mdx + │ ├── map-and-multimap.mdx + │ ├── unordered-containers.mdx + │ ├── iterators.mdx + │ ├── algorithms.mdx + │ ├── ranges-and-views.mdx + │ └── choosing-stl-containers.mdx + │ + ├── 10-modern-cpp/ + │ ├── modern-cpp-overview.mdx + │ ├── uniform-initialization.mdx + │ ├── auto-and-decltype.mdx + │ ├── nullptr.mdx + │ ├── structured-bindings.mdx + │ ├── optional.mdx + │ ├── variant-and-any.mdx + │ ├── filesystem-library.mdx + │ ├── chrono-library.mdx + │ ├── ranges-library.mdx + │ ├── modules-overview.mdx + │ ├── coroutines-introduction.mdx + │ └── cpp-standard-versions.mdx + │ + ├── 11-exception-handling/ + │ ├── exception-fundamentals.mdx + │ ├── try-catch-throw.mdx + │ ├── standard-exceptions.mdx + │ ├── custom-exceptions.mdx + │ ├── noexcept.mdx + │ ├── exception-safety-guarantees.mdx + │ └── error-handling-design.mdx + │ + ├── 12-file-handling-and-serialization/ + │ ├── file-streams.mdx + │ ├── reading-text-files.mdx + │ ├── writing-text-files.mdx + │ ├── binary-file-operations.mdx + │ ├── filesystem-operations.mdx + │ ├── csv-processing.mdx + │ ├── json-with-cpp.mdx + │ └── serialization-best-practices.mdx + │ + ├── 13-data-structures-and-algorithms/ + │ ├── complexity-analysis.mdx + │ ├── searching-algorithms.mdx + │ ├── sorting-algorithms.mdx + │ ├── linked-lists.mdx + │ ├── stacks-and-queues.mdx + │ ├── hash-tables.mdx + │ ├── trees-and-binary-search-trees.mdx + │ ├── heaps-and-priority-queues.mdx + │ ├── graphs.mdx + │ ├── graph-traversal.mdx + │ ├── dynamic-programming.mdx + │ └── competitive-programming-patterns.mdx + │ + ├── 14-concurrency-and-parallelism/ + │ ├── concurrency-fundamentals.mdx + │ ├── threads.mdx + │ ├── mutexes-and-lock-guards.mdx + │ ├── condition-variables.mdx + │ ├── futures-and-promises.mdx + │ ├── async-and-await-concepts.mdx + │ ├── atomics.mdx + │ ├── memory-model.mdx + │ ├── race-conditions.mdx + │ └── parallel-algorithms.mdx + │ + ├── 15-build-tools-and-project-architecture/ + │ ├── project-structure.mdx + │ ├── header-and-source-files.mdx + │ ├── header-guards-and-pragma-once.mdx + │ ├── separate-compilation.mdx + │ ├── cmake-fundamentals.mdx + │ ├── libraries-and-linking.mdx + │ ├── package-management.mdx + │ ├── dependency-management.mdx + │ └── cross-platform-builds.mdx + │ + ├── 16-testing-and-debugging/ + │ ├── compiler-warnings.mdx + │ ├── debugging-with-gdb.mdx + │ ├── debugging-with-lldb.mdx + │ ├── unit-testing.mdx + │ ├── google-test.mdx + │ ├── test-driven-development.mdx + │ ├── addresssanitizer.mdx + │ ├── undefinedbehaviorsanitizer.mdx + │ ├── static-analysis.mdx + │ └── performance-profiling.mdx + │ + ├── 17-networking-and-systems/ + │ ├── operating-system-fundamentals.mdx + │ ├── processes-and-threads.mdx + │ ├── sockets-overview.mdx + │ ├── tcp-client-server.mdx + │ ├── http-client-development.mdx + │ ├── cross-platform-system-apis.mdx + │ ├── memory-layout.mdx + │ └── hardware-interaction-overview.mdx + │ + ├── 18-security-and-performance/ + │ ├── secure-cpp-development.mdx + │ ├── buffer-overflows.mdx + │ ├── integer-overflow.mdx + │ ├── undefined-behavior.mdx + │ ├── input-validation.mdx + │ ├── resource-management.mdx + │ ├── performance-benchmarking.mdx + │ ├── profiling-and-optimization.mdx + │ └── secure-coding-checklist.mdx + │ + ├── 19-projects/ + │ ├── console-calculator.mdx + │ ├── number-guessing-game.mdx + │ ├── student-management-system.mdx + │ ├── library-management-system.mdx + │ ├── inventory-management-system.mdx + │ ├── custom-data-structures-library.mdx + │ ├── multithreaded-file-search.mdx + │ ├── tcp-chat-application.mdx + │ └── production-ready-cpp-project.mdx + │ + ├── 20-practice/ + │ ├── beginner-exercises.mdx + │ ├── intermediate-exercises.mdx + │ ├── advanced-exercises.mdx + │ ├── stl-challenges.mdx + │ ├── algorithms-challenges.mdx + │ ├── quizzes.mdx + │ └── interview-questions.mdx + │ + ├── reference/ + │ ├── cpp-syntax-cheatsheet.mdx + │ ├── operators-reference.mdx + │ ├── stl-reference.mdx + │ ├── smart-pointers-reference.mdx + │ ├── compiler-commands.mdx + │ ├── cpp-standard-versions.mdx + │ └── glossary.mdx + │ + └── assets/ + ├── images/ + └── diagrams/ +``` \ No newline at end of file diff --git a/tutorials/css/index.mdx b/tutorials/css/index.mdx index e69de29bb..ae1ba8069 100644 --- a/tutorials/css/index.mdx +++ b/tutorials/css/index.mdx @@ -0,0 +1,538 @@ +```mdx +docs/ +└── tutorials/ + └── css/ + ├── index.mdx + │ + ├── 01-getting-started/ + │ ├── index.mdx + │ ├── what-is-css.mdx + │ ├── why-css-matters.mdx + │ ├── css-history.mdx + │ ├── css3-and-modern-css.mdx + │ ├── how-css-works.mdx + │ ├── adding-css-to-html.mdx + │ ├── inline-css.mdx + │ ├── internal-css.mdx + │ ├── external-css.mdx + │ ├── browser-developer-tools.mdx + │ └── your-first-stylesheet.mdx + │ + ├── 02-css-syntax/ + │ ├── index.mdx + │ ├── selectors.mdx + │ ├── declarations.mdx + │ ├── properties.mdx + │ ├── values.mdx + │ ├── comments.mdx + │ ├── whitespace.mdx + │ ├── css-rules.mdx + │ ├── vendor-prefixes.mdx + │ └── css-nesting.mdx + │ + ├── 03-selectors/ + │ ├── index.mdx + │ ├── universal-selector.mdx + │ ├── type-selector.mdx + │ ├── class-selector.mdx + │ ├── id-selector.mdx + │ ├── attribute-selectors.mdx + │ ├── grouping-selectors.mdx + │ ├── descendant-selector.mdx + │ ├── child-selector.mdx + │ ├── adjacent-sibling-selector.mdx + │ ├── general-sibling-selector.mdx + │ ├── pseudo-classes.mdx + │ ├── pseudo-elements.mdx + │ ├── :is.mdx + │ ├── :where.mdx + │ ├── :has.mdx + │ ├── :not.mdx + │ ├── nth-child.mdx + │ ├── nth-of-type.mdx + │ └── selector-best-practices.mdx + │ + ├── 04-cascade-specificity-inheritance/ + │ ├── index.mdx + │ ├── cascade.mdx + │ ├── specificity.mdx + │ ├── inheritance.mdx + │ ├── source-order.mdx + │ ├── important.mdx + │ ├── cascade-layers.mdx + │ ├── style-origin.mdx + │ ├── computed-values.mdx + │ └── debugging-cascade.mdx + │ + ├── 05-colors/ + │ ├── index.mdx + │ ├── named-colors.mdx + │ ├── hex-colors.mdx + │ ├── rgb.mdx + │ ├── rgba.mdx + │ ├── hsl.mdx + │ ├── hsla.mdx + │ ├── hwb.mdx + │ ├── lab.mdx + │ ├── lch.mdx + │ ├── oklab.mdx + │ ├── oklch.mdx + │ ├── alpha-transparency.mdx + │ ├── color-functions.mdx + │ └── color-accessibility.mdx + │ + ├── 06-units-values-functions/ + │ ├── index.mdx + │ ├── px.mdx + │ ├── em.mdx + │ ├── rem.mdx + │ ├── percent.mdx + │ ├── vw-vh.mdx + │ ├── vmin-vmax.mdx + │ ├── dvh-dvw.mdx + │ ├── svh-svw.mdx + │ ├── lvh-lvw.mdx + │ ├── ch.mdx + │ ├── ex.mdx + │ ├── fr.mdx + │ ├── calc.mdx + │ ├── min-max.mdx + │ ├── clamp.mdx + │ ├── env.mdx + │ └── comparison-of-css-units.mdx + │ + ├── 07-box-model/ + │ ├── index.mdx + │ ├── content.mdx + │ ├── padding.mdx + │ ├── border.mdx + │ ├── margin.mdx + │ ├── width.mdx + │ ├── height.mdx + │ ├── min-width.mdx + │ ├── max-width.mdx + │ ├── min-height.mdx + │ ├── max-height.mdx + │ ├── box-sizing.mdx + │ ├── margin-collapsing.mdx + │ └── box-model-debugging.mdx + │ + ├── 08-backgrounds/ + │ ├── index.mdx + │ ├── background-color.mdx + │ ├── background-image.mdx + │ ├── background-size.mdx + │ ├── background-position.mdx + │ ├── background-repeat.mdx + │ ├── background-attachment.mdx + │ ├── background-clip.mdx + │ ├── background-origin.mdx + │ ├── multiple-backgrounds.mdx + │ ├── gradients.mdx + │ ├── linear-gradient.mdx + │ ├── radial-gradient.mdx + │ ├── conic-gradient.mdx + │ └── background-best-practices.mdx + │ + ├── 09-borders-shadows-effects/ + │ ├── index.mdx + │ ├── border-width.mdx + │ ├── border-style.mdx + │ ├── border-color.mdx + │ ├── border-radius.mdx + │ ├── outline.mdx + │ ├── box-shadow.mdx + │ ├── text-shadow.mdx + │ ├── opacity.mdx + │ ├── filters.mdx + │ ├── backdrop-filter.mdx + │ ├── blend-modes.mdx + │ └── visual-effects.mdx + │ + ├── 10-typography/ + │ ├── index.mdx + │ ├── font-family.mdx + │ ├── web-safe-fonts.mdx + │ ├── web-fonts.mdx + │ ├── @font-face.mdx + │ ├── font-size.mdx + │ ├── font-weight.mdx + │ ├── font-style.mdx + │ ├── font-stretch.mdx + │ ├── font-variant.mdx + │ ├── line-height.mdx + │ ├── letter-spacing.mdx + │ ├── word-spacing.mdx + │ ├── text-align.mdx + │ ├── text-indent.mdx + │ ├── text-transform.mdx + │ ├── text-decoration.mdx + │ ├── text-overflow.mdx + │ ├── white-space.mdx + │ ├── word-break.mdx + │ ├── overflow-wrap.mdx + │ ├── text-wrap.mdx + │ └── fluid-typography.mdx + │ + ├── 11-display-positioning/ + │ ├── index.mdx + │ ├── display.mdx + │ ├── block.mdx + │ ├── inline.mdx + │ ├── inline-block.mdx + │ ├── none.mdx + │ ├── visibility.mdx + │ ├── overflow.mdx + │ ├── position-static.mdx + │ ├── position-relative.mdx + │ ├── position-absolute.mdx + │ ├── position-fixed.mdx + │ ├── position-sticky.mdx + │ ├── inset.mdx + │ ├── z-index.mdx + │ ├── stacking-context.mdx + │ └── positioning-best-practices.mdx + │ + ├── 12-flexbox/ + │ ├── index.mdx + │ ├── flexbox-introduction.mdx + │ ├── flex-container.mdx + │ ├── flex-direction.mdx + │ ├── flex-wrap.mdx + │ ├── flex-flow.mdx + │ ├── justify-content.mdx + │ ├── align-items.mdx + │ ├── align-content.mdx + │ ├── align-self.mdx + │ ├── gap.mdx + │ ├── flex-grow.mdx + │ ├── flex-shrink.mdx + │ ├── flex-basis.mdx + │ ├── flex-shorthand.mdx + │ ├── order.mdx + │ ├── flexbox-layout-patterns.mdx + │ └── flexbox-debugging.mdx + │ + ├── 13-css-grid/ + │ ├── index.mdx + │ ├── grid-introduction.mdx + │ ├── grid-container.mdx + │ ├── grid-template-columns.mdx + │ ├── grid-template-rows.mdx + │ ├── grid-template-areas.mdx + │ ├── grid-column.mdx + │ ├── grid-row.mdx + │ ├── grid-gap.mdx + │ ├── repeat.mdx + │ ├── minmax.mdx + │ ├── auto-fit.mdx + │ ├── auto-fill.mdx + │ ├── implicit-grid.mdx + │ ├── alignment.mdx + │ ├── subgrid.mdx + │ ├── grid-layout-patterns.mdx + │ └── grid-debugging.mdx + │ + ├── 14-responsive-design/ + │ ├── index.mdx + │ ├── responsive-web-design.mdx + │ ├── mobile-first.mdx + │ ├── desktop-first.mdx + │ ├── media-queries.mdx + │ ├── container-queries.mdx + │ ├── responsive-images.mdx + │ ├── responsive-typography.mdx + │ ├── responsive-navigation.mdx + │ ├── responsive-layouts.mdx + │ ├── responsive-tables.mdx + │ ├── orientation.mdx + │ ├── prefers-color-scheme.mdx + │ ├── prefers-reduced-motion.mdx + │ ├── prefers-contrast.mdx + │ └── responsive-design-patterns.mdx + │ + ├── 15-transforms/ + │ ├── index.mdx + │ ├── transform.mdx + │ ├── translate.mdx + │ ├── translate3d.mdx + │ ├── scale.mdx + │ ├── rotate.mdx + │ ├── skew.mdx + │ ├── transform-origin.mdx + │ ├── perspective.mdx + │ └── 3d-transforms.mdx + │ + ├── 16-transitions/ + │ ├── index.mdx + │ ├── transition.mdx + │ ├── transition-property.mdx + │ ├── transition-duration.mdx + │ ├── transition-timing-function.mdx + │ ├── transition-delay.mdx + │ ├── cubic-bezier.mdx + │ └── reduced-motion.mdx + │ + ├── 17-animations/ + │ ├── index.mdx + │ ├── css-animations.mdx + │ ├── keyframes.mdx + │ ├── animation-name.mdx + │ ├── animation-duration.mdx + │ ├── animation-timing-function.mdx + │ ├── animation-delay.mdx + │ ├── animation-iteration-count.mdx + │ ├── animation-direction.mdx + │ ├── animation-fill-mode.mdx + │ ├── animation-play-state.mdx + │ ├── animation-shorthand.mdx + │ ├── loading-animations.mdx + │ ├── micro-interactions.mdx + │ └── accessible-animations.mdx + │ + ├── 18-modern-css/ + │ ├── index.mdx + │ ├── css-custom-properties.mdx + │ ├── css-variables.mdx + │ ├── css-nesting.mdx + │ ├── cascade-layers.mdx + │ ├── container-queries.mdx + │ ├── :has.mdx + │ ├── :is-and-where.mdx + │ ├── popover-styling.mdx + │ ├── anchor-positioning.mdx + │ ├── scroll-driven-animations.mdx + │ ├── view-transitions.mdx + │ ├── color-functions.mdx + │ ├── relative-colors.mdx + │ ├── style-queries.mdx + │ └── modern-css-strategy.mdx + │ + ├── 19-css-functions/ + │ ├── index.mdx + │ ├── calc.mdx + │ ├── min.mdx + │ ├── max.mdx + │ ├── clamp.mdx + │ ├── var.mdx + │ ├── env.mdx + │ ├── rgb.mdx + │ ├── hsl.mdx + │ ├── color-mix.mdx + │ ├── linear-gradient.mdx + │ ├── radial-gradient.mdx + │ ├── conic-gradient.mdx + │ └── css-function-cheatsheet.mdx + │ + ├── 20-css-shapes-and-clipping/ + │ ├── index.mdx + │ ├── clip-path.mdx + │ ├── circle.mdx + │ ├── polygon.mdx + │ ├── ellipse.mdx + │ ├── inset.mdx + │ ├── border-radius-shapes.mdx + │ ├── shape-outside.mdx + │ ├── object-fit.mdx + │ └── object-position.mdx + │ + ├── 21-css-accessibility/ + │ ├── index.mdx + │ ├── accessible-color.mdx + │ ├── color-contrast.mdx + │ ├── focus-styles.mdx + │ ├── keyboard-navigation.mdx + │ ├── reduced-motion.mdx + │ ├── readable-typography.mdx + │ ├── responsive-accessibility.mdx + │ ├── accessible-forms.mdx + │ ├── forced-colors.mdx + │ └── accessibility-testing.mdx + │ + ├── 22-css-performance/ + │ ├── index.mdx + │ ├── css-performance-basics.mdx + │ ├── render-blocking-css.mdx + │ ├── critical-css.mdx + │ ├── unused-css.mdx + │ ├── css-minification.mdx + │ ├── css-compression.mdx + │ ├── css-loading.mdx + │ ├── animation-performance.mdx + │ ├── gpu-friendly-properties.mdx + │ ├── layout-thrashing.mdx + │ └── css-core-web-vitals.mdx + │ + ├── 23-css-architecture/ + │ ├── index.mdx + │ ├── css-architecture.mdx + │ ├── naming-conventions.mdx + │ ├── bem.mdx + │ ├── smacss.mdx + │ ├── itcss.mdx + │ ├── utility-first.mdx + │ ├── component-based-css.mdx + │ ├── design-tokens.mdx + │ ├── css-variables-architecture.mdx + │ ├── scalable-css.mdx + │ ├── maintainable-css.mdx + │ └── css-code-review.mdx + │ + ├── 24-css-frameworks/ + │ ├── index.mdx + │ ├── css-frameworks-overview.mdx + │ ├── bootstrap.mdx + │ ├── tailwind-css.mdx + │ ├── bulma.mdx + │ ├── foundation.mdx + │ ├── css-modules.mdx + │ ├── styled-components.mdx + │ └── choosing-a-css-approach.mdx + │ + ├── 25-css-with-javascript/ + │ ├── index.mdx + │ ├── dom-class-manipulation.mdx + │ ├── classlist.mdx + │ ├── inline-style-api.mdx + │ ├── css-custom-properties-js.mdx + │ ├── dynamic-themes.mdx + │ ├── dark-mode.mdx + │ ├── theme-switching.mdx + │ └── css-and-react.mdx + │ + ├── 26-css-design-systems/ + │ ├── index.mdx + │ ├── design-system-introduction.mdx + │ ├── design-tokens.mdx + │ ├── color-system.mdx + │ ├── typography-system.mdx + │ ├── spacing-system.mdx + │ ├── sizing-system.mdx + │ ├── border-system.mdx + │ ├── elevation-system.mdx + │ ├── component-tokens.mdx + │ ├── themes.mdx + │ └── scalable-design-system.mdx + │ + ├── 27-ui-patterns/ + │ ├── index.mdx + │ ├── navbar.mdx + │ ├── sidebar.mdx + │ ├── hero-section.mdx + │ ├── cards.mdx + │ ├── buttons.mdx + │ ├── forms.mdx + │ ├── modals.mdx + │ ├── dropdowns.mdx + │ ├── tooltips.mdx + │ ├── tabs.mdx + │ ├── accordions.mdx + │ ├── breadcrumbs.mdx + │ ├── pagination.mdx + │ ├── tables.mdx + │ ├── badges.mdx + │ ├── alerts.mdx + │ ├── skeleton-loaders.mdx + │ ├── spinners.mdx + │ └── empty-states.mdx + │ + ├── 28-projects/ + │ ├── index.mdx + │ ├── profile-card.mdx + │ ├── landing-page.mdx + │ ├── portfolio.mdx + │ ├── blog-layout.mdx + │ ├── pricing-page.mdx + │ ├── login-page.mdx + │ ├── registration-page.mdx + │ ├── dashboard.mdx + │ ├── admin-dashboard.mdx + │ ├── ecommerce-page.mdx + │ ├── restaurant-website.mdx + │ ├── documentation-site.mdx + │ ├── responsive-gallery.mdx + │ ├── dark-mode-website.mdx + │ ├── design-system.mdx + │ └── final-css-project.mdx + │ + ├── 29-challenges/ + │ ├── index.mdx + │ ├── beginner/ + │ │ ├── challenge-01.mdx + │ │ ├── challenge-02.mdx + │ │ ├── challenge-03.mdx + │ │ └── ... + │ ├── intermediate/ + │ │ ├── challenge-01.mdx + │ │ ├── challenge-02.mdx + │ │ └── ... + │ └── advanced/ + │ ├── challenge-01.mdx + │ ├── challenge-02.mdx + │ └── ... + │ + ├── 30-quiz/ + │ ├── index.mdx + │ ├── css-basics-quiz.mdx + │ ├── selectors-quiz.mdx + │ ├── box-model-quiz.mdx + │ ├── flexbox-quiz.mdx + │ ├── grid-quiz.mdx + │ ├── responsive-design-quiz.mdx + │ ├── animation-quiz.mdx + │ ├── accessibility-quiz.mdx + │ └── final-css-quiz.mdx + │ + ├── 31-interview-preparation/ + │ ├── index.mdx + │ ├── css-interview-questions.mdx + │ ├── beginner-css-questions.mdx + │ ├── intermediate-css-questions.mdx + │ ├── advanced-css-questions.mdx + │ ├── selectors-questions.mdx + │ ├── flexbox-questions.mdx + │ ├── grid-questions.mdx + │ ├── responsive-design-questions.mdx + │ ├── animation-questions.mdx + │ ├── accessibility-questions.mdx + │ ├── performance-questions.mdx + │ └── frontend-interview-css.mdx + │ + ├── 32-reference/ + │ ├── index.mdx + │ ├── selectors.mdx + │ ├── properties/ + │ │ ├── align-content.mdx + │ │ ├── align-items.mdx + │ │ ├── background.mdx + │ │ ├── border.mdx + │ │ ├── color.mdx + │ │ ├── display.mdx + │ │ ├── flex.mdx + │ │ ├── font.mdx + │ │ ├── gap.mdx + │ │ ├── grid.mdx + │ │ ├── height.mdx + │ │ ├── margin.mdx + │ │ ├── max-width.mdx + │ │ ├── opacity.mdx + │ │ ├── padding.mdx + │ │ ├── position.mdx + │ │ ├── transform.mdx + │ │ ├── transition.mdx + │ │ ├── animation.mdx + │ │ └── z-index.mdx + │ ├── functions.mdx + │ ├── units.mdx + │ ├── pseudo-classes.mdx + │ ├── pseudo-elements.mdx + │ ├── at-rules.mdx + │ ├── media-features.mdx + │ └── browser-compatibility.mdx + │ + └── assets/ + ├── images/ + ├── diagrams/ + ├── examples/ + └── screenshots/ +``` \ No newline at end of file diff --git a/tutorials/devops/index.mdx b/tutorials/devops/index.mdx new file mode 100644 index 000000000..9b702ab14 --- /dev/null +++ b/tutorials/devops/index.mdx @@ -0,0 +1,275 @@ +```txt +docs/ +└── tutorials/ + └── devops/ + ├── index.mdx + ├── 01-introduction/ + │ ├── what-is-devops.mdx + │ ├── devops-culture-and-principles.mdx + │ ├── software-delivery-lifecycle.mdx + │ ├── devops-vs-devsecops-vs-sre.mdx + │ ├── devops-engineer-roles.mdx + │ ├── devops-tools-and-ecosystem.mdx + │ └── learning-roadmap.mdx + ├── 02-linux-fundamentals/ + │ ├── linux-introduction.mdx + │ ├── filesystem-and-permissions.mdx + │ ├── users-groups-and-sudo.mdx + │ ├── essential-linux-commands.mdx + │ ├── processes-and-signals.mdx + │ ├── services-and-systemd.mdx + │ ├── package-management.mdx + │ ├── logs-and-journald.mdx + │ ├── ssh-and-key-management.mdx + │ └── linux-troubleshooting.mdx + ├── 03-networking-fundamentals/ + │ ├── networking-basics.mdx + │ ├── ip-addresses-and-subnets.mdx + │ ├── dns-and-name-resolution.mdx + │ ├── tcp-udp-and-ports.mdx + │ ├── http-https-and-tls.mdx + │ ├── firewalls-and-security-groups.mdx + │ ├── reverse-proxies.mdx + │ ├── load-balancing.mdx + │ └── network-troubleshooting.mdx + ├── 04-git-and-version-control/ + │ ├── git-fundamentals.mdx + │ ├── repositories-and-commits.mdx + │ ├── branches-and-merging.mdx + │ ├── pull-requests-and-code-review.mdx + │ ├── merge-conflicts.mdx + │ ├── rebasing-and-cherry-picking.mdx + │ ├── tags-and-releases.mdx + │ ├── gitignore-and-repository-hygiene.mdx + │ └── branching-strategies.mdx + ├── 05-scripting-and-automation/ + │ ├── bash-fundamentals.mdx + │ ├── variables-and-quoting.mdx + │ ├── conditions-and-loops.mdx + │ ├── functions-and-exit-codes.mdx + │ ├── pipes-redirection-and-text-processing.mdx + │ ├── command-line-arguments.mdx + │ ├── error-handling-and-strict-mode.mdx + │ ├── cron-and-scheduled-tasks.mdx + │ ├── python-for-devops.mdx + │ └── safe-automation-practices.mdx + ├── 06-software-build-and-testing/ + │ ├── build-systems-and-dependencies.mdx + │ ├── package-managers-and-artifacts.mdx + │ ├── unit-and-integration-testing.mdx + │ ├── code-quality-and-linting.mdx + │ ├── static-analysis.mdx + │ ├── dependency-locking.mdx + │ ├── artifact-versioning.mdx + │ └── software-supply-chain-fundamentals.mdx + ├── 07-ci-cd-fundamentals/ + │ ├── continuous-integration.mdx + │ ├── continuous-delivery-vs-deployment.mdx + │ ├── pipeline-stages-and-jobs.mdx + │ ├── triggers-and-conditions.mdx + │ ├── build-test-and-package.mdx + │ ├── artifacts-and-caching.mdx + │ ├── environment-promotion.mdx + │ ├── approvals-and-release-gates.mdx + │ └── pipeline-design-best-practices.mdx + ├── 08-github-actions/ + │ ├── github-actions-fundamentals.mdx + │ ├── workflows-events-and-jobs.mdx + │ ├── runners-and-execution.mdx + │ ├── reusable-workflows.mdx + │ ├── actions-and-marketplace.mdx + │ ├── secrets-and-variables.mdx + │ ├── permissions-and-token-security.mdx + │ ├── build-test-and-deploy-workflow.mdx + │ ├── container-image-publishing.mdx + │ └── github-actions-security.mdx + ├── 09-jenkins/ + │ ├── jenkins-architecture.mdx + │ ├── install-and-configure-jenkins.mdx + │ ├── freestyle-jobs.mdx + │ ├── declarative-pipelines.mdx + │ ├── jenkinsfile-fundamentals.mdx + │ ├── agents-and-credentials.mdx + │ ├── plugins-and-maintenance.mdx + │ └── jenkins-security-and-backups.mdx + ├── 10-docker-and-containers/ + │ ├── containers-vs-virtual-machines.mdx + │ ├── install-docker.mdx + │ ├── images-and-containers.mdx + │ ├── dockerfile-fundamentals.mdx + │ ├── build-context-and-image-layers.mdx + │ ├── volumes-and-persistent-storage.mdx + │ ├── container-networking.mdx + │ ├── environment-variables-and-secrets.mdx + │ ├── docker-compose.mdx + │ ├── multi-stage-builds.mdx + │ ├── image-scanning-and-hardening.mdx + │ ├── registries-and-image-publishing.mdx + │ └── container-troubleshooting.mdx + ├── 11-kubernetes/ + │ ├── kubernetes-architecture.mdx + │ ├── local-clusters-with-kind-and-minikube.mdx + │ ├── pods-and-workloads.mdx + │ ├── deployments-and-replicasets.mdx + │ ├── services-and-service-discovery.mdx + │ ├── configmaps-and-secrets.mdx + │ ├── namespaces-and-resource-quotas.mdx + │ ├── probes-and-health-checks.mdx + │ ├── requests-limits-and-autoscaling.mdx + │ ├── persistent-volumes-and-claims.mdx + │ ├── ingress-and-gateway-api.mdx + │ ├── rbac-and-service-accounts.mdx + │ ├── rolling-updates-and-rollbacks.mdx + │ ├── helm-fundamentals.mdx + │ └── kubernetes-troubleshooting.mdx + ├── 12-infrastructure-as-code/ + │ ├── infrastructure-as-code-principles.mdx + │ ├── terraform-installation-and-setup.mdx + │ ├── terraform-providers-and-resources.mdx + │ ├── variables-outputs-and-locals.mdx + │ ├── terraform-state-and-backends.mdx + │ ├── modules-and-reusability.mdx + │ ├── workspaces-and-environments.mdx + │ ├── plans-applies-and-destroys.mdx + │ ├── drift-detection-and-import.mdx + │ ├── secrets-and-state-security.mdx + │ └── terraform-testing-and-policy.mdx + ├── 13-configuration-management/ + │ ├── configuration-management-concepts.mdx + │ ├── ansible-installation-and-inventory.mdx + │ ├── ad-hoc-commands.mdx + │ ├── playbooks-and-tasks.mdx + │ ├── variables-and-templates.mdx + │ ├── handlers-and-roles.mdx + │ ├── vault-and-sensitive-data.mdx + │ ├── idempotency-and-reusability.mdx + │ └── ansible-testing-and-linting.mdx + ├── 14-cloud-computing/ + │ ├── cloud-computing-fundamentals.mdx + │ ├── regions-zones-and-global-resources.mdx + │ ├── identity-and-access-management.mdx + │ ├── virtual-machines-and-compute.mdx + │ ├── cloud-networking.mdx + │ ├── object-storage.mdx + │ ├── managed-databases.mdx + │ ├── load-balancers-and-autoscaling.mdx + │ ├── cloud-cost-management.mdx + │ └── cloud-security-baselines.mdx + ├── 15-aws-devops/ + │ ├── aws-account-and-iam-basics.mdx + │ ├── ec2-and-ssm.mdx + │ ├── vpc-and-security-groups.mdx + │ ├── s3-and-artifact-storage.mdx + │ ├── ecr-container-registry.mdx + │ ├── ecs-and-fargate.mdx + │ ├── eks-overview.mdx + │ ├── codepipeline-and-codebuild.mdx + │ ├── cloudwatch-and-cloudtrail.mdx + │ └── aws-deployment-project.mdx + ├── 16-azure-devops/ + │ ├── azure-fundamentals.mdx + │ ├── entra-id-and-rbac.mdx + │ ├── azure-virtual-machines-and-networking.mdx + │ ├── azure-container-registry.mdx + │ ├── azure-container-apps.mdx + │ ├── aks-overview.mdx + │ ├── azure-pipelines-fundamentals.mdx + │ ├── azure-key-vault.mdx + │ ├── azure-monitor-and-log-analytics.mdx + │ └── azure-deployment-project.mdx + ├── 17-google-cloud-devops/ + │ ├── google-cloud-fundamentals.mdx + │ ├── iam-and-service-accounts.mdx + │ ├── compute-engine-and-networking.mdx + │ ├── cloud-storage.mdx + │ ├── artifact-registry.mdx + │ ├── cloud-run-deployments.mdx + │ ├── google-kubernetes-engine.mdx + │ ├── cloud-build-and-delivery.mdx + │ ├── cloud-logging-and-monitoring.mdx + │ └── gcp-deployment-project.mdx + ├── 18-devsecops/ + │ ├── devsecops-fundamentals.mdx + │ ├── secrets-management.mdx + │ ├── dependency-vulnerability-scanning.mdx + │ ├── sast-and-dast.mdx + │ ├── container-image-scanning.mdx + │ ├── sbom-and-provenance.mdx + │ ├── signed-artifacts-and-verification.mdx + │ ├── least-privilege-pipeline-design.mdx + │ ├── policy-as-code.mdx + │ └── supply-chain-security.mdx + ├── 19-observability-and-monitoring/ + │ ├── observability-fundamentals.mdx + │ ├── metrics-logs-and-traces.mdx + │ ├── prometheus-fundamentals.mdx + │ ├── grafana-dashboards.mdx + │ ├── alerting-and-notifications.mdx + │ ├── opentelemetry-fundamentals.mdx + │ ├── distributed-tracing.mdx + │ ├── centralized-logging.mdx + │ ├── service-level-indicators-and-objectives.mdx + │ └── monitoring-project.mdx + ├── 20-site-reliability-engineering/ + │ ├── sre-fundamentals.mdx + │ ├── slis-slos-and-error-budgets.mdx + │ ├── incident-management.mdx + │ ├── incident-response-and-escalation.mdx + │ ├── blameless-postmortems.mdx + │ ├── toil-reduction.mdx + │ ├── capacity-planning.mdx + │ ├── reliability-testing.mdx + │ └── disaster-recovery-and-business-continuity.mdx + ├── 21-gitops-and-platform-engineering/ + │ ├── gitops-fundamentals.mdx + │ ├── declarative-delivery.mdx + │ ├── argocd-fundamentals.mdx + │ ├── flux-fundamentals.mdx + │ ├── deployment-drift-and-reconciliation.mdx + │ ├── internal-developer-platforms.mdx + │ ├── golden-paths-and-templates.mdx + │ └── platform-engineering-fundamentals.mdx + ├── 22-release-and-deployment-strategies/ + │ ├── deployment-strategy-fundamentals.mdx + │ ├── rolling-deployments.mdx + │ ├── blue-green-deployments.mdx + │ ├── canary-releases.mdx + │ ├── feature-flags.mdx + │ ├── database-migration-strategies.mdx + │ ├── rollback-and-roll-forward.mdx + │ └── zero-downtime-deployment.mdx + ├── 23-devops-projects/ + │ ├── automated-build-and-test-pipeline.mdx + │ ├── dockerized-web-application.mdx + │ ├── terraform-cloud-infrastructure.mdx + │ ├── configuration-management-lab.mdx + │ ├── kubernetes-deployment-platform.mdx + │ ├── secure-container-delivery-pipeline.mdx + │ ├── observability-stack.mdx + │ ├── gitops-deployment-platform.mdx + │ └── end-to-end-devops-capstone.mdx + ├── 24-career-and-interview-preparation/ + │ ├── devops-resume-and-portfolio.mdx + │ ├── devops-interview-fundamentals.mdx + │ ├── linux-and-networking-interview-questions.mdx + │ ├── docker-and-kubernetes-interview-questions.mdx + │ ├── ci-cd-and-terraform-interview-questions.mdx + │ ├── scenario-based-troubleshooting.mdx + │ └── certification-and-learning-paths.mdx + ├── reference/ + │ ├── linux-command-reference.mdx + │ ├── git-command-reference.mdx + │ ├── docker-command-reference.mdx + │ ├── kubectl-command-reference.mdx + │ ├── terraform-command-reference.mdx + │ ├── bash-scripting-reference.mdx + │ ├── ci-cd-glossary.mdx + │ ├── troubleshooting-guide.mdx + │ ├── security-checklist.mdx + │ └── official-resources.mdx + └── assets/ + ├── images/ + ├── diagrams/ + ├── workflows/ + └── examples/ +``` \ No newline at end of file diff --git a/tutorials/django/index.mdx b/tutorials/django/index.mdx new file mode 100644 index 000000000..58165981a --- /dev/null +++ b/tutorials/django/index.mdx @@ -0,0 +1,194 @@ +```txt +docs/ +└── tutorials/ + └── django/ + ├── index.mdx + ├── 01-introduction/ + │ ├── what-is-django.mdx + │ ├── why-learn-django.mdx + │ ├── django-features.mdx + │ ├── django-vs-flask.mdx + │ ├── django-mtv-architecture.mdx + │ └── request-response-lifecycle.mdx + ├── 02-python-and-environment/ + │ ├── python-prerequisites.mdx + │ ├── install-python.mdx + │ ├── virtual-environments.mdx + │ ├── install-django.mdx + │ ├── pip-and-dependencies.mdx + │ └── verify-installation.mdx + ├── 03-project-setup/ + │ ├── create-django-project.mdx + │ ├── project-vs-app.mdx + │ ├── directory-structure.mdx + │ ├── settings-and-configuration.mdx + │ ├── run-development-server.mdx + │ └── django-admin-and-manage-py.mdx + ├── 04-url-routing-and-views/ + │ ├── url-patterns.mdx + │ ├── function-based-views.mdx + │ ├── class-based-views.mdx + │ ├── path-and-re-path.mdx + │ ├── url-parameters.mdx + │ ├── named-urls-and-reversing.mdx + │ ├── include-and-app-routing.mdx + │ └── http-requests-and-responses.mdx + ├── 05-templates-and-static-files/ + │ ├── template-language.mdx + │ ├── template-inheritance.mdx + │ ├── template-filters-and-tags.mdx + │ ├── context-and-template-data.mdx + │ ├── static-files-setup.mdx + │ ├── css-javascript-and-images.mdx + │ └── reusable-template-components.mdx + ├── 06-models-and-databases/ + │ ├── model-fundamentals.mdx + │ ├── model-fields.mdx + │ ├── migrations.mdx + │ ├── django-orm-introduction.mdx + │ ├── create-read-update-delete.mdx + │ ├── queryset-filtering.mdx + │ ├── ordering-and-pagination.mdx + │ ├── database-relationships.mdx + │ ├── transactions-and-atomic-operations.mdx + │ └── indexes-and-query-optimization.mdx + ├── 07-admin-and-data-management/ + │ ├── django-admin-introduction.mdx + │ ├── register-models.mdx + │ ├── list-display-and-filters.mdx + │ ├── search-and-fieldsets.mdx + │ ├── custom-admin-actions.mdx + │ └── fixtures-and-data-imports.mdx + ├── 08-forms-and-validation/ + │ ├── html-forms-in-django.mdx + │ ├── django-forms.mdx + │ ├── model-forms.mdx + │ ├── form-validation.mdx + │ ├── custom-validation.mdx + │ ├── file-and-image-uploads.mdx + │ └── form-errors-and-feedback.mdx + ├── 09-authentication-and-permissions/ + │ ├── authentication-overview.mdx + │ ├── built-in-user-model.mdx + │ ├── registration-and-login.mdx + │ ├── logout-and-sessions.mdx + │ ├── password-reset.mdx + │ ├── custom-user-model.mdx + │ ├── permissions-and-groups.mdx + │ ├── login-required-and-access-control.mdx + │ └── object-level-permissions.mdx + ├── 10-middleware-and-security/ + │ ├── middleware-fundamentals.mdx + │ ├── create-custom-middleware.mdx + │ ├── csrf-protection.mdx + │ ├── cross-site-scripting.mdx + │ ├── sql-injection-prevention.mdx + │ ├── clickjacking-protection.mdx + │ ├── secure-cookies-and-sessions.mdx + │ ├── secrets-and-environment-variables.mdx + │ └── production-security-checklist.mdx + ├── 11-class-based-views/ + │ ├── class-based-view-fundamentals.mdx + │ ├── templateview.mdx + │ ├── listview-and-detailview.mdx + │ ├── createview-and-updateview.mdx + │ ├── deleteview.mdx + │ └── mixins-and-reusable-views.mdx + ├── 12-django-rest-framework/ + │ ├── api-development-overview.mdx + │ ├── install-drf.mdx + │ ├── serializers.mdx + │ ├── api-views.mdx + │ ├── viewsets-and-routers.mdx + │ ├── generic-views.mdx + │ ├── authentication-and-permissions.mdx + │ ├── pagination-filtering-and-search.mdx + │ ├── api-versioning.mdx + │ ├── throttling-and-rate-limits.mdx + │ └── api-error-handling.mdx + ├── 13-advanced-database/ + │ ├── advanced-querysets.mdx + │ ├── select-related-and-prefetch-related.mdx + │ ├── annotations-and-aggregations.mdx + │ ├── custom-managers.mdx + │ ├── custom-querysets.mdx + │ ├── database-transactions.mdx + │ ├── raw-sql-and-orm-boundaries.mdx + │ └── postgres-production-setup.mdx + ├── 14-background-tasks-and-email/ + │ ├── email-configuration.mdx + │ ├── send-emails.mdx + │ ├── email-templates.mdx + │ ├── task-queues-overview.mdx + │ ├── celery-and-django.mdx + │ ├── scheduled-tasks.mdx + │ └── retries-and-failure-handling.mdx + ├── 15-files-and-media/ + │ ├── media-configuration.mdx + │ ├── upload-files.mdx + │ ├── image-fields.mdx + │ ├── storage-backends.mdx + │ ├── cloud-storage-overview.mdx + │ └── safe-file-downloads.mdx + ├── 16-testing-and-code-quality/ + │ ├── testing-overview.mdx + │ ├── django-test-framework.mdx + │ ├── unit-tests.mdx + │ ├── client-and-integration-tests.mdx + │ ├── model-and-database-tests.mdx + │ ├── api-testing.mdx + │ ├── fixtures-and-factories.mdx + │ ├── mocking-and-patching.mdx + │ ├── coverage-and-linting.mdx + │ └── continuous-integration.mdx + ├── 17-performance-and-caching/ + │ ├── caching-fundamentals.mdx + │ ├── cache-backends.mdx + │ ├── template-and-view-caching.mdx + │ ├── query-optimization.mdx + │ ├── pagination-and-large-datasets.mdx + │ ├── static-asset-optimization.mdx + │ └── profiling-and-monitoring.mdx + ├── 18-advanced-django/ + │ ├── signals-and-event-handling.mdx + │ ├── custom-management-commands.mdx + │ ├── reusable-django-apps.mdx + │ ├── dependency-management.mdx + │ ├── django-async-support.mdx + │ ├── domain-oriented-architecture.mdx + │ └── multi-tenant-applications.mdx + ├── 19-deployment-and-devops/ + │ ├── production-readiness.mdx + │ ├── environment-based-settings.mdx + │ ├── wsgi-and-asgi.mdx + │ ├── production-database-configuration.mdx + │ ├── static-files-and-collectstatic.mdx + │ ├── dockerize-django.mdx + │ ├── deployment-workflow.mdx + │ ├── logs-health-checks-and-monitoring.mdx + │ ├── backups-and-recovery.mdx + │ └── ci-cd-pipeline.mdx + ├── 20-projects/ + │ ├── personal-blog.mdx + │ ├── task-manager.mdx + │ ├── student-management-system.mdx + │ ├── authentication-portal.mdx + │ ├── inventory-management.mdx + │ ├── ecommerce-platform.mdx + │ ├── rest-api-project.mdx + │ └── production-capstone.mdx + ├── reference/ + │ ├── django-admin-cheatsheet.mdx + │ ├── queryset-reference.mdx + │ ├── template-reference.mdx + │ ├── forms-reference.mdx + │ ├── settings-reference.mdx + │ ├── management-commands.mdx + │ ├── common-errors.mdx + │ ├── glossary.mdx + │ └── official-resources.mdx + └── assets/ + ├── images/ + ├── diagrams/ + └── examples/ +``` \ No newline at end of file diff --git a/tutorials/docker/index.mdx b/tutorials/docker/index.mdx new file mode 100644 index 000000000..079b12e52 --- /dev/null +++ b/tutorials/docker/index.mdx @@ -0,0 +1,178 @@ +```txt +docs/ +└── tutorials/ + └── docker/ + ├── index.mdx + ├── 01-introduction/ + │ ├── what-is-docker.mdx + │ ├── why-use-containers.mdx + │ ├── containers-vs-virtual-machines.mdx + │ ├── docker-architecture.mdx + │ ├── docker-engine-and-cli.mdx + │ ├── docker-use-cases.mdx + │ └── docker-learning-roadmap.mdx + ├── 02-installation-and-setup/ + │ ├── docker-desktop-installation.mdx + │ ├── docker-engine-on-linux.mdx + │ ├── docker-with-wsl2.mdx + │ ├── verify-docker-installation.mdx + │ ├── docker-daemon-and-contexts.mdx + │ ├── configure-docker-resources.mdx + │ └── common-installation-errors.mdx + ├── 03-docker-cli-fundamentals/ + │ ├── docker-command-structure.mdx + │ ├── docker-run.mdx + │ ├── docker-ps-and-container-inspection.mdx + │ ├── docker-start-stop-and-restart.mdx + │ ├── docker-logs-and-exec.mdx + │ ├── docker-cp-and-file-management.mdx + │ ├── docker-remove-and-cleanup.mdx + │ └── docker-cli-cheatsheet.mdx + ├── 04-images-and-containers/ + │ ├── image-layers-and-container-lifecycle.mdx + │ ├── pull-and-search-images.mdx + │ ├── image-tags-and-digests.mdx + │ ├── inspect-image-metadata.mdx + │ ├── container-isolation.mdx + │ ├── container-ports-and-publishing.mdx + │ ├── container-environment-variables.mdx + │ └── image-and-container-cleanup.mdx + ├── 05-dockerfiles/ + │ ├── dockerfile-fundamentals.mdx + │ ├── from-run-and-cmd.mdx + │ ├── copy-and-add.mdx + │ ├── entrypoint-vs-cmd.mdx + │ ├── workdir-and-environment.mdx + │ ├── expose-and-port-publishing.mdx + │ ├── build-context-and-dockerignore.mdx + │ ├── build-arguments-and-environment-variables.mdx + │ ├── shell-and-exec-forms.mdx + │ └── dockerfile-best-practices.mdx + ├── 06-building-and-optimizing-images/ + │ ├── docker-build.mdx + │ ├── image-layer-caching.mdx + │ ├── multi-stage-builds.mdx + │ ├── minimal-base-images.mdx + │ ├── buildkit-fundamentals.mdx + │ ├── build-secrets.mdx + │ ├── build-cache-mounts.mdx + │ ├── image-size-optimization.mdx + │ └── reproducible-image-builds.mdx + ├── 07-container-networking/ + │ ├── networking-fundamentals.mdx + │ ├── bridge-networks.mdx + │ ├── user-defined-networks.mdx + │ ├── host-and-none-networking.mdx + │ ├── container-name-resolution.mdx + │ ├── published-ports.mdx + │ ├── container-to-container-communication.mdx + │ ├── custom-network-configuration.mdx + │ └── network-troubleshooting.mdx + ├── 08-storage-and-persistence/ + │ ├── container-filesystems.mdx + │ ├── volumes-vs-bind-mounts.mdx + │ ├── create-and-manage-volumes.mdx + │ ├── bind-mounts-for-development.mdx + │ ├── tmpfs-mounts.mdx + │ ├── database-persistence.mdx + │ ├── volume-backup-and-restore.mdx + │ └── storage-permissions.mdx + ├── 09-docker-compose/ + │ ├── docker-compose-fundamentals.mdx + │ ├── compose-yaml-structure.mdx + │ ├── services-and-images.mdx + │ ├── compose-build-and-run.mdx + │ ├── compose-networks-and-volumes.mdx + │ ├── environment-files-and-configuration.mdx + │ ├── healthchecks-and-startup-order.mdx + │ ├── profiles-and-development-overrides.mdx + │ ├── compose-watch-and-live-development.mdx + │ └── multi-container-application.mdx + ├── 10-registries-and-image-distribution/ + │ ├── container-registries-explained.mdx + │ ├── docker-hub.mdx + │ ├── login-and-authentication.mdx + │ ├── tag-and-push-images.mdx + │ ├── pull-images-from-private-registries.mdx + │ ├── private-registry-fundamentals.mdx + │ ├── image-digests-and-provenance.mdx + │ └── registry-retention-and-cleanup.mdx + ├── 11-docker-security/ + │ ├── container-security-fundamentals.mdx + │ ├── non-root-containers.mdx + │ ├── linux-capabilities.mdx + │ ├── read-only-filesystems.mdx + │ ├── secrets-and-credential-management.mdx + │ ├── image-vulnerability-scanning.mdx + │ ├── trusted-base-images.mdx + │ ├── seccomp-and-security-profiles.mdx + │ ├── rootless-docker.mdx + │ ├── docker-socket-security.mdx + │ └── container-security-checklist.mdx + ├── 12-docker-and-ci-cd/ + │ ├── container-build-pipelines.mdx + │ ├── github-actions-docker-build.mdx + │ ├── build-and-push-to-docker-hub.mdx + │ ├── private-registry-pipelines.mdx + │ ├── image-tagging-strategies.mdx + │ ├── image-scanning-in-ci.mdx + │ ├── multi-platform-image-builds.mdx + │ └── deployment-automation.mdx + ├── 13-language-specific-containers/ + │ ├── dockerize-nodejs.mdx + │ ├── dockerize-react-application.mdx + │ ├── dockerize-nextjs.mdx + │ ├── dockerize-python.mdx + │ ├── dockerize-django.mdx + │ ├── dockerize-java-spring-boot.mdx + │ ├── dockerize-aspnet-core.mdx + │ ├── dockerize-php.mdx + │ └── dockerize-go.mdx + ├── 14-production-and-troubleshooting/ + │ ├── container-logging.mdx + │ ├── resource-limits-and-reservations.mdx + │ ├── healthchecks-and-restarts.mdx + │ ├── graceful-shutdown.mdx + │ ├── container-debugging.mdx + │ ├── performance-monitoring.mdx + │ ├── docker-daemon-troubleshooting.mdx + │ ├── disk-space-and-pruning.mdx + │ └── production-readiness-checklist.mdx + ├── 15-docker-and-orchestration/ + │ ├── when-to-use-orchestration.mdx + │ ├── docker-compose-vs-kubernetes.mdx + │ ├── container-scaling-concepts.mdx + │ ├── orchestration-fundamentals.mdx + │ ├── docker-swarm-overview.mdx + │ └── transition-to-kubernetes.mdx + ├── 16-projects/ + │ ├── first-nginx-container.mdx + │ ├── static-website-container.mdx + │ ├── nodejs-api-container.mdx + │ ├── python-api-and-postgresql.mdx + │ ├── aspnet-core-and-sql-server.mdx + │ ├── multi-container-blog-platform.mdx + │ ├── secure-ci-cd-container-pipeline.mdx + │ └── production-docker-capstone.mdx + ├── 17-interview-preparation/ + │ ├── docker-fundamentals-interview-questions.mdx + │ ├── dockerfile-interview-questions.mdx + │ ├── networking-and-storage-questions.mdx + │ ├── docker-compose-interview-questions.mdx + │ ├── container-security-questions.mdx + │ └── troubleshooting-scenarios.mdx + ├── reference/ + │ ├── docker-cli-reference.mdx + │ ├── dockerfile-instructions-reference.mdx + │ ├── compose-file-reference.mdx + │ ├── networking-reference.mdx + │ ├── storage-reference.mdx + │ ├── common-errors-and-solutions.mdx + │ ├── docker-glossary.mdx + │ └── official-resources.mdx + └── assets/ + ├── images/ + ├── diagrams/ + ├── compose-examples/ + └── dockerfiles/ +``` \ No newline at end of file diff --git a/tutorials/go/index.mdx b/tutorials/go/index.mdx new file mode 100644 index 000000000..590b0f361 --- /dev/null +++ b/tutorials/go/index.mdx @@ -0,0 +1,241 @@ +```mdx +docs/ +└── tutorials/ + └── go/ + ├── index.mdx + │ + ├── 01-getting-started/ + │ ├── what-is-go.mdx + │ ├── why-learn-go.mdx + │ ├── install-go.mdx + │ ├── setup-vscode-goland.mdx + │ ├── go-workspace.mdx + │ ├── go-toolchain.mdx + │ └── first-go-program.mdx + │ + ├── 02-go-fundamentals/ + │ ├── program-structure.mdx + │ ├── variables-and-constants.mdx + │ ├── basic-data-types.mdx + │ ├── zero-values.mdx + │ ├── type-conversions.mdx + │ ├── operators.mdx + │ ├── comments-and-documentation.mdx + │ └── naming-conventions.mdx + │ + ├── 03-control-flow/ + │ ├── if-and-else.mdx + │ ├── switch-statements.mdx + │ ├── for-loops.mdx + │ ├── range-loops.mdx + │ ├── break-and-continue.mdx + │ ├── defer.mdx + │ └── goto-and-labels.mdx + │ + ├── 04-functions/ + │ ├── function-basics.mdx + │ ├── parameters-and-return-values.mdx + │ ├── multiple-return-values.mdx + │ ├── named-return-values.mdx + │ ├── variadic-functions.mdx + │ ├── closures.mdx + │ ├── recursion.mdx + │ └── function-values.mdx + │ + ├── 05-arrays-slices-and-maps/ + │ ├── arrays.mdx + │ ├── slices.mdx + │ ├── slice-length-and-capacity.mdx + │ ├── append-and-copy.mdx + │ ├── maps.mdx + │ ├── nested-slices-and-maps.mdx + │ └── choosing-data-structures.mdx + │ + ├── 06-strings-and-data-formatting/ + │ ├── strings-and-runes.mdx + │ ├── bytes-and-utf8.mdx + │ ├── string-functions.mdx + │ ├── strings-builder.mdx + │ ├── formatting-with-fmt.mdx + │ ├── regular-expressions.mdx + │ └── json-encoding-and-decoding.mdx + │ + ├── 07-structs-and-methods/ + │ ├── structs.mdx + │ ├── struct-fields-and-tags.mdx + │ ├── methods.mdx + │ ├── pointer-receivers.mdx + │ ├── pointers.mdx + │ ├── embedding.mdx + │ └── constructors-and-factory-functions.mdx + │ + ├── 08-interfaces-and-types/ + │ ├── interface-fundamentals.mdx + │ ├── implicit-interface-implementation.mdx + │ ├── empty-interface-and-any.mdx + │ ├── type-assertions.mdx + │ ├── type-switches.mdx + │ ├── custom-types.mdx + │ ├── generics.mdx + │ └── comparable-and-type-constraints.mdx + │ + ├── 09-packages-and-modules/ + │ ├── packages.mdx + │ ├── imports-and-exports.mdx + │ ├── go-modules.mdx + │ ├── go-mod-tidy.mdx + │ ├── dependency-management.mdx + │ ├── workspaces.mdx + │ ├── internal-packages.mdx + │ └── project-structure.mdx + │ + ├── 10-error-handling/ + │ ├── errors-package.mdx + │ ├── returning-errors.mdx + │ ├── custom-errors.mdx + │ ├── errors-is-and-as.mdx + │ ├── error-wrapping.mdx + │ ├── panic-and-recover.mdx + │ └── error-handling-patterns.mdx + │ + ├── 11-file-system-and-io/ + │ ├── io-and-os-packages.mdx + │ ├── reading-files.mdx + │ ├── writing-files.mdx + │ ├── file-paths.mdx + │ ├── buffered-io.mdx + │ ├── io-readers-and-writers.mdx + │ ├── file-walking.mdx + │ └── csv-processing.mdx + │ + ├── 12-concurrency/ + │ ├── concurrency-fundamentals.mdx + │ ├── goroutines.mdx + │ ├── channels.mdx + │ ├── buffered-and-unbuffered-channels.mdx + │ ├── select-statement.mdx + │ ├── mutexes-and-rwmutexes.mdx + │ ├── waitgroups.mdx + │ ├── context-package.mdx + │ ├── worker-pools.mdx + │ ├── pipelines.mdx + │ ├── cancellation-and-timeouts.mdx + │ └── race-detection.mdx + │ + ├── 13-standard-library/ + │ ├── fmt-and-log.mdx + │ ├── time-package.mdx + │ ├── sort-and-slices.mdx + │ ├── maps-package.mdx + │ ├── math-and-rand.mdx + │ ├── encoding-json.mdx + │ ├── encoding-csv.mdx + │ ├── crypto-random.mdx + │ └── environment-variables.mdx + │ + ├── 14-http-and-rest-apis/ + │ ├── net-http-fundamentals.mdx + │ ├── http-server.mdx + │ ├── http-handlers.mdx + │ ├── routing-and-methods.mdx + │ ├── request-and-response.mdx + │ ├── json-rest-api.mdx + │ ├── middleware.mdx + │ ├── request-validation.mdx + │ ├── pagination-and-filtering.mdx + │ ├── graceful-shutdown.mdx + │ └── api-versioning.mdx + │ + ├── 15-databases/ + │ ├── database-sql-package.mdx + │ ├── connect-to-postgresql.mdx + │ ├── connect-to-mysql.mdx + │ ├── queries-and-row-scanning.mdx + │ ├── prepared-statements.mdx + │ ├── transactions.mdx + │ ├── connection-pooling.mdx + │ ├── database-migrations.mdx + │ ├── repository-pattern.mdx + │ └── mongodb-integration.mdx + │ + ├── 16-testing-and-debugging/ + │ ├── testing-package.mdx + │ ├── table-driven-tests.mdx + │ ├── subtests.mdx + │ ├── test-fixtures.mdx + │ ├── benchmarks.mdx + │ ├── fuzz-testing.mdx + │ ├── test-coverage.mdx + │ ├── mocking-and-interfaces.mdx + │ ├── debugging-with-delve.mdx + │ └── profiling-with-pprof.mdx + │ + ├── 17-cli-and-tool-development/ + │ ├── command-line-arguments.mdx + │ ├── flags-and-options.mdx + │ ├── environment-configuration.mdx + │ ├── structured-logging.mdx + │ ├── cobra-cli.mdx + │ ├── terminal-applications.mdx + │ └── building-cross-platform-binaries.mdx + │ + ├── 18-security-and-performance/ + │ ├── secure-go-development.mdx + │ ├── input-validation.mdx + │ ├── secrets-management.mdx + │ ├── http-security.mdx + │ ├── sql-injection-prevention.mdx + │ ├── memory-and-garbage-collection.mdx + │ ├── benchmarking-and-optimization.mdx + │ ├── profiling.mdx + │ └── dependency-security.mdx + │ + ├── 19-deployment-and-cloud/ + │ ├── build-and-release.mdx + │ ├── cross-compilation.mdx + │ ├── dockerizing-go-applications.mdx + │ ├── multi-stage-docker-builds.mdx + │ ├── ci-cd-for-go.mdx + │ ├── health-checks-and-monitoring.mdx + │ ├── configuration-by-environment.mdx + │ └── production-readiness-checklist.mdx + │ + ├── 20-advanced-go/ + │ ├── reflection.mdx + │ ├── unsafe-package.mdx + │ ├── cgo-introduction.mdx + │ ├── plugin-system-overview.mdx + │ ├── compiler-and-runtime-overview.mdx + │ ├── memory-model.mdx + │ └── architecture-and-design-patterns.mdx + │ + ├── 21-projects/ + │ ├── cli-calculator.mdx + │ ├── file-organizer.mdx + │ ├── url-shortener-api.mdx + │ ├── task-management-api.mdx + │ ├── log-monitoring-tool.mdx + │ ├── concurrent-web-crawler.mdx + │ ├── realtime-notification-service.mdx + │ └── production-rest-api.mdx + │ + ├── 22-practice/ + │ ├── beginner-exercises.mdx + │ ├── intermediate-exercises.mdx + │ ├── advanced-exercises.mdx + │ ├── concurrency-challenges.mdx + │ ├── quizzes.mdx + │ └── interview-questions.mdx + │ + ├── reference/ + │ ├── go-syntax-cheatsheet.mdx + │ ├── built-in-functions.mdx + │ ├── standard-library-guide.mdx + │ ├── concurrency-reference.mdx + │ ├── go-commands-reference.mdx + │ └── glossary.mdx + │ + └── assets/ + ├── images/ + └── diagrams/ +``` \ No newline at end of file diff --git a/tutorials/html/12-html-head/base.mdx b/tutorials/html/12-html-head/base.mdx index 66b0d299a..1a81e062a 100644 --- a/tutorials/html/12-html-head/base.mdx +++ b/tutorials/html/12-html-head/base.mdx @@ -1,15 +1,445 @@ --- -id: base-element -title: "Specifying Document Base URLs: The base Element" -sidebar_label: "Base Element ()" +id: html-base +title: "The HTML Base Element" +sidebar_label: "Base" sidebar_position: 12 slug: /html/html-head/base -description: "Understand how the base element sets default base URLs and target window behaviors for all relative links across a webpage." +description: "Learn the HTML base element: how it changes the starting address of every relative link, image and form, how it affects fragment links like #top, how base target works, why it is risky, and what to use instead. Includes a live URL resolver and a base tag checker." keywords: - HTML base tag - - document base URL - - relative path base element - - target link base HTML + - base href + - base target + - relative URL resolution + - document.baseURI + - base-uri CSP + - base tag injection + - fragment links base tag + - HTML relative links + - learn HTML - CodeHarborHub HTML -tags: [html, head, base, urls] ---- \ No newline at end of file +tags: [html, web-development, beginner, base, urls, links, security, head, frontend] +--- + +import {useState, useEffect} from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +export const baseItems = [ + {label: "Link to a file in the same folder", html: (v) => 'link', value: "about.html", prop: "href"}, + {label: "Link from the site root", html: (v) => 'link', value: "/contact", prop: "href"}, + {label: "Link up one folder", html: (v) => 'link', value: "../up.html", prop: "href"}, + {label: "Link to a place on this page", html: (v) => 'link', value: "#top", prop: "href"}, + {label: "A full address", html: (v) => 'link', value: "https://other.example/page", prop: "href"}, + {label: "An image", html: (v) => '', value: "images/logo.png", prop: "src"}, + {label: "A form", html: (v) => '
', value: "submit", prop: "action"}, +]; + +export const escapeAttr = (text) => text.replace(/&/g, "&").replace(/"/g, """).replace(/ { + setPageUrl(window.location.href); + }, []); + const baseTag = useBase && baseHref.trim() ? '' : ""; + const markup = "" + baseTag + "" + baseItems.map((item) => item.html(escapeAttr(item.value))).join("") + ""; + const doc = new DOMParser().parseFromString(markup, "text/html"); + const elements = Array.from(doc.body.children); + const rows = baseItems.map((item, index) => { + const element = elements[index]; + let withBase = ""; + if (element) withBase = item.prop === "href" ? element.href : item.prop === "src" ? element.src : element.action; + let without = ""; + try { + without = new URL(item.value, pageUrl || "http://localhost/").href; + } catch (error) { + without = "(invalid)"; + } + return {label: item.label, value: item.value, withBase, without}; + }); + const presets = ["https://example.com/blog/", "https://example.com/blog/2026/", "https://cdn.example.org/"]; + return ( +
+

+ +

+

+
+ setBaseHref(event.target.value)} style={{width: "100%"}} disabled={!useBase} /> +

+

+ {presets.map((preset) => ())} +

+
{baseTag || "(no base element)"}
+

Base address the browser used for this test page: {doc.baseURI}

+
+ + + + + + {rows.map((row) => ( + + + + + + ))} + +
What you wroteWhere it goes without a baseWhere it goes with the base
{row.value}
{row.label}
{row.without}{row.withBase}{useBase && row.value.charAt(0) === "#" && row.withBase !== row.without ? " ← no longer stays on this page!" : ""}
+
+

+ The browser's own parser works out these addresses, and nothing is loaded or opened. The "without a base" column uses the address of the documentation page you are reading now. Watch the link to #top: with a base element, it points to the base address, and not to the top of this page. +

+
+ ); +} + +export const baseSample = [ + '', + '', + '', + '', + '', +].join("\n"); + +export function BaseChecker() { + const [source, setSource] = useState(baseSample); + const doc = new DOMParser().parseFromString("" + source + "", "text/html"); + const bases = Array.from(doc.querySelectorAll("base")); + const notes = []; + if (bases.length === 0) notes.push("No base element found. That is usually the right choice."); + if (bases.length > 1) notes.push("There are " + bases.length + " base elements. Only the first one with an href is used for addresses, and only the first with a target is used for targets. Keep one."); + const first = bases.find((base) => base.hasAttribute("href")); + if (first) { + const children = Array.from(doc.head.children); + const baseIndex = children.indexOf(first); + const before = children.slice(0, baseIndex).filter((element) => element.hasAttribute("href") || element.hasAttribute("src")); + if (before.length > 0) notes.push(before.length + " element(s) with an address come before the base element. They may be resolved without it, so put the base as early as possible."); + const value = first.getAttribute("href"); + if (!/^[a-z][a-z0-9+.-]*:/i.test(value)) notes.push("The base href is relative (" + value + "). It is resolved against the page address, which is allowed, but harder to reason about. A full address is clearer."); + notes.push("Every relative address on the page, including #fragment links, is now measured from: " + first.href); + } + bases.forEach((base) => { + if (!base.hasAttribute("href") && !base.hasAttribute("target")) notes.push("A base element with neither href nor target does nothing. It is not valid."); + if (base.getAttribute("target") === "_blank") notes.push("target=\"_blank\" on a base makes every link open a new tab, which is disorienting and can hurt accessibility. Use it on individual links where it makes sense."); + }); + return ( +
+ +