├── .github ├── deta.svg └── workflows │ ├── dispatch.yml │ └── pull_request.yml ├── .gitignore ├── .npmrc ├── .prettierrc ├── .vscode ├── extensions.json ├── launch.json └── settings.json ├── LICENSE ├── LICENSE-content ├── README.md ├── astro.config.mjs ├── package.json ├── pnpm-lock.yaml ├── public ├── blog_assets │ ├── 17 │ │ ├── embed-one.webp │ │ ├── embed-two.webp │ │ ├── mobile-new-two.webp │ │ ├── mobile-new.webp │ │ └── mobile-old.webp │ ├── 18 │ │ └── tela.webp │ ├── 02 │ │ └── 01-space-sprint.webp │ ├── 03 │ │ ├── 01-moving-to-space.webp │ │ ├── 02-cloud-ui.webp │ │ ├── 03-space-ui.webp │ │ ├── 04-collections.png │ │ └── signatures.svg │ ├── 04 │ │ ├── build-yourself.webp │ │ ├── builder.png │ │ ├── canvas.png │ │ ├── collections.png │ │ ├── run-it.webp │ │ └── whats-next.webp │ ├── 230125-newspace.webp │ ├── 230125-old-domains.webp │ ├── action-panel.png │ ├── base-ui.png │ ├── browser-sdk.webp │ ├── builder-develop.png │ ├── builder-new-release.png │ ├── clear-app-data.png │ ├── clouds-bg.png │ ├── delete-account.png │ ├── delete-app-keep-data.png │ ├── delete-collection.png │ ├── deta-cloud-welcome.png │ ├── deta-collections.webp │ ├── discovery-list.png │ ├── discovery.png │ ├── duel.webp │ ├── edit-mode.gif │ ├── export-data.png │ ├── horizon-1.png │ ├── horizon-2.png │ ├── horizon-3.png │ ├── img.png │ ├── img2.png │ ├── instance-logs.png │ ├── instance-update-available.png │ ├── interop-1.png │ ├── interop-2.png │ ├── interop-3.png │ ├── listing-builds.png │ ├── manage-release.png │ ├── multi-horizons.webp │ ├── newsletters │ │ └── 01 │ │ │ ├── edit-mode.webp │ │ │ └── newsletter-1.webp │ ├── pwas-android.png │ ├── pwas-desktop-1.png │ ├── pwas-desktop-2.png │ ├── pwas-headline.gif │ ├── pwas-ios.png │ ├── pwas-launcher.png │ ├── raycast-extension-discovery.png │ ├── release-card.png │ ├── release-notes.png │ ├── sharing.webp │ ├── shirt.webp │ ├── space-canvas.png │ ├── space-os-signatures.svg │ ├── space-os.png │ ├── teletype-install-update.png │ ├── teletype-new-actions.png │ ├── teletype-project-actions.png │ ├── unlist-project.png │ └── voyagers.webp ├── docs_assets │ ├── archive │ │ ├── collections │ │ │ ├── base-item-unsaved.png │ │ │ ├── data-keys.png │ │ │ ├── empty-base.png │ │ │ ├── empty-collection.png │ │ │ ├── empty-drive.png │ │ │ ├── nothing-open.png │ │ │ ├── select-resource.png │ │ │ ├── tabs.png │ │ │ └── uploaded-file.png │ │ ├── custom_domains │ │ │ └── custom-domain-pending.png │ │ ├── guides │ │ │ └── accessing-client-ip-address │ │ │ │ └── cloudflare-proxy.png │ │ ├── instance │ │ │ └── context_menu.png │ │ └── schedules │ │ │ ├── configure-schedule.png │ │ │ ├── new-schedule.png │ │ │ └── schedule-view.png │ ├── build │ │ ├── app-anatomy.svg │ │ ├── builder-headline.png │ │ ├── builder-instance-1.png │ │ ├── builder-instance-10.png │ │ ├── builder-instance-11.png │ │ ├── builder-instance-12.png │ │ ├── builder-instance-2.png │ │ ├── builder-instance-3.png │ │ ├── builder-instance-4.png │ │ ├── builder-instance-5.png │ │ ├── builder-instance-6.png │ │ ├── builder-instance-7.png │ │ ├── builder-instance-8.png │ │ ├── builder-instance-9.png │ │ ├── builder-instance-headline.png │ │ ├── cli-1.png │ │ ├── cli-2.png │ │ ├── cli-3.png │ │ ├── custom-domains-1.png │ │ ├── custom-domains-2.png │ │ ├── data-storage-1.png │ │ ├── data-storage-2.png │ │ ├── data-storage-3.png │ │ ├── data-storage-4.png │ │ ├── data-storage-5.png │ │ ├── debugging-1.png │ │ ├── debugging-2.png │ │ ├── intro-1.png │ │ ├── intro-components.png │ │ ├── intro-ideas.png │ │ ├── local-development-1.png │ │ ├── local-development-2.png │ │ ├── local-development-headline.png │ │ ├── new-apps-1.png │ │ ├── new-apps-2.png │ │ ├── new-apps-3.png │ │ ├── new-apps-4.png │ │ ├── new-apps-5.png │ │ ├── new-apps-6.png │ │ ├── new-apps-7.png │ │ ├── projects-2.png │ │ ├── projects-builder.png │ │ ├── projects-develop-config.png │ │ ├── projects-develop-data.png │ │ ├── projects-develop-overview.png │ │ ├── projects-id.png │ │ ├── projects-overview.png │ │ ├── projects-release.png │ │ ├── pushing-1.png │ │ ├── todo-tutorial-1.png │ │ └── todo-tutorial-2.png │ ├── cloud-illustrations │ │ ├── anime │ │ │ ├── 1anime.gif │ │ │ ├── 2anime.gif │ │ │ ├── 3anime.gif │ │ │ ├── 4anime.gif │ │ │ ├── deta-build.gif │ │ │ ├── deta-publish.gif │ │ │ ├── deta-use-2.gif │ │ │ └── deta-use.gif │ │ ├── build.gif │ │ ├── cloud-cartoon.png │ │ ├── favicon.png │ │ ├── pink-cloud-painted.png │ │ ├── pink-cloud.png │ │ ├── sparkles.gif │ │ └── transparent-background.png │ ├── guides │ │ └── accessing-client-ip-address │ │ │ └── cloudflare-proxy.png │ ├── instance │ │ └── context_menu.png │ ├── learn │ │ ├── multi-personal.svg │ │ ├── multi-public.svg │ │ ├── personal-cloud.svg │ │ └── public-cloud.svg │ ├── publish │ │ ├── discovery-md-1.png │ │ ├── growing-your-app-1.png │ │ ├── growing-your-app-2.png │ │ ├── icon-1.png │ │ ├── icon-2.png │ │ ├── icon-3.png │ │ ├── icon-4.gif │ │ ├── icons-1.png │ │ ├── icons-2.png │ │ ├── icons-3.gif │ │ ├── icons-headline.png │ │ ├── intro-1.png │ │ ├── releasing-1.png │ │ ├── releasing-2.png │ │ ├── releasing-3.png │ │ ├── releasing-4.png │ │ ├── releasing-5.png │ │ └── releasing-headline.png │ ├── sunset │ │ ├── builder-instance-download-source.png │ │ ├── builder-instance-export.webp │ │ ├── collection-export.webp │ │ ├── horizon-export.webp │ │ ├── horizon-unzipped.png │ │ ├── installed-app-export.webp │ │ ├── installed-app-exports.png │ │ ├── pinned-app-export.webp │ │ ├── post-sunset-comms.png │ │ └── release-source-code.webp │ └── use │ │ ├── account-deletion-1.png │ │ ├── actions-1.png │ │ ├── actions-2.png │ │ ├── actions-3.png │ │ ├── actions-4.png │ │ ├── collections-1.png │ │ ├── collections-2.png │ │ ├── collections-3.png │ │ ├── collections-4.png │ │ ├── collections-5.png │ │ ├── collections-6.png │ │ ├── collections-7.png │ │ ├── collections-app.png │ │ ├── collections-headline.png │ │ ├── data-guis-1.png │ │ ├── data-guis-10.png │ │ ├── data-guis-11.png │ │ ├── data-guis-12.png │ │ ├── data-guis-13.png │ │ ├── data-guis-2.png │ │ ├── data-guis-3.png │ │ ├── data-guis-4.png │ │ ├── data-guis-5.png │ │ ├── data-guis-6.png │ │ ├── data-guis-7.png │ │ ├── data-guis-8.png │ │ ├── data-guis-9.png │ │ ├── discovery-1.png │ │ ├── discovery-2.png │ │ ├── discovery-3.png │ │ ├── discovery-4.png │ │ ├── discovery-5.png │ │ ├── discovery-headline.png │ │ ├── domains-1.png │ │ ├── domains-2.png │ │ ├── domains-3.png │ │ ├── domains-4.png │ │ ├── export-data.png │ │ ├── export-delete.png │ │ ├── export-download.png │ │ ├── interop-headline.png │ │ ├── intro-1.png │ │ ├── intro-space-apps-1.png │ │ ├── logs-1.png │ │ ├── logs-2.png │ │ ├── settings-1.png │ │ ├── settings-2.png │ │ ├── settings-3.png │ │ ├── settings-4.png │ │ ├── settings-5.png │ │ ├── settings-6.png │ │ ├── settings-7.png │ │ ├── sharing-1.webp │ │ ├── sharing-2.webp │ │ ├── space-apps-headline.png │ │ ├── ui-1.png │ │ ├── ui-2.png │ │ ├── ui-3.png │ │ ├── ui-4.png │ │ ├── ui-5.png │ │ ├── ui-6.png │ │ ├── ui-canvas.png │ │ ├── ui-card-creation.webp │ │ ├── ui-horizon.webp │ │ ├── ui-teletype.png │ │ ├── using-apps-1.png │ │ ├── using-apps-2.png │ │ ├── using-apps-3.png │ │ ├── using-apps-4.png │ │ ├── using-apps-5.png │ │ └── using-apps-6.png └── other_assets │ ├── ArticulatCF-DemiBold.woff2 │ ├── ArticulatCF-Regular.woff2 │ ├── CartographCF-Regular.woff2 │ ├── deta_heart.png │ ├── favicon.png │ ├── instant-page.js │ └── make-scrollable-code-focusable.js ├── scripts └── generate-indexes.js ├── src ├── components │ ├── Aside.astro │ ├── BlogHeader.astro │ ├── DetaHeart.astro │ ├── Footer │ │ └── Footer.astro │ ├── HeadCommon.astro │ ├── HeadSEO.astro │ ├── Header │ │ ├── AstroLogo.astro │ │ ├── Header.astro │ │ ├── LanguageSelect.css │ │ ├── LanguageSelect.tsx │ │ ├── NavLinks.svelte │ │ ├── Search.css │ │ ├── SidebarToggle.tsx │ │ ├── SkipToContent.astro │ │ └── ThemeToggle.svelte │ ├── HeaderLinks.svelte │ ├── Image.astro │ ├── LeftSidebar │ │ └── LeftSidebar.astro │ ├── PageContent │ │ └── PageContent.astro │ ├── RightSidebar │ │ ├── MoreMenu.astro │ │ ├── RightSidebar.astro │ │ └── TableOfContents.tsx │ ├── Tabs │ │ ├── InterfaceTabs.astro │ │ ├── InterfaceTabsExtended.astro │ │ ├── InterfaceTabsUser.astro │ │ ├── LangTabs.astro │ │ ├── LangTabsExtended.astro │ │ ├── LangTabsSelector.astro │ │ ├── LangTabsSimple.astro │ │ ├── LangVariantsTabs.astro │ │ ├── OSTabs.astro │ │ ├── PackageManagerTabs.astro │ │ ├── PythonFrameworkTabs.astro │ │ ├── RequestTabs.astro │ │ ├── RuntimeTabs.astro │ │ ├── StaticEngineTabs.astro │ │ ├── TabGroup.css │ │ ├── Tabs.module.css │ │ ├── Tabs.tsx │ │ ├── TabsSelector.scss │ │ ├── TabsSelector.tsx │ │ ├── store.ts │ │ └── useTabState.ts │ ├── Teletype │ │ ├── Icons │ │ │ ├── ArrowRight.svelte │ │ │ ├── ColorSwatch.svelte │ │ │ ├── Desktop.svelte │ │ │ ├── Discord.svelte │ │ │ ├── DocSearch.svelte │ │ │ ├── Folder.svelte │ │ │ ├── Login.svelte │ │ │ ├── Logout.svelte │ │ │ ├── Moon.svelte │ │ │ ├── Page.svelte │ │ │ ├── Sun.svelte │ │ │ └── Support.svelte │ │ ├── Teletype.svelte │ │ ├── TeletypeContainer.astro │ │ ├── TeletypeDocs.svelte │ │ ├── TeletypeWrapper.svelte │ │ └── search.ts │ ├── core │ │ ├── AstroLogo.svelte │ │ ├── Button │ │ │ ├── Button.svelte │ │ │ └── IconButton.svelte │ │ ├── Dropdown │ │ │ └── Dropdown.svelte │ │ ├── Icon │ │ │ ├── Icon.svelte │ │ │ ├── IconArrowLeft.svelte │ │ │ ├── IconArrowNarrowRight.svelte │ │ │ ├── IconArrowRight.svelte │ │ │ ├── IconBolt.svelte │ │ │ ├── IconBook2.svelte │ │ │ ├── IconChevronDown.svelte │ │ │ ├── IconChevronLeft.svelte │ │ │ ├── IconChevronRight.svelte │ │ │ ├── IconChevronUp.svelte │ │ │ ├── IconChevronsLeft.svelte │ │ │ ├── IconChevronsRight.svelte │ │ │ ├── IconCopy.svelte │ │ │ ├── IconDownload.svelte │ │ │ ├── IconExternalLink.svelte │ │ │ ├── IconHammer.svelte │ │ │ ├── IconHome.svelte │ │ │ ├── IconList.svelte │ │ │ ├── IconListNumbers.svelte │ │ │ ├── IconMenu2.svelte │ │ │ ├── IconMoon.svelte │ │ │ ├── IconRocket.svelte │ │ │ ├── IconSearch.svelte │ │ │ ├── IconSelector.svelte │ │ │ ├── IconSun.svelte │ │ │ └── IconX.svelte │ │ └── clouds │ │ │ ├── BuildCloud.svelte │ │ │ ├── LearnCloud.svelte │ │ │ ├── PublishCloud.svelte │ │ │ ├── TestCloud.svelte │ │ │ └── UseCloud.svelte │ └── docs │ │ ├── Article │ │ ├── Article.svelte │ │ ├── ArticleHeader.svelte │ │ ├── Breadcrumbs.svelte │ │ ├── Card │ │ │ ├── CardList.svelte │ │ │ └── TextCard.svelte │ │ ├── CodeBlock │ │ │ └── CodeBlock.astro │ │ ├── NextPreviousButtons.astro │ │ ├── TableOfContents │ │ │ ├── DesktopTableOfContents.svelte │ │ │ └── MobileTableOfContents.svelte │ │ ├── Tabs │ │ │ ├── Tab.svelte │ │ │ ├── TabContent.svelte │ │ │ ├── TabExample.svelte │ │ │ └── Tabs.svelte │ │ └── article.scss │ │ ├── Collapsible │ │ └── Collapsible.svelte │ │ ├── Footer │ │ └── Footer.svelte │ │ ├── Header │ │ ├── CodeLanguageSwitcher.svelte │ │ ├── Header.svelte │ │ ├── OpenCanvasButton.svelte │ │ └── ThemeToggle.svelte │ │ ├── SideNav │ │ ├── Collapsible │ │ │ ├── Collapsible.svelte │ │ │ └── CollapsibleGroup.svelte │ │ ├── NavFolder.svelte │ │ ├── NavItem.svelte │ │ ├── NavSection.svelte │ │ ├── SideNav.svelte │ │ ├── SideNavTab.svelte │ │ └── SideNavback.svelte │ │ └── Tabs │ │ ├── Tabs.astro │ │ └── Tabs.svelte ├── config.ts ├── content │ ├── config.ts │ └── docs │ │ ├── _manifest.json │ │ ├── build │ │ ├── faq.md │ │ ├── fundamentals │ │ │ ├── app-lifecycle.md │ │ │ ├── data-storage.mdx │ │ │ ├── development │ │ │ │ ├── builder-instance.mdx │ │ │ │ ├── builder.md │ │ │ │ ├── debugging.mdx │ │ │ │ ├── index.md │ │ │ │ ├── local-development.mdx │ │ │ │ ├── projects.md │ │ │ │ └── pushing.md │ │ │ ├── index.md │ │ │ ├── space-cli.mdx │ │ │ └── the-space-runtime │ │ │ │ ├── actions.mdx │ │ │ │ ├── authentication.md │ │ │ │ ├── configuration.md │ │ │ │ ├── domains.md │ │ │ │ ├── index.md │ │ │ │ └── micros.md │ │ ├── guides │ │ │ ├── accessing-client-ip-address.md │ │ │ ├── build-a-to-do-app.mdx │ │ │ ├── index.md │ │ │ └── public-site.md │ │ ├── index.mdx │ │ ├── new-apps.mdx │ │ ├── quick-starts │ │ │ ├── custom.md │ │ │ ├── go.md │ │ │ ├── index.md │ │ │ ├── next.md │ │ │ ├── node.md │ │ │ ├── nuxt.md │ │ │ ├── python.mdx │ │ │ ├── rust.md │ │ │ ├── static.mdx │ │ │ └── sveltekit.md │ │ ├── reference │ │ │ ├── cli.md │ │ │ ├── deta-base │ │ │ │ ├── expiring-items.mdx │ │ │ │ ├── index.md │ │ │ │ └── queries.md │ │ │ ├── drive.md │ │ │ ├── http-api │ │ │ │ ├── base.mdx │ │ │ │ ├── drive.mdx │ │ │ │ └── index.md │ │ │ ├── index.md │ │ │ ├── runtime.md │ │ │ ├── sdk │ │ │ │ ├── base.mdx │ │ │ │ ├── drive.mdx │ │ │ │ ├── examples.mdx │ │ │ │ ├── index.mdx │ │ │ │ └── types.mdx │ │ │ └── spacefile.md │ │ ├── space-apps.md │ │ ├── space-kit.md │ │ ├── test.mdx │ │ └── typo.md │ │ ├── index.md │ │ ├── learn │ │ ├── index.mdx │ │ ├── what-is-pc.md │ │ └── why-the-pc.md │ │ ├── publish │ │ ├── app-icons.md │ │ ├── discovery-md.md │ │ ├── growing-your-app.md │ │ ├── index.mdx │ │ └── releasing.md │ │ ├── sunset │ │ └── index.mdx │ │ └── use │ │ ├── index.mdx │ │ ├── interface.md │ │ ├── sharing.md │ │ ├── space-apps │ │ ├── actions.md │ │ ├── discovery.md │ │ ├── domains.md │ │ ├── index.md │ │ ├── logs.md │ │ ├── settings.md │ │ └── using-apps.md │ │ ├── your-account.md │ │ └── your-data │ │ ├── collections.md │ │ ├── exports.mdx │ │ ├── guis.mdx │ │ └── index.md ├── env.d.ts ├── generate-indexes.ts ├── languages.ts ├── layouts │ ├── BlogLayout.astro │ ├── BlogListLayout.astro │ ├── DocsPageLayout.astro │ └── MainLayout.astro ├── pages │ ├── blog │ │ ├── hello-world.md │ │ ├── horizons-themes-sharing.md │ │ ├── index.astro │ │ ├── introducing-space.md │ │ ├── merging-space.md │ │ ├── moving-to-space.md │ │ ├── newsletter-1.md │ │ ├── on-halting-signups.md │ │ ├── post-1.mdx │ │ ├── post-10.mdx │ │ ├── post-11.mdx │ │ ├── post-12.mdx │ │ ├── post-13.mdx │ │ ├── post-14.mdx │ │ ├── post-15.mdx │ │ ├── post-16.mdx │ │ ├── post-17.mdx │ │ ├── post-18.mdx │ │ ├── post-2.mdx │ │ ├── post-3.mdx │ │ ├── post-4.mdx │ │ ├── post-5.mdx │ │ ├── post-6.mdx │ │ ├── post-7.mdx │ │ ├── post-8.mdx │ │ ├── post-9.mdx │ │ ├── pwas.md │ │ ├── space-os.md │ │ ├── space-voyagers.md │ │ └── sprint-to-space.md │ └── docs │ │ ├── en │ │ ├── [...slug].astro │ │ ├── index.astro │ │ └── intro.md │ │ └── index.astro ├── styles │ ├── blogOverride.scss │ ├── fonts.css │ ├── global.scss │ ├── index.css │ ├── new.css │ ├── old-index.css │ ├── tailwind.css │ └── theme.css └── utils │ ├── cache.ts │ ├── changelogs.ts │ ├── clickOutside.ts │ ├── content.ts │ ├── metadata.ts │ └── storedWritable.ts ├── svelte.config.js ├── tailwind.config.cjs ├── tsconfig.json └── yarn.lock /.github/deta.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.github/workflows/dispatch.yml: -------------------------------------------------------------------------------- 1 | name: dispatch-deployment-event 2 | 3 | on: 4 | push: 5 | branches: [ "main" ] 6 | workflow_dispatch: 7 | 8 | jobs: 9 | dispatch-sync-event: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Repository Dispatch 13 | uses: peter-evans/repository-dispatch@v2 14 | with: 15 | repository: deta/satellite 16 | token: ${{ secrets.SATELLITE_ACCESS_TOKEN }} 17 | event-type: sync-space-docs 18 | -------------------------------------------------------------------------------- /.github/workflows/pull_request.yml: -------------------------------------------------------------------------------- 1 | name: pull-request 2 | 3 | on: 4 | push: 5 | branches: [ "main" ] 6 | pull_request: 7 | branches: [ "main" ] 8 | 9 | jobs: 10 | build: 11 | name: Build 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v3 16 | 17 | - name: Use Node.js v16.x 18 | uses: actions/setup-node@v3 19 | with: 20 | node-version: v16.x 21 | 22 | - name: Install Dependencies 23 | run: yarn install --ignore-optional 24 | 25 | - name: Build Astro App 26 | run: yarn build -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | 4 | .turbo 5 | .astro/ 6 | 7 | # dependencies 8 | node_modules/ 9 | 10 | # logs 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | 17 | # environment variables 18 | .env 19 | .env.production 20 | 21 | # macOS-specific files 22 | .DS_Store 23 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | # Expose Astro dependencies for `pnpm` users 2 | shamefully-hoist=true -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": false, 3 | "singleQuote": false, 4 | "trailingComma": "none", 5 | "semi": true, 6 | "printWidth": 100, 7 | "tabWidth": 2, 8 | "proseWrap": "preserve", 9 | "bracketSpacing": true, 10 | "bracketSameLine": true 11 | } 12 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["astro-build.astro-vscode"], 3 | "unwantedRecommendations": [] 4 | } 5 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "command": "./node_modules/.bin/astro dev", 6 | "name": "Development server", 7 | "request": "launch", 8 | "type": "node-terminal" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": false 3 | } -------------------------------------------------------------------------------- /astro.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "astro/config"; 2 | import svelte from "@astrojs/svelte"; 3 | import mdx from "@astrojs/mdx"; 4 | import fs from "fs/promises"; 5 | import astroExpressiveCode from 'astro-expressive-code' 6 | 7 | // TODO(@maxu): Remove these once we have them migrated! 8 | import react from "@astrojs/react"; 9 | import preact from "@astrojs/preact"; 10 | import rehypeSlug from "rehype-slug"; 11 | import rehypeAutolinkHeadings from "rehype-autolink-headings"; 12 | import {generateIndexPages} from './src/generate-indexes' 13 | import tailwind from '@astrojs/tailwind' 14 | 15 | const headingIcon = (node) => { 16 | let e = new HTMLSpanElement(); 17 | e.innerText = "🔗 asid"; 18 | return [e]; 19 | }; 20 | 21 | // https://astro.build/config 22 | export default defineConfig({ 23 | integrations: [astroExpressiveCode(), mdx(), svelte(), preact(), react(), tailwind()], 24 | site: "https://deta.space/", 25 | base: "/", 26 | markdown: { 27 | rehypePlugins: [ 28 | rehypeSlug, 29 | [rehypeAutolinkHeadings, { behavior: "wrap", content: headingIcon }] 30 | ] 31 | }, 32 | experimental: { 33 | viewTransitions: true 34 | }, 35 | vite: { 36 | build: { 37 | rollupOptions: { 38 | external: 39 | process.env.PUBLIC_TELETYPE_INSTALLED === "true" ? [] : ["@deta/teletype/src/index"], 40 | output: { 41 | assetFileNames: (assetInfo) => { 42 | let extType = assetInfo.name.split(".").at(1); 43 | if (/png|jpe?g|svg|gif|tiff|bmp|ico/i.test(extType)) extType = "img"; 44 | return `docs_assets/${extType}/[name]-[hash][extname]`; 45 | }, 46 | chunkFileNames: "docs_chunks/[name]-[hash].js", 47 | entryFileNames: "docs_assets/js/[name]-[hash].js" 48 | } 49 | } 50 | } 51 | } 52 | }); 53 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@deta/docs", 3 | "version": "0.0.1", 4 | "type": "module", 5 | "private": true, 6 | "license": "MIT", 7 | "homepage": "https://deta.space", 8 | "scripts": { 9 | "dev": "PUBLIC_TELETYPE_INSTALLED=false astro dev", 10 | "dev:tty": "PUBLIC_TELETYPE_INSTALLED=true astro dev", 11 | "generate-indexes": "node scripts/generate-indexes.js", 12 | "start": "astro dev", 13 | "check": "astro check && tsc", 14 | "prebuild": "npm run generate-indexes", 15 | "build": "astro build", 16 | "build:tty": "PUBLIC_TELETYPE_INSTALLED=true astro build", 17 | "preview": "astro preview", 18 | "astro": "astro" 19 | }, 20 | "dependencies": { 21 | "@astrojs/node": "^5.1.3", 22 | "@astrojs/tailwind": "^4.0.0", 23 | "astro-expressive-code": "^0.19.0", 24 | "express": "^4.18.1", 25 | "meilisearch": "^0.28.0", 26 | "rehype-autolink-headings": "^6.1.1", 27 | "rehype-slug": "^5.1.0", 28 | "tailwindcss": "^3.3.3" 29 | }, 30 | "devDependencies": { 31 | "@astrojs/mdx": "^0.19.6", 32 | "@astrojs/preact": "^2.2.1", 33 | "@astrojs/react": "^2.2.1", 34 | "@astrojs/svelte": "^2.2.0", 35 | "@nanostores/preact": "^0.2.1", 36 | "@tsconfig/svelte": "^3.0.0", 37 | "@types/node": "^18.0.0", 38 | "@types/react": "^18.2.6", 39 | "@types/react-dom": "^18.2.4", 40 | "astro": "^2.10", 41 | "date-fns": "^2.29.3", 42 | "focus-svelte": "^0.3.4", 43 | "fuse.js": "^6.6.2", 44 | "nanostores": "^0.6.0", 45 | "node-html-parser": "^6.1.0", 46 | "preact": "^10.14.1", 47 | "react": "^18.2.0", 48 | "react-dom": "^18.2.0", 49 | "remark-directive": "^2.0.1", 50 | "sass": "^1.62.1", 51 | "scule": "^0.3.2", 52 | "svelte": "^3.59.1", 53 | "svelte-navigator": "^3.2.2" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /public/blog_assets/02/01-space-sprint.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/02/01-space-sprint.webp -------------------------------------------------------------------------------- /public/blog_assets/03/01-moving-to-space.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/03/01-moving-to-space.webp -------------------------------------------------------------------------------- /public/blog_assets/03/02-cloud-ui.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/03/02-cloud-ui.webp -------------------------------------------------------------------------------- /public/blog_assets/03/03-space-ui.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/03/03-space-ui.webp -------------------------------------------------------------------------------- /public/blog_assets/03/04-collections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/03/04-collections.png -------------------------------------------------------------------------------- /public/blog_assets/04/build-yourself.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/04/build-yourself.webp -------------------------------------------------------------------------------- /public/blog_assets/04/builder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/04/builder.png -------------------------------------------------------------------------------- /public/blog_assets/04/canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/04/canvas.png -------------------------------------------------------------------------------- /public/blog_assets/04/collections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/04/collections.png -------------------------------------------------------------------------------- /public/blog_assets/04/run-it.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/04/run-it.webp -------------------------------------------------------------------------------- /public/blog_assets/04/whats-next.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/04/whats-next.webp -------------------------------------------------------------------------------- /public/blog_assets/17/embed-one.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/17/embed-one.webp -------------------------------------------------------------------------------- /public/blog_assets/17/embed-two.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/17/embed-two.webp -------------------------------------------------------------------------------- /public/blog_assets/17/mobile-new-two.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/17/mobile-new-two.webp -------------------------------------------------------------------------------- /public/blog_assets/17/mobile-new.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/17/mobile-new.webp -------------------------------------------------------------------------------- /public/blog_assets/17/mobile-old.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/17/mobile-old.webp -------------------------------------------------------------------------------- /public/blog_assets/18/tela.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/18/tela.webp -------------------------------------------------------------------------------- /public/blog_assets/230125-newspace.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/230125-newspace.webp -------------------------------------------------------------------------------- /public/blog_assets/230125-old-domains.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/230125-old-domains.webp -------------------------------------------------------------------------------- /public/blog_assets/action-panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/action-panel.png -------------------------------------------------------------------------------- /public/blog_assets/base-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/base-ui.png -------------------------------------------------------------------------------- /public/blog_assets/browser-sdk.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/browser-sdk.webp -------------------------------------------------------------------------------- /public/blog_assets/builder-develop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/builder-develop.png -------------------------------------------------------------------------------- /public/blog_assets/builder-new-release.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/builder-new-release.png -------------------------------------------------------------------------------- /public/blog_assets/clear-app-data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/clear-app-data.png -------------------------------------------------------------------------------- /public/blog_assets/clouds-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/clouds-bg.png -------------------------------------------------------------------------------- /public/blog_assets/delete-account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/delete-account.png -------------------------------------------------------------------------------- /public/blog_assets/delete-app-keep-data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/delete-app-keep-data.png -------------------------------------------------------------------------------- /public/blog_assets/delete-collection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/delete-collection.png -------------------------------------------------------------------------------- /public/blog_assets/deta-cloud-welcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/deta-cloud-welcome.png -------------------------------------------------------------------------------- /public/blog_assets/deta-collections.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/deta-collections.webp -------------------------------------------------------------------------------- /public/blog_assets/discovery-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/discovery-list.png -------------------------------------------------------------------------------- /public/blog_assets/discovery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/discovery.png -------------------------------------------------------------------------------- /public/blog_assets/duel.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/duel.webp -------------------------------------------------------------------------------- /public/blog_assets/edit-mode.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/edit-mode.gif -------------------------------------------------------------------------------- /public/blog_assets/export-data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/export-data.png -------------------------------------------------------------------------------- /public/blog_assets/horizon-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/horizon-1.png -------------------------------------------------------------------------------- /public/blog_assets/horizon-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/horizon-2.png -------------------------------------------------------------------------------- /public/blog_assets/horizon-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/horizon-3.png -------------------------------------------------------------------------------- /public/blog_assets/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/img.png -------------------------------------------------------------------------------- /public/blog_assets/img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/img2.png -------------------------------------------------------------------------------- /public/blog_assets/instance-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/instance-logs.png -------------------------------------------------------------------------------- /public/blog_assets/instance-update-available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/instance-update-available.png -------------------------------------------------------------------------------- /public/blog_assets/interop-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/interop-1.png -------------------------------------------------------------------------------- /public/blog_assets/interop-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/interop-2.png -------------------------------------------------------------------------------- /public/blog_assets/interop-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/interop-3.png -------------------------------------------------------------------------------- /public/blog_assets/listing-builds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/listing-builds.png -------------------------------------------------------------------------------- /public/blog_assets/manage-release.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/manage-release.png -------------------------------------------------------------------------------- /public/blog_assets/multi-horizons.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/multi-horizons.webp -------------------------------------------------------------------------------- /public/blog_assets/newsletters/01/edit-mode.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/newsletters/01/edit-mode.webp -------------------------------------------------------------------------------- /public/blog_assets/newsletters/01/newsletter-1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/newsletters/01/newsletter-1.webp -------------------------------------------------------------------------------- /public/blog_assets/pwas-android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/pwas-android.png -------------------------------------------------------------------------------- /public/blog_assets/pwas-desktop-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/pwas-desktop-1.png -------------------------------------------------------------------------------- /public/blog_assets/pwas-desktop-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/pwas-desktop-2.png -------------------------------------------------------------------------------- /public/blog_assets/pwas-headline.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/pwas-headline.gif -------------------------------------------------------------------------------- /public/blog_assets/pwas-ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/pwas-ios.png -------------------------------------------------------------------------------- /public/blog_assets/pwas-launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/pwas-launcher.png -------------------------------------------------------------------------------- /public/blog_assets/raycast-extension-discovery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/raycast-extension-discovery.png -------------------------------------------------------------------------------- /public/blog_assets/release-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/release-card.png -------------------------------------------------------------------------------- /public/blog_assets/release-notes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/release-notes.png -------------------------------------------------------------------------------- /public/blog_assets/sharing.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/sharing.webp -------------------------------------------------------------------------------- /public/blog_assets/shirt.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/shirt.webp -------------------------------------------------------------------------------- /public/blog_assets/space-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/space-canvas.png -------------------------------------------------------------------------------- /public/blog_assets/space-os.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/space-os.png -------------------------------------------------------------------------------- /public/blog_assets/teletype-install-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/teletype-install-update.png -------------------------------------------------------------------------------- /public/blog_assets/teletype-new-actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/teletype-new-actions.png -------------------------------------------------------------------------------- /public/blog_assets/teletype-project-actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/teletype-project-actions.png -------------------------------------------------------------------------------- /public/blog_assets/unlist-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/unlist-project.png -------------------------------------------------------------------------------- /public/blog_assets/voyagers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/blog_assets/voyagers.webp -------------------------------------------------------------------------------- /public/docs_assets/archive/collections/base-item-unsaved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/collections/base-item-unsaved.png -------------------------------------------------------------------------------- /public/docs_assets/archive/collections/data-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/collections/data-keys.png -------------------------------------------------------------------------------- /public/docs_assets/archive/collections/empty-base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/collections/empty-base.png -------------------------------------------------------------------------------- /public/docs_assets/archive/collections/empty-collection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/collections/empty-collection.png -------------------------------------------------------------------------------- /public/docs_assets/archive/collections/empty-drive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/collections/empty-drive.png -------------------------------------------------------------------------------- /public/docs_assets/archive/collections/nothing-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/collections/nothing-open.png -------------------------------------------------------------------------------- /public/docs_assets/archive/collections/select-resource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/collections/select-resource.png -------------------------------------------------------------------------------- /public/docs_assets/archive/collections/tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/collections/tabs.png -------------------------------------------------------------------------------- /public/docs_assets/archive/collections/uploaded-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/collections/uploaded-file.png -------------------------------------------------------------------------------- /public/docs_assets/archive/custom_domains/custom-domain-pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/custom_domains/custom-domain-pending.png -------------------------------------------------------------------------------- /public/docs_assets/archive/guides/accessing-client-ip-address/cloudflare-proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/guides/accessing-client-ip-address/cloudflare-proxy.png -------------------------------------------------------------------------------- /public/docs_assets/archive/instance/context_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/instance/context_menu.png -------------------------------------------------------------------------------- /public/docs_assets/archive/schedules/configure-schedule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/schedules/configure-schedule.png -------------------------------------------------------------------------------- /public/docs_assets/archive/schedules/new-schedule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/schedules/new-schedule.png -------------------------------------------------------------------------------- /public/docs_assets/archive/schedules/schedule-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/archive/schedules/schedule-view.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-headline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-headline.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-1.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-10.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-11.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-12.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-2.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-3.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-4.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-5.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-6.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-7.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-8.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-9.png -------------------------------------------------------------------------------- /public/docs_assets/build/builder-instance-headline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/builder-instance-headline.png -------------------------------------------------------------------------------- /public/docs_assets/build/cli-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/cli-1.png -------------------------------------------------------------------------------- /public/docs_assets/build/cli-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/cli-2.png -------------------------------------------------------------------------------- /public/docs_assets/build/cli-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/cli-3.png -------------------------------------------------------------------------------- /public/docs_assets/build/custom-domains-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/custom-domains-1.png -------------------------------------------------------------------------------- /public/docs_assets/build/custom-domains-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/custom-domains-2.png -------------------------------------------------------------------------------- /public/docs_assets/build/data-storage-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/data-storage-1.png -------------------------------------------------------------------------------- /public/docs_assets/build/data-storage-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/data-storage-2.png -------------------------------------------------------------------------------- /public/docs_assets/build/data-storage-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/data-storage-3.png -------------------------------------------------------------------------------- /public/docs_assets/build/data-storage-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/data-storage-4.png -------------------------------------------------------------------------------- /public/docs_assets/build/data-storage-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/data-storage-5.png -------------------------------------------------------------------------------- /public/docs_assets/build/debugging-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/debugging-1.png -------------------------------------------------------------------------------- /public/docs_assets/build/debugging-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/debugging-2.png -------------------------------------------------------------------------------- /public/docs_assets/build/intro-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/intro-1.png -------------------------------------------------------------------------------- /public/docs_assets/build/intro-components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/intro-components.png -------------------------------------------------------------------------------- /public/docs_assets/build/intro-ideas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/intro-ideas.png -------------------------------------------------------------------------------- /public/docs_assets/build/local-development-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/local-development-1.png -------------------------------------------------------------------------------- /public/docs_assets/build/local-development-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/local-development-2.png -------------------------------------------------------------------------------- /public/docs_assets/build/local-development-headline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/local-development-headline.png -------------------------------------------------------------------------------- /public/docs_assets/build/new-apps-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/new-apps-1.png -------------------------------------------------------------------------------- /public/docs_assets/build/new-apps-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/new-apps-2.png -------------------------------------------------------------------------------- /public/docs_assets/build/new-apps-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/new-apps-3.png -------------------------------------------------------------------------------- /public/docs_assets/build/new-apps-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/new-apps-4.png -------------------------------------------------------------------------------- /public/docs_assets/build/new-apps-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/new-apps-5.png -------------------------------------------------------------------------------- /public/docs_assets/build/new-apps-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/new-apps-6.png -------------------------------------------------------------------------------- /public/docs_assets/build/new-apps-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/new-apps-7.png -------------------------------------------------------------------------------- /public/docs_assets/build/projects-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/projects-2.png -------------------------------------------------------------------------------- /public/docs_assets/build/projects-builder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/projects-builder.png -------------------------------------------------------------------------------- /public/docs_assets/build/projects-develop-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/projects-develop-config.png -------------------------------------------------------------------------------- /public/docs_assets/build/projects-develop-data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/projects-develop-data.png -------------------------------------------------------------------------------- /public/docs_assets/build/projects-develop-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/projects-develop-overview.png -------------------------------------------------------------------------------- /public/docs_assets/build/projects-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/projects-id.png -------------------------------------------------------------------------------- /public/docs_assets/build/projects-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/projects-overview.png -------------------------------------------------------------------------------- /public/docs_assets/build/projects-release.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/projects-release.png -------------------------------------------------------------------------------- /public/docs_assets/build/pushing-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/pushing-1.png -------------------------------------------------------------------------------- /public/docs_assets/build/todo-tutorial-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/todo-tutorial-1.png -------------------------------------------------------------------------------- /public/docs_assets/build/todo-tutorial-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/build/todo-tutorial-2.png -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/anime/1anime.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/anime/1anime.gif -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/anime/2anime.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/anime/2anime.gif -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/anime/3anime.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/anime/3anime.gif -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/anime/4anime.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/anime/4anime.gif -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/anime/deta-build.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/anime/deta-build.gif -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/anime/deta-publish.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/anime/deta-publish.gif -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/anime/deta-use-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/anime/deta-use-2.gif -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/anime/deta-use.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/anime/deta-use.gif -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/build.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/build.gif -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/cloud-cartoon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/cloud-cartoon.png -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/favicon.png -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/pink-cloud-painted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/pink-cloud-painted.png -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/pink-cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/pink-cloud.png -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/sparkles.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/sparkles.gif -------------------------------------------------------------------------------- /public/docs_assets/cloud-illustrations/transparent-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/cloud-illustrations/transparent-background.png -------------------------------------------------------------------------------- /public/docs_assets/guides/accessing-client-ip-address/cloudflare-proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/guides/accessing-client-ip-address/cloudflare-proxy.png -------------------------------------------------------------------------------- /public/docs_assets/instance/context_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/instance/context_menu.png -------------------------------------------------------------------------------- /public/docs_assets/publish/discovery-md-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/discovery-md-1.png -------------------------------------------------------------------------------- /public/docs_assets/publish/growing-your-app-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/growing-your-app-1.png -------------------------------------------------------------------------------- /public/docs_assets/publish/growing-your-app-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/growing-your-app-2.png -------------------------------------------------------------------------------- /public/docs_assets/publish/icon-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/icon-1.png -------------------------------------------------------------------------------- /public/docs_assets/publish/icon-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/icon-2.png -------------------------------------------------------------------------------- /public/docs_assets/publish/icon-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/icon-3.png -------------------------------------------------------------------------------- /public/docs_assets/publish/icon-4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/icon-4.gif -------------------------------------------------------------------------------- /public/docs_assets/publish/icons-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/icons-1.png -------------------------------------------------------------------------------- /public/docs_assets/publish/icons-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/icons-2.png -------------------------------------------------------------------------------- /public/docs_assets/publish/icons-3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/icons-3.gif -------------------------------------------------------------------------------- /public/docs_assets/publish/icons-headline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/icons-headline.png -------------------------------------------------------------------------------- /public/docs_assets/publish/intro-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/intro-1.png -------------------------------------------------------------------------------- /public/docs_assets/publish/releasing-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/releasing-1.png -------------------------------------------------------------------------------- /public/docs_assets/publish/releasing-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/releasing-2.png -------------------------------------------------------------------------------- /public/docs_assets/publish/releasing-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/releasing-3.png -------------------------------------------------------------------------------- /public/docs_assets/publish/releasing-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/releasing-4.png -------------------------------------------------------------------------------- /public/docs_assets/publish/releasing-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/releasing-5.png -------------------------------------------------------------------------------- /public/docs_assets/publish/releasing-headline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/publish/releasing-headline.png -------------------------------------------------------------------------------- /public/docs_assets/sunset/builder-instance-download-source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/sunset/builder-instance-download-source.png -------------------------------------------------------------------------------- /public/docs_assets/sunset/builder-instance-export.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/sunset/builder-instance-export.webp -------------------------------------------------------------------------------- /public/docs_assets/sunset/collection-export.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/sunset/collection-export.webp -------------------------------------------------------------------------------- /public/docs_assets/sunset/horizon-export.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/sunset/horizon-export.webp -------------------------------------------------------------------------------- /public/docs_assets/sunset/horizon-unzipped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/sunset/horizon-unzipped.png -------------------------------------------------------------------------------- /public/docs_assets/sunset/installed-app-export.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/sunset/installed-app-export.webp -------------------------------------------------------------------------------- /public/docs_assets/sunset/installed-app-exports.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/sunset/installed-app-exports.png -------------------------------------------------------------------------------- /public/docs_assets/sunset/pinned-app-export.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/sunset/pinned-app-export.webp -------------------------------------------------------------------------------- /public/docs_assets/sunset/post-sunset-comms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/sunset/post-sunset-comms.png -------------------------------------------------------------------------------- /public/docs_assets/sunset/release-source-code.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/sunset/release-source-code.webp -------------------------------------------------------------------------------- /public/docs_assets/use/account-deletion-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/account-deletion-1.png -------------------------------------------------------------------------------- /public/docs_assets/use/actions-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/actions-1.png -------------------------------------------------------------------------------- /public/docs_assets/use/actions-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/actions-2.png -------------------------------------------------------------------------------- /public/docs_assets/use/actions-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/actions-3.png -------------------------------------------------------------------------------- /public/docs_assets/use/actions-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/actions-4.png -------------------------------------------------------------------------------- /public/docs_assets/use/collections-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/collections-1.png -------------------------------------------------------------------------------- /public/docs_assets/use/collections-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/collections-2.png -------------------------------------------------------------------------------- /public/docs_assets/use/collections-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/collections-3.png -------------------------------------------------------------------------------- /public/docs_assets/use/collections-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/collections-4.png -------------------------------------------------------------------------------- /public/docs_assets/use/collections-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/collections-5.png -------------------------------------------------------------------------------- /public/docs_assets/use/collections-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/collections-6.png -------------------------------------------------------------------------------- /public/docs_assets/use/collections-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/collections-7.png -------------------------------------------------------------------------------- /public/docs_assets/use/collections-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/collections-app.png -------------------------------------------------------------------------------- /public/docs_assets/use/collections-headline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/collections-headline.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-1.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-10.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-11.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-12.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-13.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-2.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-3.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-4.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-5.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-6.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-7.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-8.png -------------------------------------------------------------------------------- /public/docs_assets/use/data-guis-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/data-guis-9.png -------------------------------------------------------------------------------- /public/docs_assets/use/discovery-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/discovery-1.png -------------------------------------------------------------------------------- /public/docs_assets/use/discovery-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/discovery-2.png -------------------------------------------------------------------------------- /public/docs_assets/use/discovery-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/discovery-3.png -------------------------------------------------------------------------------- /public/docs_assets/use/discovery-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/discovery-4.png -------------------------------------------------------------------------------- /public/docs_assets/use/discovery-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/discovery-5.png -------------------------------------------------------------------------------- /public/docs_assets/use/discovery-headline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/discovery-headline.png -------------------------------------------------------------------------------- /public/docs_assets/use/domains-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/domains-1.png -------------------------------------------------------------------------------- /public/docs_assets/use/domains-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/domains-2.png -------------------------------------------------------------------------------- /public/docs_assets/use/domains-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/domains-3.png -------------------------------------------------------------------------------- /public/docs_assets/use/domains-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/domains-4.png -------------------------------------------------------------------------------- /public/docs_assets/use/export-data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/export-data.png -------------------------------------------------------------------------------- /public/docs_assets/use/export-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/export-delete.png -------------------------------------------------------------------------------- /public/docs_assets/use/export-download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/export-download.png -------------------------------------------------------------------------------- /public/docs_assets/use/interop-headline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/interop-headline.png -------------------------------------------------------------------------------- /public/docs_assets/use/intro-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/intro-1.png -------------------------------------------------------------------------------- /public/docs_assets/use/intro-space-apps-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/intro-space-apps-1.png -------------------------------------------------------------------------------- /public/docs_assets/use/logs-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/logs-1.png -------------------------------------------------------------------------------- /public/docs_assets/use/logs-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/logs-2.png -------------------------------------------------------------------------------- /public/docs_assets/use/settings-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/settings-1.png -------------------------------------------------------------------------------- /public/docs_assets/use/settings-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/settings-2.png -------------------------------------------------------------------------------- /public/docs_assets/use/settings-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/settings-3.png -------------------------------------------------------------------------------- /public/docs_assets/use/settings-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/settings-4.png -------------------------------------------------------------------------------- /public/docs_assets/use/settings-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/settings-5.png -------------------------------------------------------------------------------- /public/docs_assets/use/settings-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/settings-6.png -------------------------------------------------------------------------------- /public/docs_assets/use/settings-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/settings-7.png -------------------------------------------------------------------------------- /public/docs_assets/use/sharing-1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/sharing-1.webp -------------------------------------------------------------------------------- /public/docs_assets/use/sharing-2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/sharing-2.webp -------------------------------------------------------------------------------- /public/docs_assets/use/space-apps-headline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/space-apps-headline.png -------------------------------------------------------------------------------- /public/docs_assets/use/ui-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/ui-1.png -------------------------------------------------------------------------------- /public/docs_assets/use/ui-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/ui-2.png -------------------------------------------------------------------------------- /public/docs_assets/use/ui-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/ui-3.png -------------------------------------------------------------------------------- /public/docs_assets/use/ui-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/ui-4.png -------------------------------------------------------------------------------- /public/docs_assets/use/ui-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/ui-5.png -------------------------------------------------------------------------------- /public/docs_assets/use/ui-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/ui-6.png -------------------------------------------------------------------------------- /public/docs_assets/use/ui-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/ui-canvas.png -------------------------------------------------------------------------------- /public/docs_assets/use/ui-card-creation.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/ui-card-creation.webp -------------------------------------------------------------------------------- /public/docs_assets/use/ui-horizon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/ui-horizon.webp -------------------------------------------------------------------------------- /public/docs_assets/use/ui-teletype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/ui-teletype.png -------------------------------------------------------------------------------- /public/docs_assets/use/using-apps-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/using-apps-1.png -------------------------------------------------------------------------------- /public/docs_assets/use/using-apps-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/using-apps-2.png -------------------------------------------------------------------------------- /public/docs_assets/use/using-apps-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/using-apps-3.png -------------------------------------------------------------------------------- /public/docs_assets/use/using-apps-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/using-apps-4.png -------------------------------------------------------------------------------- /public/docs_assets/use/using-apps-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/using-apps-5.png -------------------------------------------------------------------------------- /public/docs_assets/use/using-apps-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/docs_assets/use/using-apps-6.png -------------------------------------------------------------------------------- /public/other_assets/ArticulatCF-DemiBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/other_assets/ArticulatCF-DemiBold.woff2 -------------------------------------------------------------------------------- /public/other_assets/ArticulatCF-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/other_assets/ArticulatCF-Regular.woff2 -------------------------------------------------------------------------------- /public/other_assets/CartographCF-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/other_assets/CartographCF-Regular.woff2 -------------------------------------------------------------------------------- /public/other_assets/deta_heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/other_assets/deta_heart.png -------------------------------------------------------------------------------- /public/other_assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deta/space-docs/37ceab69e9231a2f52fe0797e077192241195756/public/other_assets/favicon.png -------------------------------------------------------------------------------- /public/other_assets/make-scrollable-code-focusable.js: -------------------------------------------------------------------------------- 1 | Array.from(document.getElementsByTagName('pre')).forEach(element => { 2 | element.setAttribute('tabindex', '0') 3 | }) 4 | -------------------------------------------------------------------------------- /src/components/BlogHeader.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import AstroLogo from "./Header/AstroLogo.astro"; 3 | import SkipToContent from "./Header/SkipToContent.astro"; 4 | import ThemeToggle from "./Header/ThemeToggle.svelte"; 5 | import HeaderLinks from "./HeaderLinks.svelte"; 6 | --- 7 | 8 |
9 | 10 | 23 |
-------------------------------------------------------------------------------- /src/components/DetaHeart.astro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/HeadSEO.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { SITE, OPEN_GRAPH, Frontmatter } from '../config'; 3 | 4 | export interface Props { 5 | frontmatter: Frontmatter; 6 | canonicalUrl: URL; 7 | } 8 | 9 | const { frontmatter, canonicalUrl } = Astro.props as Props; 10 | const formattedContentTitle = `${frontmatter.title} 🚀 ${SITE.title}`; 11 | const imageSrc = frontmatter.image?.src ?? OPEN_GRAPH.image.src; 12 | const canonicalImageSrc = new URL(imageSrc, Astro.site); 13 | const imageAlt = frontmatter.image?.alt ?? OPEN_GRAPH.image.alt; 14 | --- 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 47 | -------------------------------------------------------------------------------- /src/components/Header/AstroLogo.astro: -------------------------------------------------------------------------------- 1 | --- 2 | type Props = { 3 | size: number; 4 | }; 5 | const { size } = Astro.props as Props; 6 | --- 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/components/Header/LanguageSelect.css: -------------------------------------------------------------------------------- 1 | .language-select { 2 | flex-grow: 1; 3 | width: 48px; 4 | box-sizing: border-box; 5 | margin: 0; 6 | padding: 0.33em 0.5em; 7 | overflow: visible; 8 | font-weight: 500; 9 | font-size: 1rem; 10 | font-family: inherit; 11 | line-height: inherit; 12 | background-color: var(--theme-bg); 13 | border-color: var(--theme-text-lighter); 14 | color: var(--theme-text-light); 15 | border-style: solid; 16 | border-width: 1px; 17 | border-radius: 0.25rem; 18 | outline: 0; 19 | cursor: pointer; 20 | transition-timing-function: ease-out; 21 | transition-duration: 0.2s; 22 | transition-property: border-color, color; 23 | -webkit-font-smoothing: antialiased; 24 | padding-left: 30px; 25 | padding-right: 1rem; 26 | } 27 | .language-select-wrapper .language-select:hover, 28 | .language-select-wrapper .language-select:focus { 29 | color: var(--theme-text); 30 | border-color: var(--theme-text-light); 31 | } 32 | .language-select-wrapper { 33 | color: var(--theme-text-light); 34 | position: relative; 35 | } 36 | .language-select-wrapper > svg { 37 | position: absolute; 38 | top: 7px; 39 | left: 10px; 40 | pointer-events: none; 41 | } 42 | 43 | @media (min-width: 50em) { 44 | .language-select { 45 | width: 100%; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/components/Header/LanguageSelect.tsx: -------------------------------------------------------------------------------- 1 | /** @jsxImportSource react */ 2 | import type { FunctionComponent } from 'react'; 3 | import './LanguageSelect.css'; 4 | import { KNOWN_LANGUAGES, langPathRegex } from '../../languages'; 5 | 6 | const LanguageSelect: FunctionComponent<{ lang: string }> = ({ lang }) => { 7 | return ( 8 |
9 | 27 | 45 |
46 | ); 47 | }; 48 | 49 | export default LanguageSelect; 50 | -------------------------------------------------------------------------------- /src/components/Header/NavLinks.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 | 33 | 34 | -------------------------------------------------------------------------------- /src/components/Header/Search.css: -------------------------------------------------------------------------------- 1 | /** Style Algolia */ 2 | :root { 3 | --docsearch-primary-color: var(--theme-accent); 4 | --docsearch-logo-color: var(--theme-text); 5 | } 6 | .search-input { 7 | flex-grow: 1; 8 | box-sizing: border-box; 9 | width: 100%; 10 | margin: 0; 11 | padding: 0.33em 0.5em; 12 | overflow: visible; 13 | font-weight: 500; 14 | font-size: 1rem; 15 | font-family: inherit; 16 | line-height: inherit; 17 | background-color: var(--theme-divider); 18 | border-color: var(--theme-divider); 19 | color: var(--theme-text-light); 20 | border-style: solid; 21 | border-width: 1px; 22 | border-radius: 0.25rem; 23 | outline: 0; 24 | cursor: pointer; 25 | transition-timing-function: ease-out; 26 | transition-duration: 0.2s; 27 | transition-property: border-color, color; 28 | -webkit-font-smoothing: antialiased; 29 | } 30 | .search-input:hover, 31 | .search-input:focus { 32 | color: var(--theme-text); 33 | border-color: var(--theme-text-light); 34 | } 35 | .search-input:hover::placeholder, 36 | .search-input:focus::placeholder { 37 | color: var(--theme-text-light); 38 | } 39 | .search-input::placeholder { 40 | color: var(--theme-text-light); 41 | } 42 | .search-hint { 43 | position: absolute; 44 | top: 7px; 45 | right: 19px; 46 | padding: 3px 5px; 47 | display: none; 48 | display: none; 49 | align-items: center; 50 | justify-content: center; 51 | letter-spacing: 0.125em; 52 | font-size: 13px; 53 | font-family: var(--font-mono); 54 | pointer-events: none; 55 | border-color: var(--theme-text-lighter); 56 | color: var(--theme-text-light); 57 | border-style: solid; 58 | border-width: 1px; 59 | border-radius: 0.25rem; 60 | line-height: 14px; 61 | } 62 | 63 | @media (min-width: 50em) { 64 | .search-hint { 65 | display: flex; 66 | } 67 | } 68 | 69 | /* ------------------------------------------------------------ *\ 70 | DocSearch (Algolia) 71 | \* ------------------------------------------------------------ */ 72 | 73 | .DocSearch-Modal .DocSearch-Hit a { 74 | box-shadow: none; 75 | border: 1px solid var(--theme-accent); 76 | } 77 | -------------------------------------------------------------------------------- /src/components/Header/SidebarToggle.tsx: -------------------------------------------------------------------------------- 1 | /** @jsxImportSource preact */ 2 | import type { FunctionalComponent } from 'preact'; 3 | import { useState, useEffect } from 'preact/hooks'; 4 | 5 | const MenuToggle: FunctionalComponent = () => { 6 | const [sidebarShown, setSidebarShown] = useState(false); 7 | 8 | useEffect(() => { 9 | const body = document.querySelector('body')!; 10 | if (sidebarShown) { 11 | body.classList.add('mobile-sidebar-toggle'); 12 | } else { 13 | body.classList.remove('mobile-sidebar-toggle'); 14 | } 15 | }, [sidebarShown]); 16 | 17 | return ( 18 | 41 | ); 42 | }; 43 | 44 | export default MenuToggle; 45 | -------------------------------------------------------------------------------- /src/components/Header/SkipToContent.astro: -------------------------------------------------------------------------------- 1 | --- 2 | type Props = {}; 3 | --- 4 | 5 | 6 | 7 | 27 | -------------------------------------------------------------------------------- /src/components/HeaderLinks.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 | 25 | -------------------------------------------------------------------------------- /src/components/Image.astro: -------------------------------------------------------------------------------- 1 | --- 2 | export interface Props { 3 | src: string 4 | alt?: string 5 | subtext?: string 6 | width?: string 7 | background?: boolean 8 | } 9 | const { src, alt, subtext, background = false, width = '500px' } = Astro.props as Props; 10 | --- 11 | 12 |
13 | {alt 14 | 15 | {subtext && 16 |
{subtext}
17 | } 18 |
-------------------------------------------------------------------------------- /src/components/PageContent/PageContent.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import type { Frontmatter } from '../../config'; 3 | import MoreMenu from '../RightSidebar/MoreMenu.astro'; 4 | import TableOfContents from '../RightSidebar/TableOfContents'; 5 | import type { MarkdownHeading } from 'astro'; 6 | 7 | type Props = { 8 | frontmatter: Frontmatter; 9 | headings: MarkdownHeading[]; 10 | githubEditUrl: string; 11 | }; 12 | 13 | const { frontmatter, headings, githubEditUrl } = Astro.props as Props; 14 | const title = frontmatter.title; 15 | --- 16 | 17 |
18 |
19 |

{title}

20 | 23 | 24 |
25 | 28 |
29 | 30 | 54 | -------------------------------------------------------------------------------- /src/components/RightSidebar/MoreMenu.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import * as CONFIG from '../../config'; 3 | 4 | type Props = { 5 | editHref: string; 6 | }; 7 | 8 | const { editHref } = Astro.props as Props; 9 | const showMoreSection = CONFIG.COMMUNITY_INVITE_URL; 10 | --- 11 | 12 | {showMoreSection &&

More

} 13 | 63 | 64 | 72 | -------------------------------------------------------------------------------- /src/components/RightSidebar/RightSidebar.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import TableOfContents from './TableOfContents'; 3 | import type { MarkdownHeading } from 'astro'; 4 | 5 | type Props = { 6 | headings: MarkdownHeading[]; 7 | githubEditUrl: string; 8 | }; 9 | 10 | const { headings, githubEditUrl } = Astro.props as Props; 11 | --- 12 | 13 | 18 | 19 | 33 | -------------------------------------------------------------------------------- /src/components/RightSidebar/TableOfContents.tsx: -------------------------------------------------------------------------------- 1 | import type { FunctionalComponent } from 'preact'; 2 | import { useState, useEffect, useRef } from 'preact/hooks'; 3 | import type { MarkdownHeading } from 'astro'; 4 | 5 | type ItemOffsets = { 6 | id: string; 7 | topOffset: number; 8 | }; 9 | 10 | const TableOfContents: FunctionalComponent<{ headings: MarkdownHeading[] }> = ({ 11 | headings = [], 12 | }) => { 13 | const itemOffsets = useRef([]); 14 | // FIXME: Not sure what this state is doing. It was never set to anything truthy. 15 | const [activeId] = useState(''); 16 | useEffect(() => { 17 | const getItemOffsets = () => { 18 | const titles = document.querySelectorAll('article :is(h1, h2, h3, h4)'); 19 | itemOffsets.current = Array.from(titles).map((title) => ({ 20 | id: title.id, 21 | topOffset: title.getBoundingClientRect().top + window.scrollY, 22 | })); 23 | }; 24 | 25 | getItemOffsets(); 26 | window.addEventListener('resize', getItemOffsets); 27 | 28 | return () => { 29 | window.removeEventListener('resize', getItemOffsets); 30 | }; 31 | }, []); 32 | 33 | return ( 34 | <> 35 |

On this page

36 | 49 | 50 | ); 51 | }; 52 | 53 | export default TableOfContents; 54 | -------------------------------------------------------------------------------- /src/components/Tabs/InterfaceTabs.astro: -------------------------------------------------------------------------------- 1 | 2 | --- 3 | import Tabs from "@/components/Tabs/Tabs"; 4 | --- 5 | 6 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/components/Tabs/InterfaceTabsExtended.astro: -------------------------------------------------------------------------------- 1 | 2 | --- 3 | import Tabs from "@/components/Tabs/Tabs"; 4 | --- 5 | 6 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/components/Tabs/InterfaceTabsUser.astro: -------------------------------------------------------------------------------- 1 | 2 | --- 3 | import Tabs from "@/components/Tabs/Tabs"; 4 | --- 5 | 6 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/components/Tabs/LangTabs.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Tabs from "@/components/Tabs/Tabs"; 3 | --- 4 | 5 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/components/Tabs/LangTabsExtended.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Tabs from "@/components/Tabs/Tabs"; 3 | --- 4 | 5 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/components/Tabs/LangTabsSelector.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import TabsSelector from "@/components/Tabs/TabsSelector"; 3 | --- 4 | 5 | 16 | -------------------------------------------------------------------------------- /src/components/Tabs/LangTabsSimple.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Tabs from "@/components/Tabs/Tabs"; 3 | --- 4 | 5 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/components/Tabs/LangVariantsTabs.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Tabs from "@/components/Tabs/Tabs"; 3 | --- 4 | 5 | = 1.0.0)", value: "current" }, 11 | { label: "Legacy (< 1.0.0)", value: "legacy" } 12 | ]} 13 | > 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/components/Tabs/OSTabs.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Tabs from "@/components/Tabs/Tabs"; 3 | --- 4 | 5 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/components/Tabs/PackageManagerTabs.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Tabs from "@/components/Tabs/Tabs"; 3 | --- 4 | 5 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/components/Tabs/PythonFrameworkTabs.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Tabs from "@/components/Tabs/Tabs"; 3 | --- 4 | 5 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/components/Tabs/RequestTabs.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Tabs from "@/components/Tabs/Tabs"; 3 | --- 4 | 5 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/components/Tabs/RuntimeTabs.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Tabs from "@/components/Tabs/Tabs"; 3 | --- 4 | 5 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/components/Tabs/StaticEngineTabs.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Tabs from "@/components/Tabs/Tabs"; 3 | --- 4 | 5 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/components/Tabs/TabGroup.css: -------------------------------------------------------------------------------- 1 | .TabGroup { 2 | display: flex; 3 | border-bottom: 4px solid var(--theme-divider); 4 | } 5 | 6 | .TabGroup button, 7 | .TabGroup a { 8 | flex: 1; 9 | justify-content: center; 10 | white-space: nowrap; 11 | border-radius: 0; 12 | cursor: pointer; 13 | padding: 0.6rem 1rem; 14 | color: var(--theme-text-light); 15 | border-bottom: 3px solid transparent; 16 | margin-bottom: -4px; 17 | background-color: transparent; 18 | text-decoration: none; 19 | scroll-margin-top: 5rem; 20 | } 21 | .TabGroup .active, 22 | .TabGroup [aria-selected="true"] { 23 | color: var(--theme-accent); 24 | border-bottom-color: var(--theme-accent); 25 | font-weight: 500; 26 | } 27 | 28 | @media (forced-colors: active) { 29 | .TabGroup { 30 | border-bottom-color: Canvas; 31 | } 32 | 33 | .TabGroup .active { 34 | color: ButtonText; 35 | border-bottom-color: ButtonText; 36 | } 37 | 38 | .TabGroup a, .TabGroup button { 39 | color: LinkText; 40 | border-bottom-color: Canvas; 41 | } 42 | } 43 | 44 | .TabGroup.no-flex button, 45 | .TabGroup.no-flex a { 46 | flex: 0; 47 | } 48 | 49 | /* Align tab text with block edges. */ 50 | .TabGroup.pull-wide { 51 | margin-inline-start: -1rem; 52 | } -------------------------------------------------------------------------------- /src/components/Tabs/Tabs.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | padding-block: 1rem; 3 | padding-block-start: 0; 4 | position: relative; 5 | } 6 | 7 | .tab-scroll-overflow { 8 | margin-inline-start: -1rem; 9 | overflow-x: scroll; 10 | /* Hide scrollbar on firefox */ 11 | scrollbar-width: none; 12 | } 13 | 14 | .tab-scroll-overflow::-webkit-scrollbar { 15 | /* Hide scrollbar on chrome / safari */ 16 | display: none; 17 | } 18 | 19 | .tab:focus { 20 | outline: none; 21 | border-bottom-color: var(--theme-accent); 22 | } 23 | 24 | .tab:not(:focus-visible) { 25 | outline: 0; 26 | } 27 | 28 | .tabpanel { 29 | padding-block-start: 1rem; 30 | } 31 | 32 | .tablist { 33 | position: relative; 34 | } 35 | 36 | .selectedIndicator { 37 | position: absolute; 38 | transform-origin: left; 39 | left: 0; 40 | bottom: -4px; 41 | height: 4px; 42 | background-color: var(--theme-accent); 43 | } 44 | 45 | @media (forced-colors: active) { 46 | .selectedIndicator { 47 | background-color: ButtonText; 48 | } 49 | } 50 | 51 | @media (prefers-reduced-motion: no-preference) { 52 | .selectedIndicator { 53 | transition-duration: 200ms; 54 | } 55 | } -------------------------------------------------------------------------------- /src/components/Tabs/TabsSelector.tsx: -------------------------------------------------------------------------------- 1 | import type { ComponentChildren } from 'preact'; 2 | import { useEffect, useRef } from 'preact/hooks'; 3 | 4 | import './TabsSelector.scss'; 5 | import { useTabState } from './useTabState'; 6 | 7 | const panelSlotKey = 'panel.' as const; 8 | type PanelSlot = `${typeof panelSlotKey}${string}`; 9 | 10 | type Tab = { 11 | label: string; 12 | value: string; 13 | } 14 | 15 | type Props = { 16 | [key: PanelSlot]: ComponentChildren; 17 | sharedStore?: string; 18 | defaultTab?: string; 19 | placeholder?: string; 20 | tabs: Tab[]; 21 | }; 22 | 23 | export default function Tabs({ placeholder, sharedStore, defaultTab, tabs, ...slots }: Props) { 24 | const scrollToTabRef = useRef(null); 25 | 26 | const [curr, setCurr] = useTabState(defaultTab || tabs[0].value, sharedStore); 27 | 28 | useEffect(( ) => { 29 | const searchParams = new URLSearchParams(window.location.search); 30 | const tabSlot = searchParams.get(sharedStore || 'tab'); 31 | const existingTab = tabs.some((tab) => tab.value === tabSlot); 32 | if (tabSlot && existingTab) setCurr(tabSlot); 33 | }, []); 34 | 35 | function updateCurr(tabSlot: string, el: HTMLButtonElement | null) { 36 | if (sharedStore) { 37 | // Prevents scroll jumping due to layout shift 38 | // from other tab views with the same store 39 | scrollToTabRef.current = el; 40 | } 41 | 42 | setCurr(tabSlot); 43 | } 44 | 45 | return ( 46 |
47 | 55 |
56 | ); 57 | } -------------------------------------------------------------------------------- /src/components/Tabs/store.ts: -------------------------------------------------------------------------------- 1 | import { atom, map } from 'nanostores' 2 | 3 | type TabStore = { 4 | [key: string]: { 5 | curr: string 6 | } 7 | } 8 | 9 | export const tabId = atom(0) 10 | export const tabStore = map({}) 11 | 12 | export function genTabId() { 13 | const id = tabId.get() 14 | tabId.set(id + 1) 15 | return id 16 | } 17 | -------------------------------------------------------------------------------- /src/components/Tabs/useTabState.ts: -------------------------------------------------------------------------------- 1 | import { useState } from 'preact/hooks' 2 | import { useStore } from '@nanostores/preact' 3 | import { tabStore } from './store' 4 | 5 | export function useTabState( 6 | initialCurr: string, 7 | storeKey?: string 8 | ): [string, (curr: string) => void] { 9 | const $tabStore = useStore(tabStore) 10 | // Use localState when no storeKey is provided 11 | // Would be nice to conditionally create this but alas... 12 | // hooks can't use conditionals :( 13 | const localState = useState(initialCurr) 14 | if (!storeKey) return localState 15 | 16 | const curr = $tabStore[storeKey]?.curr ?? initialCurr 17 | function setCurr(newCurr) { 18 | if (storeKey) { 19 | tabStore.setKey(storeKey, { curr: newCurr }) 20 | } else { 21 | throw new Error( 22 | '[Tabs] Looks like a sharedStore key is no longer present on your tab view! If your store key is dynamic, consider using a static string value instead.' 23 | ) 24 | } 25 | } 26 | 27 | return [curr, setCurr] 28 | } 29 | -------------------------------------------------------------------------------- /src/components/Teletype/Icons/ArrowRight.svelte: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 | -------------------------------------------------------------------------------- /src/components/Teletype/Icons/ColorSwatch.svelte: -------------------------------------------------------------------------------- 1 |
2 | 9 | 14 | 15 |
16 | -------------------------------------------------------------------------------- /src/components/Teletype/Icons/Desktop.svelte: -------------------------------------------------------------------------------- 1 |
2 | 3 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/components/Teletype/Icons/Discord.svelte: -------------------------------------------------------------------------------- 1 |
2 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 |
22 | -------------------------------------------------------------------------------- /src/components/Teletype/Icons/DocSearch.svelte: -------------------------------------------------------------------------------- 1 |
2 | 3 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/components/Teletype/Icons/Folder.svelte: -------------------------------------------------------------------------------- 1 |
2 | 9 | 14 | 15 |
16 | -------------------------------------------------------------------------------- /src/components/Teletype/Icons/Login.svelte: -------------------------------------------------------------------------------- 1 |
2 | 3 | 10 | 14 | 15 |
16 | -------------------------------------------------------------------------------- /src/components/Teletype/Icons/Logout.svelte: -------------------------------------------------------------------------------- 1 |
2 | 3 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/components/Teletype/Icons/Moon.svelte: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /src/components/Teletype/Icons/Page.svelte: -------------------------------------------------------------------------------- 1 |
2 | 9 | 14 | 15 |
16 | -------------------------------------------------------------------------------- /src/components/Teletype/Icons/Sun.svelte: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /src/components/Teletype/Icons/Support.svelte: -------------------------------------------------------------------------------- 1 |
2 | 9 | 14 | 15 |
16 | -------------------------------------------------------------------------------- /src/components/Teletype/TeletypeContainer.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import TeletypeWrapper from './TeletypeWrapper.svelte' 3 | --- 4 | 5 | -------------------------------------------------------------------------------- /src/components/Teletype/TeletypeWrapper.svelte: -------------------------------------------------------------------------------- 1 | 19 | 20 | {#if Teletype} 21 | 22 | {/if} 23 | -------------------------------------------------------------------------------- /src/components/core/AstroLogo.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/components/core/Button/Button.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /src/components/core/Button/IconButton.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 14 | 15 | 48 | -------------------------------------------------------------------------------- /src/components/core/Icon/Icon.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 19 | 20 | 21 | 22 | 33 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconArrowLeft.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconArrowNarrowRight.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconArrowRight.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconBolt.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconBook2.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconChevronDown.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconChevronLeft.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconChevronRight.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconChevronUp.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconChevronsLeft.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconChevronsRight.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconCopy.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconDownload.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 12 | 17 | 18 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconExternalLink.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconHammer.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 11 | 18 | 19 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconHome.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconList.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconListNumbers.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconMenu2.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconMoon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconRocket.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconSearch.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconSelector.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/components/core/Icon/IconX.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/components/core/clouds/BuildCloud.svelte: -------------------------------------------------------------------------------- 1 |
2 | for position 3 |
4 |
5 |
6 |
7 | 8 | -------------------------------------------------------------------------------- /src/components/core/clouds/LearnCloud.svelte: -------------------------------------------------------------------------------- 1 |
2 | for position 3 |
4 |
5 |
6 |
7 | 8 | -------------------------------------------------------------------------------- /src/components/core/clouds/PublishCloud.svelte: -------------------------------------------------------------------------------- 1 |
2 | for position 3 |
4 |
5 |
6 |
7 | 8 | -------------------------------------------------------------------------------- /src/components/core/clouds/UseCloud.svelte: -------------------------------------------------------------------------------- 1 |
2 | for position 3 |
4 |
5 |
6 |
7 | 8 | -------------------------------------------------------------------------------- /src/components/docs/Article/Card/CardList.svelte: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | 6 | -------------------------------------------------------------------------------- /src/components/docs/Article/Card/TextCard.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |
7 |
8 | 9 |
10 |

11 | 12 |

13 |
14 |
15 | 16 |
17 |
18 | 19 | -------------------------------------------------------------------------------- /src/components/docs/Article/Tabs/Tab.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 22 | 23 |
  • 24 | 25 |
  • 26 | -------------------------------------------------------------------------------- /src/components/docs/Article/Tabs/TabContent.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
    15 | 16 |
    17 | 18 | -------------------------------------------------------------------------------- /src/components/docs/Article/Tabs/TabExample.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |

    Tab example

    10 | 11 | 12 | 13 | Tab 1 14 | Tab 2 15 | Tab 3 16 | 17 | 18 | Tab 1 content 19 | Tab 2 content 20 | Tab 3 content 21 | 22 | -------------------------------------------------------------------------------- /src/components/docs/Article/Tabs/Tabs.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 |
    11 |
      12 | 13 |
    14 | 15 | 16 |
    17 | 18 | -------------------------------------------------------------------------------- /src/components/docs/Collapsible/Collapsible.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
    8 | 9 | 10 | {#if code} 11 | {title} 12 | {:else} 13 | {title} 14 | {/if} 15 | 16 | 17 |
    18 | 19 |
    20 |
    21 | 22 | -------------------------------------------------------------------------------- /src/components/docs/Footer/Footer.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 28 | -------------------------------------------------------------------------------- /src/components/docs/Header/CodeLanguageSwitcher.svelte: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/components/docs/Header/OpenCanvasButton.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | {#if loading} 16 | 17 | {:else if isAuthenticated} 18 | 19 |
    20 | Horizon 21 |
    22 | {:else} 23 | 24 | Login to Space 25 | 26 | {/if} 27 | 28 | -------------------------------------------------------------------------------- /src/components/docs/Header/ThemeToggle.svelte: -------------------------------------------------------------------------------- 1 | 19 | 20 | 43 | 44 | 45 | {#if theme === "light"} 46 | 47 | {:else} 48 | 49 | {/if} 50 | 51 | -------------------------------------------------------------------------------- /src/components/docs/SideNav/Collapsible/Collapsible.svelte: -------------------------------------------------------------------------------- 1 | 24 | 25 |
    26 | summary 27 |
    28 | 29 |
    30 |
    31 | 32 | -------------------------------------------------------------------------------- /src/components/docs/SideNav/Collapsible/CollapsibleGroup.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | -------------------------------------------------------------------------------- /src/components/docs/Tabs/Tabs.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Tabs from "@/components/docs/Tabs/Tabs.svelte"; 3 | 4 | --- 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/components/docs/Tabs/Tabs.svelte: -------------------------------------------------------------------------------- 1 | 7 | 16 | 17 |
    18 |
    19 |
    20 | {#each tabs as tab} 21 | 27 | {/each} 28 |
    29 |
    30 | tasbbs 31 |
    32 | 33 | 36 | 37 | -------------------------------------------------------------------------------- /src/config.ts: -------------------------------------------------------------------------------- 1 | export const SITE = { 2 | title: 'Space Docs', 3 | description: 'Deta Space Developer Documentation and Guides', 4 | defaultLanguage: 'en_US', 5 | } 6 | 7 | export const docsSectionsOrder = ['Overview', 'Basics', 'Reference', 'SDK', 'HTTP API', 'Quickstart Guides', 'Guides', 'Other'] 8 | 9 | export const OPEN_GRAPH = { 10 | image: { 11 | src: '', 12 | alt: '', 13 | }, 14 | twitter: 'detahq', 15 | } 16 | 17 | // This is the type of the frontmatter you put in the changelogs markdown files. 18 | export type FrontmatterBlog = { 19 | title: string 20 | date: string 21 | layout: '@blogs' 22 | description?: string 23 | topic?: string 24 | } 25 | 26 | // This is the type of the frontmatter you put in the docs markdown files. 27 | export type Frontmatter = { 28 | title: string 29 | description: string 30 | layout: string 31 | image?: { src: string; alt: string } 32 | dir?: 'ltr' | 'rtl' 33 | ogLocale?: string 34 | lang?: string 35 | } 36 | 37 | export const KNOWN_LANGUAGES = { 38 | English: 'en', 39 | } as const 40 | export const KNOWN_LANGUAGE_CODES = Object.values(KNOWN_LANGUAGES) 41 | 42 | export const GITHUB_EDIT_URL = `https://github.com/deta/space-docs/tree/main/src/pages/en` 43 | 44 | export const COMMUNITY_INVITE_URL = `https://go.deta.dev/discord` 45 | 46 | import { parseManifestSection, generateOrderedNavigationItems } from "@/utils/content"; 47 | import manifest from "@/content/docs/_manifest.json"; 48 | export const NAV_TREE = parseManifestSection(manifest, undefined); 49 | export const NAV_ORDER = generateOrderedNavigationItems([manifest], '/'); 50 | -------------------------------------------------------------------------------- /src/content/config.ts: -------------------------------------------------------------------------------- 1 | // 1. Import utilities from `astro:content` 2 | import { z, defineCollection } from "astro:content"; 3 | // 2. Define your collection(s) 4 | export const docsSchema = z.object({ 5 | title: z.string().optional(), 6 | tocDepth: z.number().optional(), 7 | excerpt: z.string().optional() 8 | }); 9 | export const docsCollection = defineCollection({ 10 | schema: docsSchema 11 | }); 12 | /*const changelogCollection = defineCollection({}); 13 | const blogCollection = defineCollection({}); 14 | */ 15 | // 3. Export a single `collections` object to register your collection(s) 16 | // This key should match your collection directory name in "src/content" 17 | export const collections = { 18 | docs: docsCollection, 19 | //changelog: changelogCollection, 20 | //blog: blogCollection 21 | }; 22 | -------------------------------------------------------------------------------- /src/content/docs/build/fundamentals/development/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Development 3 | layout: '@layouts/DocsPageLayout.astro' 4 | autogenerated: true 5 | --- 6 | 7 | Pages in this section: 8 | 9 | - [Builder Instance](/docs/en/build/fundamentals/development/builder-instance) 10 | - [Builder](/docs/en/build/fundamentals/development/builder) 11 | - [Debugging](/docs/en/build/fundamentals/development/debugging) 12 | - [Local Development](/docs/en/build/fundamentals/development/local-development) 13 | - [Projects](/docs/en/build/fundamentals/development/projects) 14 | - [Pushing](/docs/en/build/fundamentals/development/pushing) 15 | -------------------------------------------------------------------------------- /src/content/docs/build/fundamentals/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Fundamentals 3 | layout: '@layouts/DocsPageLayout.astro' 4 | autogenerated: true 5 | --- 6 | 7 | Pages in this section: 8 | 9 | - [App Lifecycle](/docs/en/build/fundamentals/app-lifecycle) 10 | - [Data Storage](/docs/en/build/fundamentals/data-storage) 11 | - [Development](/docs/en/build/fundamentals/development) 12 | - [Space Cli](/docs/en/build/fundamentals/space-cli) 13 | - [The Space Runtime](/docs/en/build/fundamentals/the-space-runtime) 14 | -------------------------------------------------------------------------------- /src/content/docs/build/fundamentals/the-space-runtime/domains.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Domains 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | 6 | Every Space app you install as well as your Builder Instances come with a unique Built In Domain as well as support for Custom Domains. 7 | 8 | The Built In Space domain is of the form `.deta.app`, while Custom Domains support most domains ([here is a list of unsupported TLDs](https://help.zerossl.com/hc/en-us/articles/360060119833-Restricted-Countries)). 9 | 10 | Read more about using [Domains on Space in the User Manual](/docs/en/use/space-apps/domains). -------------------------------------------------------------------------------- /src/content/docs/build/guides/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Guides 3 | layout: '@layouts/DocsPageLayout.astro' 4 | autogenerated: true 5 | --- 6 | 7 | Pages in this section: 8 | 9 | - [Accessing Client Ip Address](/docs/en/build/guides/accessing-client-ip-address) 10 | - [Build A To Do App](/docs/en/build/guides/build-a-to-do-app) 11 | - [Public Site](/docs/en/build/guides/public-site) 12 | -------------------------------------------------------------------------------- /src/content/docs/build/guides/public-site.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Create a Public Site 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | 6 | Although Space is optimized for running single-user full-stack apps, you can also use it to host public static websites. This is useful if you want to host a personal website or a landing page for your app. 7 | 8 | ## Making a Micro public 9 | 10 | Every app on Space can contain up to 5 [Micros](/docs/en/build/fundamentals/the-space-runtime/micros), which are private by default. You can make individual Micros public using the app's [`Spacefile`](/docs/en/build/fundamentals/the-space-runtime#the-spacefile). Just set the `public` flag to `true` for each Micro you want to publicize. 11 | 12 | Example: 13 | 14 | ```yaml 15 | micros: 16 | - name: frontend 17 | src: . 18 | engine: svelte 19 | primary: true 20 | public: true 21 | ``` 22 | 23 | Only the Micro with the `primary` flag set to `true` will be served on the root domain. The other Micros will be served on their respective paths under the root domain. For example, if a Micro is named `api` (or has the `path` property set to `api`), it will be served on `https://app-name.deta.app/api`. Read more about Micro routing [here](/docs/en/build/fundamentals/the-space-runtime/micros#micro-routing). 24 | 25 | 26 | > __Note:__ `public: true` is just a shorthand for `public_routes: ["/*"]`. We recommend using [`public_routes`](/docs/en/build/reference/spacefile#public_routes) instead if you need more customization. 27 | 28 | ## Connecting a custom domain 29 | 30 | You can set up a custom domain for your app, read more in the [User Manual](/docs/en/use/space-apps/domains#custom-domains). 31 | -------------------------------------------------------------------------------- /src/content/docs/build/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Build 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | 6 | import BuildCloud from "@cmp/core/clouds/BuildCloud.svelte"; 7 | 8 | 9 | 10 | Welcome to Deta Space. You're on an exciting journey building for a whole new cloud computer that's designed around you. We're glad to have you here. 11 | 12 | Unlike other cloud computers you've built for, Space is also a personal computer. You can build apps for yourself and you can [use](/docs/en/use) and extend [3rd party apps](/docs/en/use/space-apps/discovery) that put you in the drivers seat. 13 | 14 | You can also [share your creations with the world](/docs/en/publish). And when you do, others can run your apps on their own cloud computer. 15 | What this means is that you don't need to think about servers, databases, global availability, any of it. 16 | 17 | This section is going to help you get started building for Space. Check out: 18 | - the [New App Guide](/docs/en/build/new-apps) to build a new app 19 | - the [Quick Starts](/docs/en/build/quick-starts) to get a "Hello World" running in your favorite programming language 20 | - an [overview of Space apps](/docs/en/build/space-apps) 21 | - the [Fundamentals](/docs/en/build/fundamentals/) section for a deep dive on building for Space 22 | 23 | Let's get going. 24 | -------------------------------------------------------------------------------- /src/content/docs/build/quick-starts/custom.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Run a Custom App 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | 6 | Deta Space supports most runtimes and frameworks out of the box without much configuration. The only requirements you have to keep in mind are: 7 | 8 | - All web servers need to run on the port specified in the environment variable `PORT` 9 | - 250 MB is the max size of the package 10 | -------------------------------------------------------------------------------- /src/content/docs/build/quick-starts/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Quick Starts 3 | layout: '@layouts/DocsPageLayout.astro' 4 | autogenerated: true 5 | --- 6 | 7 | Pages in this section: 8 | 9 | - [Custom](/docs/en/build/quick-starts/custom) 10 | - [Go](/docs/en/build/quick-starts/go) 11 | - [Next](/docs/en/build/quick-starts/next) 12 | - [Node](/docs/en/build/quick-starts/node) 13 | - [Nuxt](/docs/en/build/quick-starts/nuxt) 14 | - [Python](/docs/en/build/quick-starts/python) 15 | - [Rust](/docs/en/build/quick-starts/rust) 16 | - [Static](/docs/en/build/quick-starts/static) 17 | - [Sveltekit](/docs/en/build/quick-starts/sveltekit) 18 | -------------------------------------------------------------------------------- /src/content/docs/build/reference/deta-base/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Deta Base 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | 6 | Deta Base is a fully-managed, fast, scalable and secure NoSQL database with a focus on end-user simplicity. You can use Deta Base as part of a [Space App](/docs/en/build/space-apps), or on its own as part of a [Headless Collection](/docs/en/use/your-data/collections#headless-collections). 7 | 8 | 9 | Outside of Space Apps, you can interact with Deta Base through a [Graphical User Interface](/docs/en/use/your-data/guis#base-ui), [SDK](/docs/en/build/reference/sdk/base), or [HTTP API](/docs/en/build/reference/http-api/base). Authentication to Base happens via [Data Keys](/docs/en/use/your-data/collections#data-keys). 10 | 11 | ## Getting started 12 | 13 | - [Dealing with data in a Space App](/docs/en/build/fundamentals/data-storage) 14 | - [Collections in Space](/docs/en/use/your-data/collections) 15 | - [Base UI](/docs/en/use/your-data/guis#base-ui) 16 | - [Base SDK](/docs/en/build/reference/sdk/base) 17 | - [Base HTTP API](/docs/en/build/reference/http-api/base) 18 | 19 | ## Technical Notes 20 | 21 | ### Storing Numbers 22 | 23 | > ⚠️ Base currently supports **maximum 16 digit numbers** (integers and floating points), please store larger numbers as a string. 24 | 25 | -------------------------------------------------------------------------------- /src/content/docs/build/reference/drive.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Deta Drive 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | 6 | Deta Drive is a managed, secure and scalable file storage service with a focus on end-user simplicity. You can use Deta Drive as part of a [Space App](/docs/en/build/space-apps), or on its own as part of a [Headless Collection](/docs/en/use/your-data/collections#headless-collections). 7 | 8 | Outside of Space Apps, you can interact with Deta Base through a [Graphical User Interface](/docs/en/use/your-data/guis#drive-ui), [SDK](/docs/en/build/reference/sdk/drive), or [HTTP API](/docs/en/build/reference/http-api/drive). Authentication to Base happens via [Data Keys](/docs/en/use/your-data/collections#data-keys). 9 | 10 | ## Getting started 11 | 12 | - [Dealing with data in a Space App](/docs/en/build/fundamentals/data-storage) 13 | - [Collections in Space](/docs/en/use/your-data/collections) 14 | - [Drive UI](/docs/en/use/your-data/guis#drive-ui) 15 | - [Drive SDK](/docs/en/build/reference/sdk/drive) 16 | - [Drive HTTP API](/docs/en/build/reference/http-api/drive) 17 | -------------------------------------------------------------------------------- /src/content/docs/build/reference/http-api/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Deta HTTP API 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | 6 | The Deta HTTP API let's you to store and retrieve data from your Deta Base or Deta Drive in a [Collection](/docs/en/use/your-data/collections), directly over HTTP. 7 | 8 | Deta provides HTTP APIs for [Base](/docs/en/build/reference/http-api/base) and [Drive](/docs/en/build/reference/http-api/drive). 9 | 10 | ## Authentication 11 | 12 | A [Data Key](/docs/en/use/your-data/collections#data-keys) _must_ to be provided in the request **headers** as a value for the `X-API-Key` key for authentication. This is how we authorize your requests. 13 | 14 | Example `'X-API-Key: a0abcyxz_aSecretValue'`. 15 | 16 | > Data Keys were called Project Keys in earlier versions of Deta. -------------------------------------------------------------------------------- /src/content/docs/build/reference/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Reference 3 | layout: '@layouts/DocsPageLayout.astro' 4 | autogenerated: true 5 | --- 6 | 7 | Pages in this section: 8 | 9 | - [Cli](/docs/en/build/reference/cli) 10 | - [Deta Base](/docs/en/build/reference/deta-base) 11 | - [Drive](/docs/en/build/reference/drive) 12 | - [Http Api](/docs/en/build/reference/http-api) 13 | - [Runtime](/docs/en/build/reference/runtime) 14 | - [Sdk](/docs/en/build/reference/sdk) 15 | - [Spacefile](/docs/en/build/reference/spacefile) 16 | -------------------------------------------------------------------------------- /src/content/docs/build/space-kit.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Space Kit 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | 6 | Space OS is an [Operating System for the internet](https://deta.space/blog/space-os). SpaceKit is a set of tools for building personal web apps, called [Space Apps](/docs/en/build/space-apps). 7 | 8 | While the existing SpaceKit is actively being used by thousands of developers, Deta is developing SpaceKit 2.0 which will include primitives for building natively interoperable and AI powered web apps out of the box. 9 | 10 | If you're looking to build personal and interoperable web applications for Deta Space, make sure to apply for developer access [here](https://form.typeform.com/to/vtXiLA55). 11 | -------------------------------------------------------------------------------- /src/content/docs/build/typo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Typography Test 3 | excerpt: Base is the fastest way to store an item in a Base. If an item already exists under the given key, it will be replaced. In the case you do not provide a key, Base will automatically generate a 12-character string as a key. Base can also be used to store any additional data. 4 | layout: "@layouts/DocsPageLayout.astro" 5 | --- 6 | 7 | ## A secondary heading 8 | 9 | ### A tertiary heading 10 | 11 | #### Another heading 12 | ##### Another heading 13 | 14 | A Space app is different from a normal web app. Instead of one central app that serves many users, each user on Space will get their own personal copy of an app, in their own personal cloud. This is a simple but powerful difference that removes much of the complexity in building and distributing apps on the internet. It also pushes the boundaries of what a web app is, and what it can do. 15 | 16 | Here we have another paragraph which just displays the current margins. It also is a placeholder and should be replaced at some point, or not? 17 | Maybe it will jsut stay like this the entire time. 18 | 19 | ![intro-1](/docs_assets/use/space-apps-headline.png) 20 | 21 | Here is an example of an unordered list: 22 | 23 | - a simple authentication model that “just works” 24 | - support for your favorite programming languages & frameworks 25 | - We can even have neste items 26 | - Another one 27 | - and even a third 28 | - a suite of included services, from storing data to talking with AI models 29 | 30 | With these tools, you should find it easy to build all sorts of internet experiences for yourself — from simple websites to full stack applications that tie into the latest advances in AI. Once you have, it's even easier to publish your creation to almost anyone else in the world. 31 | 32 | ![discovery](/docs_assets/use/discovery-headline.png) 33 | 34 | ![intro-1](/docs_assets/use/space-apps-headline.png) 35 | 36 | There could also be an ordered list: 37 | 38 | 1. Foo bar 39 | 2. Some other cool item 40 | 3. some [Link Maybe](#)? 41 | 42 | ## Authentication -------------------------------------------------------------------------------- /src/content/docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Docs 3 | layout: '@layouts/DocsPageLayout.astro' 4 | autogenerated: true 5 | --- 6 | 7 | Pages in this section: 8 | 9 | - [Build](/docs/en/build) 10 | - [Learn](/docs/en/learn) 11 | - [Publish](/docs/en/publish) 12 | - [Use](/docs/en/use) 13 | -------------------------------------------------------------------------------- /src/content/docs/learn/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Learn 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | 6 | import LearnCloud from "@cmp/core/clouds/LearnCloud.svelte"; 7 | 8 | 9 | 10 | Deta is building a personal computer on the internet — "a personal cloud" — called Deta Space. If you build software for the internet, Space wants to make it dramatically easier to do so. If you're a user of the internet, Space wants to bring the freedom of personal computing to your life online. 11 | 12 | ## What's a personal cloud and why should I care? 13 | 14 | You likely already use web apps such as Google Docs, Figma, or ChatGPT. 15 | When you use them, you interact with big, remote, computers on the internet (”the cloud”). 16 | These computers are designed, and controlled, by the enterprises that provide each app. 17 | If you want these computers (and *your* data that they control) to work for *you* in ways *you'd like*, it's often difficult or impossible. 18 | 19 | A personal cloud is also a remote computer on the internet that runs web apps and stores data. But it's a computer that's **personal**, a computer designed around you. 20 | You control it — it's apps and data are yours to direct and unleash. 21 | 22 | If you're curious, you can read in more detail: 23 | - [What's a personal cloud](/docs/en/learn/what-is-pc) 24 | - [Why you should care](/docs/en/learn/why-the-pc) 25 | 26 | ## What about Deta Space? 27 | 28 | Deta Space is Deta's personal cloud. 29 | 30 | Space offers a growing catalogue of internet software for you to [use](/docs/en/use) and [discover](https://deta.space/discovery). 31 | You can also [build](/docs/en/build) apps for yourself, using friendly tools and languages you know and love. 32 | Last but not least, you can [publish](/docs/en/publish) your creations to the world in a single command or click. -------------------------------------------------------------------------------- /src/content/docs/publish/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Publish 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | import PublishCloud from "@cmp/core/clouds/PublishCloud.svelte"; 6 | 7 | 8 | 9 | With Deta Space, you can [build](/docs/en/build) something for yourself, and stop there. 10 | But thanks to [the personal cloud](/docs/en/learn/what-is-pc), you're also just one step away from sharing your app with the whole world. This is done via **Publishing** an app to [Deta Discovery](https://deta.space/discovery). 11 | 12 | Deta Discovery is a global library of software that's compatible with Space. It's open to anyone to contribute to and use. 13 | When you publish an app to Discovery, you can share it with a limited audience, or make it massively available to people around the world, without thinking about operating it ✨ at all ✨. 14 | 15 | ![releasing-headline](/docs_assets/publish/releasing-headline.png) 16 | 17 | Read more about publishing and growing your app: 18 | - Working with [releases](/docs/en/publish/releasing), the foundational publishing concept 19 | - Making your app stand-out with the [`Discovery.md`](/docs/en/publish/discovery-md) file 20 | - Designing an appealing [app icon](/docs/en/publish/app-icons) 21 | - Best practices for [growing your app](/docs/en/publish/growing-your-app) 22 | 23 | You can also read more about Deta Discovery, from the user perspective, in the [User Manual](/docs/en/use/space-apps/discovery). -------------------------------------------------------------------------------- /src/content/docs/use/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Use 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | import UseCloud from "@cmp/core/clouds/UseCloud.svelte"; 6 | 7 | 8 | 9 | Welcome to Deta Space. You're on an exciting journey with a whole new personal computer. We're glad to have you here. 10 | 11 | Unlike other personal computers you've used, your Space lives on the internet. So it's great at communicating with the rest of the world - with other information, computers, and people. And unlike other ways you already use the internet, Space puts you in the driver's seat. We think you'll love it. 12 | 13 | This section is going to help you get started using your Space. You'll learn how to: 14 | 15 | - navigate Space's [user interface](/docs/en/use/interface) 16 | - find, use, and manage [applications](/docs/en/use/space-apps) 17 | - manage and interact with your [data](/docs/en/use/your-data/collections) 18 | - manage [your account](/docs/en/use/your-account) 19 | 20 | We'll also crack the hood open a bit and explore a few powerful ways you can use your Space. 21 | 22 | Let's get going. -------------------------------------------------------------------------------- /src/content/docs/use/sharing.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Sharing 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | 6 | You can make any Horizon public and share your personal cloud with the world. 7 | 8 | To make a Horizon public click the 🌍 emoji in the Galactic Island at the bottom of any Horizon. 9 | 10 | ![share-1](/docs_assets/use/sharing-1.webp) 11 | 12 | Click "Share Your Horizon" to make it public. 13 | 14 | ## Public Link and Homepage 15 | 16 | By default, your Horizon will be available on a random path under your personal cloud computer's public link at `https://username.deta.page/`. 17 | 18 | You can update this `` by editing the input field shown. 19 | 20 | ![share-2](/docs_assets/use/sharing-2.webp) 21 | 22 | You can also make any Horizon your personal cloud computer's homepage by toggling (this will make the Horizon available under `https://username.deta.page/`). 23 | 24 | ## Shared Card Behavior 25 | 26 | On its public link, a Horizon's [Cards](/docs/en/use/interface#cards) behave differently than when you are logged in privately through deta.space. 27 | 28 | First, others will not be able to permanently modify anything. 29 | 30 | Second, not all cards are displayed, and for others, some things won't work the same. 31 | - Text, Embed, Link and Theme cards will display normally. 32 | - Custom Cards will display normally, except any interactions with Deta Base or Drive will not work. 33 | - Installed apps from Discovery will only show a link to the app's Discovery page. If the installed app is an unlisted release, it will not show on the public Horizon. 34 | - Builder Projects and Instances will not display on a public Horizon. 35 | 36 | -------------------------------------------------------------------------------- /src/content/docs/use/space-apps/logs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Logs 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | 6 | > 💡 This is a fairly technical feature of Deta Space. If you are not a software developer, you may not get much use out of it. 7 | 8 | Your application may log things to the Space system, like unexpected errors you run into as you use your app. You can learn more about what's going on behind the scenes by viewing your app's logs. 9 | 10 | 11 |
    12 | 13 | Open your app's context menu from the Horizon and click **View Logs** to open the Logs. If there are any logs, you will see them displayed in the **Runtime Logs** section. Individual logs are expandable by clicking on the `>` on the left side. 14 | 15 |
    16 | 17 | You can filter the logs by individual [Micros](/docs/en/build/fundamentals/the-space-runtime/micros), which are individual “units of compute” the app developer has used to build the app. Clicking the **Refresh** button will pull the latest logs from Space. 18 | 19 | In the future, you will be able to share the logs directly with the app developer. -------------------------------------------------------------------------------- /src/content/docs/use/your-account.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Your Account 3 | layout: "@layouts/DocsPageLayout.astro" 4 | --- 5 | 6 | ## Deleting Your Account 7 | 8 | You can submit a request to delete your account any time. After receiving your request, an automated job will delete your account and data within 30 days. 9 | 10 | In order to delete your account, login to your [Space Dashboard](https://deta.space), open [Teletype](/docs/en/use/interface#teletype), click on **Settings** and then navigate to the **Account** tab. 11 | 12 | Deleting your account will delete all your data, including your [Collections](/docs/en/use/your-data/collections) and all [apps](/docs/en/use/space-apps) you've installed. You will not be able to recover your data after deleting your account. 13 | 14 | 15 | ![delete-account](/docs_assets/use/account-deletion-1.png) 16 | 17 | ### Your published apps 18 | 19 | If you have published an app on Deta Space that has been installed by anyone else other than yourself, _the app will continue to be available on Deta Space even after you delete your account_. 20 | This is to ensure that the app continues to work for users who have installed it. 21 | 22 | If your published app was [listed](/docs/en/publish/releasing#releases), it will be [unlisted](/docs/en/publish/releasing#releases) after you delete your account. For the existing app [Discovery page](/docs/en/use/space-apps/discovery#app-discovery-pages), we will add a note that the app is no longer maintained. 23 | 24 | If no user has installed your app, it will be deleted. 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/content/docs/use/your-data/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Your Data 3 | layout: '@layouts/DocsPageLayout.astro' 4 | autogenerated: true 5 | --- 6 | 7 | Pages in this section: 8 | 9 | - [Collections](/docs/en/use/your-data/collections) 10 | - [Exports](/docs/en/use/your-data/exports) 11 | - [Guis](/docs/en/use/your-data/guis) 12 | -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /src/generate-indexes.ts: -------------------------------------------------------------------------------- 1 | import fs from 'fs/promises' 2 | import path from 'path' 3 | 4 | export async function generateIndexPages() { 5 | const buildDir = path.resolve('./src/content/docs/build') 6 | const folders = await fs.readdir(buildDir) 7 | const indexPages = [] 8 | 9 | console.log(folders) 10 | 11 | for (const folder of folders) { 12 | const folderPath = path.join(buildDir, folder) 13 | const folderStats = await fs.stat(folderPath) 14 | 15 | if (folderStats.isDirectory()) { 16 | const files = await fs.readdir(folderPath) 17 | const pages = files 18 | .filter((file) => file.endsWith('.html')) 19 | .map((file) => ({ 20 | path: path.join('/', folder, file).replace(/\.html$/, ''), 21 | title: file.replace(/\.html$/, ''), 22 | })) 23 | const content = `
      ${pages 24 | .map(({ path, title }) => `
    • ${title}
    • `) 25 | .join('')}
    ` 26 | 27 | indexPages.push({ 28 | path: `${folder}.html`, 29 | content: content, 30 | }) 31 | } 32 | } 33 | 34 | console.log('test') 35 | 36 | return indexPages 37 | } -------------------------------------------------------------------------------- /src/languages.ts: -------------------------------------------------------------------------------- 1 | import { KNOWN_LANGUAGES, KNOWN_LANGUAGE_CODES } from './config' 2 | export { KNOWN_LANGUAGES, KNOWN_LANGUAGE_CODES } 3 | 4 | export const langPathRegex = /\/([a-z]{2}-?[A-Z]{0,2})\// 5 | 6 | export function getLanguageFromURL(pathname: string) { 7 | const langCodeMatch = pathname.match(langPathRegex) 8 | const langCode = langCodeMatch ? langCodeMatch[1] : 'en' 9 | return langCode as typeof KNOWN_LANGUAGE_CODES[number] 10 | } 11 | -------------------------------------------------------------------------------- /src/pages/blog/hello-world.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Hello World" 3 | date: "28 Sep 2022" 4 | layout: "@blogs" 5 | description: Welcome to our changelog! 6 | --- 7 | 8 | Hello World! This is the Deta Space changelog. Here we regularly post about new features, bug fixes and improvements of Space. To learn more about Space itself visit [deta.space](https://deta.space) or take a look at our [docs](https://deta.space/docs). 9 | -------------------------------------------------------------------------------- /src/pages/blog/post-5.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: "API Keys" 3 | date: "01 Dec 2022" 4 | layout: "@blogs" 5 | description: "You can now enable API Keys for your app to connect to it programmatically from outside of Space." 6 | topic: "changelog" 7 | --- 8 | 9 | import DetaHeart from '@/components/DetaHeart.astro' 10 | 11 | Ever wanted to connect to your app programmatically without logging in with a browser? It's now possible thanks to API keys! 12 | 13 | ## Features 14 | 15 | ### API Keys 16 | 17 | If you want to allow access to a Micro's private routes you can now enable the `api_keys` preset for Micros in your Spacefile: 18 | 19 | ```yaml 20 | micros: 21 | - name: api 22 | src: ./api/ 23 | engine: python3.9 24 | presets: 25 | api_keys: true 26 | ``` 27 | 28 | If enabled, users of your app will be able to generate API keys in their app's settings and use them to make authenticated requests to otherwise private routes of a Micro. 29 | 30 | Here are some cool use cases that are now possible: 31 | 32 | - Connect to your app from a browser extension 33 | - Call an API route of your app from an external program 34 | - Let two Space apps talk to each other 35 | 36 | If you want to add API keys to your Space app, make sure to update your `space` CLI with `space version upgrade`. 37 | 38 | Learn more about API keys and how to use them in the [docs](/docs/en/basics/micros#api-keys). 39 | 40 | API keys are just the beginning, we have lots of other features around interoperability and access control planned for the future. Stay tuned! 41 | 42 | 43 | Thanks for being a crucial part in the early stages of Space and for all the great feedback we have received! 44 | -------------------------------------------------------------------------------- /src/pages/blog/post-6.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Data Keys" 3 | date: "07 Dec 2022" 4 | layout: "@blogs" 5 | description: "In addition to the API keys we released last week you can now generate Data keys to access your Bases and Drives from outside of your app or project." 6 | topic: "changelog" 7 | --- 8 | 9 | import DetaHeart from '@/components/DetaHeart.astro' 10 | import Image from '@/components/Image.astro' 11 | 12 | In addition to the API keys we released last week, you can now generate Data Keys to access your Bases and Drives from outside of your app or project. 13 | 14 | ## Features 15 | 16 | ### Data Keys 17 | 18 | With Data Keys you can now access your Bases and Drives from outside of an app or project. They allow you to read and manipulate your Space apps' data, and can be used to build custom integrations without explicit options (such as API Keys) from the app developer. 19 | 20 | However, manipulating the data can result in breaking your app, so use the keys with caution. 21 | 22 | To generate Data Keys, go to the "Data Keys" tab in your "Settings" for your installed apps. 23 | 24 | To use a Data Key, you can provide the key when initializing your `Deta` instance if you are using our official Deta SDKs. 25 | 26 | To check out an example of an app using Data Keys, checkout Port: https://deta.space/discovery/@maxs1/spaceport 27 | 28 | ### Teletype Action Panel 29 | 30 | We made some improvements to Teletype which includes a new action panel. The action panel shows up whenever a action in Teletype has more than one option. For example, when searching for an app you can now view its data or open the settings in addition to the default action of opening it. 31 | 32 | Teletype Action Panel 33 | 34 | ### Unpin Builder Instancess 35 | 36 | You can now unpin your Builder instances from your Horizon. Resources and configuration of Builder instances have moved to the redesigned develop page. 37 | 38 | Thanks for being a crucial part in the early stages of Space and for all the great feedback we have received! 39 | -------------------------------------------------------------------------------- /src/pages/blog/post-9.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Edit Mode & More" 3 | date: "23 Feb 2023" 4 | layout: "@blogs" 5 | description: "Edit apps’ data from the UI" 6 | topic: "changelog" 7 | --- 8 | 9 | import DetaHeart from "@/components/DetaHeart.astro"; 10 | import Image from "@/components/Image.astro"; 11 | 12 | Over the past few weeks, we have received a lot of requests from the community for features on Space. Today, we're officially announcing one of the top requests for Space Apps: **Edit Mode**. 13 | 14 | ## Introducing Edit Mode 15 | 16 | With **Edit Mode**, you can now edit the data in every app in your Space Horizon from the UI. 17 | 18 | Edit Mode 19 | 20 | To enable **Edit Mode** for any Space app, follow these simple steps. First, open an app's context menu by clicking on the (…) on the app's tile in your Space Horizon. Then click on the "View Data" button in the context menu, which will open the app's data modal. Within this modal, you can toggle on the **Edit Mode** switch to turn on **Edit Mode**. You will be prompted to confirm that you want to enable **Edit Mode**. After confirming, you can now edit any Base or Drive for your app. To do so, select the instance you want to edit in the drop-down, and then edit as you want, using the Base or Drive UI. 21 | 22 | > ⚠️ Please be cautious when making changes to your app's data. Editing an app's data directly can cause your app to break. 23 | 24 | ## Bug Fixes and Improvements 25 | 26 | - Increased the capacity for pushes to support more concurrent builds. 27 | - Fixed a bug that triggered an `internal server error` when using `space push`. 28 | - Fixed the incorrect hostname issue for Space Apps. 29 | - Fixed an installation error that was caused by Scheduled Actions not working in certain regions. 30 | 31 | Thank you for all the valuable feedback — please continue to share your thoughts as we work to build and improve Space. -------------------------------------------------------------------------------- /src/pages/docs/en/[...slug].astro: -------------------------------------------------------------------------------- 1 | --- 2 | import CodeBlock from "@/components/docs/Article/CodeBlock/CodeBlock.astro"; 3 | import { getCollection } from "astro:content"; 4 | 5 | export async function getStaticPaths() { 6 | const docsEntries = await getCollection("docs"); 7 | return docsEntries.map((entry) => ({ 8 | 9 | params: { 10 | slug: entry.slug 11 | //slug: entry.slug.split("/").slice(1).join("/"), // Slice of first path element as it is the language 12 | //language: entry.slug.split("/")[0] // First path element is language due to our dir setup. 13 | }, 14 | props: { entry, foo: "bar" } 15 | })); 16 | } 17 | 18 | const { entry } = Astro.props; 19 | const { language } = Astro.params; 20 | const { Content } = await entry.render(); 21 | --- 22 | 23 | 24 | 26 | 30 | -------------------------------------------------------------------------------- /src/pages/docs/en/intro.md: -------------------------------------------------------------------------------- 1 | # hello -------------------------------------------------------------------------------- /src/pages/docs/index.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import type * as CONFIG from '../../config'; 3 | 4 | import '@/styles/new.css'; 5 | import "@/styles/global.scss"; 6 | import "@/components/docs/Article/article.scss"; 7 | 8 | import HeadCommon from '@/components/HeadCommon.astro'; 9 | import HeadSEO from '@/components/HeadSEO.astro'; 10 | import Article from '@/components/docs/Article/Article.svelte'; 11 | 12 | type Props = { 13 | frontmatter: CONFIG.Frontmatter; 14 | }; 15 | const { frontmatter } = { 16 | frontmatter: { 17 | title: "Space Docs", 18 | layout: "", 19 | description: "", 20 | // TODO: Others 21 | } 22 | } satisfies Props; 23 | const canonicalURL = new URL(Astro.url.pathname, Astro.site); 24 | const currentPage = Astro.url.pathname; 25 | 26 | // {frontmatter.title ? `${frontmatter.title} - ${baseTitle}` : CONFIG.SITE.title} 27 | --- 28 | 29 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/styles/blogOverride.scss: -------------------------------------------------------------------------------- 1 | article section { 2 | margin-top: 0; 3 | } 4 | 5 | article section h1 { 6 | margin-top: 0; 7 | } 8 | 9 | .as-left { 10 | padding-top: 0.8ch; 11 | display: none; 12 | } 13 | @media (max-width: 1152px) { 14 | main { 15 | max-width: unset !important; 16 | } 17 | article { 18 | margin-inline: auto; 19 | } 20 | } 21 | 22 | @media (min-width: 1152px) { 23 | .as-left { 24 | display: block !important; 25 | } 26 | } 27 | 28 | article { 29 | max-width: 70ch; 30 | width: 100%; 31 | } 32 | 33 | @media (max-width: 800px) { 34 | article { 35 | max-width: 90vw !important; 36 | } 37 | } -------------------------------------------------------------------------------- /src/styles/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Articulat'; 3 | font-style: normal; 4 | font-weight: 400; 5 | font-display: swap; 6 | src: url('/other_assets/ArticulatCF-Regular.woff2') format('woff2'); 7 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, 8 | U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, 9 | U+2215, U+FEFF, U+FFFD; 10 | } 11 | 12 | @font-face { 13 | font-family: 'Articulat'; 14 | font-style: normal; 15 | font-weight: 600; 16 | font-display: swap; 17 | src: url('/other_assets/ArticulatCF-DemiBold.woff2') format('woff2'); 18 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, 19 | U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, 20 | U+2215, U+FEFF, U+FFFD; 21 | } 22 | 23 | @font-face { 24 | font-family: 'Cartograph'; 25 | font-style: normal; 26 | font-weight: 100 900; 27 | font-display: swap; 28 | src: url('/other_assets/CartographCF-Regular.woff2') format('woff2'); 29 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, 30 | U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, 31 | U+2215, U+FEFF, U+FFFD; 32 | } -------------------------------------------------------------------------------- /src/styles/global.scss: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | //margin: 0; 4 | } 5 | 6 | *, 7 | *:before, 8 | *:after { 9 | box-sizing: inherit; 10 | } 11 | 12 | html,body { 13 | text-rendering: optimizeLegibility; 14 | -webkit-text-size-adjust: 100%; 15 | -webkit-font-smoothing: antialiased; 16 | } 17 | 18 | body, 19 | h1, 20 | h2, 21 | h3, 22 | h4, 23 | h5, 24 | h6, 25 | p, 26 | ol, 27 | ul { 28 | font-weight: normal; 29 | } 30 | 31 | ol, 32 | ul { 33 | list-style: none; 34 | margin: 0; 35 | padding: 0; 36 | } 37 | 38 | a { 39 | // Gets overriden inside article.scss 40 | color: inherit; 41 | text-decoration: none; 42 | } 43 | 44 | :root { 45 | --user-font-scale: 1rem - 16px; 46 | } 47 | html { 48 | scroll-behavior: smooth; 49 | width: 100%; 50 | } 51 | body { 52 | margin: 0; 53 | padding: 0; 54 | font-family: var(--font-body); 55 | font-size: 1rem; 56 | font-size: clamp(0.9rem, 0.75rem + 0.375vw + var(--user-font-scale), 1rem); 57 | line-height: 1.5; 58 | width: 100%; 59 | } 60 | 61 | /* Fixes jump to anchor -> without, headings are below header */ 62 | a[name]::before, 63 | [id]::before { 64 | content: ""; 65 | display: block; 66 | visibility: hidden; 67 | height: 5.5rem; /* offset height */ 68 | margin-top: -5.5rem; /* negated offset height */ 69 | } 70 | 71 | p { 72 | margin-top: 0; 73 | } 74 | 75 | * { 76 | scrollbar-color: hsl(var(--color-gray-80)) transparent; 77 | scrollbar-width: thin; 78 | } 79 | 80 | .only-desktop { display: none; } 81 | @media screen and (min-width: 768px) { 82 | .only-mobile { display: none; } 83 | .only-desktop { display: inherit; } 84 | } 85 | 86 | *::-webkit-scrollbar-track { 87 | background: transparent; /* color of the tracking area */ 88 | } -------------------------------------------------------------------------------- /src/styles/tailwind.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; -------------------------------------------------------------------------------- /src/utils/cache.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Cache function execution value on first run 3 | * @param name Unique cache key 4 | * @param func Function to cache execution result 5 | * @returns Function execution result 6 | */ 7 | export async function cacheOnFirstRun( 8 | name: string, 9 | func: () => T | Promise 10 | ): Promise { 11 | const global = globalThis as any 12 | const cacheKey = `__cache_${name}__` 13 | 14 | if (!global[cacheKey]) global[cacheKey] = await func() 15 | return global[cacheKey] 16 | } 17 | -------------------------------------------------------------------------------- /src/utils/changelogs.ts: -------------------------------------------------------------------------------- 1 | import type { MarkdownInstance } from 'astro' 2 | import HTMLParser from 'node-html-parser' 3 | import DateFns from 'date-fns' 4 | 5 | // Date format (Example 09 Sep 2022) 6 | // Reference: https://date-fns.org/v2.29.3/docs/parse 7 | export const dateFormat = 'dd LLL yyyy' 8 | 9 | export function extractDescription( 10 | changelog: MarkdownInstance> 11 | ): string { 12 | const root = HTMLParser.parse(changelog.compiledContent()) 13 | const firstParagraph = root.querySelector('p')?.innerText 14 | if (firstParagraph) return firstParagraph 15 | return '' 16 | } 17 | 18 | export function formatDate(date: string) { 19 | return DateFns.format( 20 | DateFns.parse(date, dateFormat, new Date()), 21 | 'LLLL d, yyyy' 22 | ) 23 | } 24 | -------------------------------------------------------------------------------- /src/utils/clickOutside.ts: -------------------------------------------------------------------------------- 1 | export function clickOutside(node: HTMLElement, onEventFunction: () => void) { 2 | const handleClick = (event: MouseEvent) => { 3 | const target = event.target as HTMLElement 4 | // Ignore clicks on elements (children of elements) with data-ignore-click-outside attribute 5 | if ( 6 | target.hasAttribute('data-ignore-click-outside') || 7 | target.closest('[data-ignore-click-outside]') !== null 8 | ) { 9 | return 10 | } 11 | 12 | if (node && !node.contains(target) && !event.defaultPrevented) { 13 | event.preventDefault() 14 | event.stopPropagation() 15 | node.dispatchEvent(new CustomEvent('click_outside', { detail: node })) 16 | 17 | onEventFunction() 18 | } 19 | } 20 | 21 | document.addEventListener('click', handleClick, true) 22 | 23 | return { 24 | destroy() { 25 | document.removeEventListener('click', handleClick, true) 26 | }, 27 | } 28 | } -------------------------------------------------------------------------------- /src/utils/metadata.ts: -------------------------------------------------------------------------------- 1 | interface Metadata { 2 | isDevMode: boolean; 3 | isAuthenticated: boolean; 4 | } 5 | 6 | // Is initialization started 7 | let isInitialized = false; 8 | 9 | // If initialization finished 10 | let isLoaded = false; 11 | 12 | // Queue of resolves 13 | const resolves: Array<(value: Metadata) => void> = []; 14 | 15 | let isDevMode = false; 16 | let isAuthenticated = false; 17 | 18 | /** 19 | * Get users metadata. Made the way it send only one request. 20 | * @returns Metadata 21 | */ 22 | export function getMetadata(): Promise { 23 | if (!isInitialized) initializeMetadata(); 24 | 25 | // Create promise and put resolving to the queue, that will be executed only after initialization 26 | return new Promise((resolve, reject) => { 27 | if (isLoaded) return resolve({ isAuthenticated, isDevMode }); 28 | resolves.push(resolve); 29 | }); 30 | } 31 | 32 | /** 33 | * Initialize metadata 34 | */ 35 | async function initializeMetadata() { 36 | isInitialized = true; 37 | 38 | try { 39 | 40 | // Send request 41 | const endpoint = import.meta.env.DEV ? "https://deta.space/api/v0/metadata" : "/api/v0/metadata"; 42 | const res = await fetch(endpoint); 43 | if (!res.ok) throw new Error("Endpoint is not available"); 44 | 45 | // Update metadata values 46 | const metadata = await res.json(); 47 | isDevMode = metadata.dev_mode; 48 | isAuthenticated = true; 49 | } catch (error) { 50 | isDevMode = false; 51 | isAuthenticated = false; 52 | } finally { 53 | isLoaded = true; 54 | 55 | // Resolve all promises 56 | resolves.forEach((resolve) => resolve({ isDevMode, isAuthenticated })); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import { vitePreprocess } from "@astrojs/svelte"; 2 | 3 | export default { 4 | preprocess: vitePreprocess() 5 | }; 6 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "astro/tsconfigs/strict", 3 | "compilerOptions": { 4 | "strict": true, 5 | "strictNullChecks": true, 6 | "jsx": "preserve", 7 | "skipLibCheck": true, 8 | "baseUrl": ".", 9 | "paths": { 10 | "@/*": ["src/*"], 11 | "~/*": ["src/*"], // TODO: REMOVE 12 | "@cmp/*": ["src/components/*"], 13 | "@layouts/*": ["src/layouts/*"], 14 | "@styles/*": ["src/styles*"], 15 | "@docs": ["src/layouts/MainLayout.astro"], // TODO: REMOVE 16 | "@blogs": ["src/layouts/BlogLayout.astro"] // TODO: Remove 17 | } 18 | } 19 | } 20 | --------------------------------------------------------------------------------