diff --git a/docusaurus.config.js b/docusaurus.config.js index 6c5430c..49f59c7 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -23,8 +23,17 @@ const config = { // metadata like html lang. For example, if your site is Chinese, you may want // to replace "en" with "zh-Hans". i18n: { - defaultLocale: 'en', - locales: ['en'], + defaultLocale: 'pt', + locales: ['pt','en'], + localeConfigs: { + pt: { + htmlLang: 'en-GB', + }, + // You can omit a locale (e.g. fr) if you don't need to override the defaults + fa: { + direction: 'rtl', + }, + }, }, presets: [ @@ -84,6 +93,10 @@ const config = { position: 'right', className: 'button button--default button--lg bohr-login-button' }, + { + type: 'localeDropdown', + position: 'left', + }, ], }, footer: { diff --git a/i18n/en/code.json b/i18n/en/code.json new file mode 100644 index 0000000..2cb0ff5 --- /dev/null +++ b/i18n/en/code.json @@ -0,0 +1,265 @@ +{ + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again when the page crashed" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.DocCard.categoryDescription": { + "message": "{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages navigation", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to heading", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel": { + "message": "Toggle the collapsible sidebar category '{label}'", + "description": "The ARIA label to toggle the collapsible sidebar category" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + } +} diff --git a/i18n/en/docusaurus-plugin-content-blog/options.json b/i18n/en/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..9239ff7 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,14 @@ +{ + "title": { + "message": "Blog", + "description": "The title for the blog used in SEO" + }, + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} diff --git a/i18n/en/docusaurus-plugin-content-docs/current.json b/i18n/en/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..8f741f1 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.tutorialSidebar.category.Utilizando o Bohr": { + "message": "Using Bohr", + "description": "The label for category Utilizando o Bohr in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Templates": { + "message": "Templates", + "description": "The label for category Templates in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Frameworks": { + "message": "Frameworks", + "description": "The label for category Frameworks in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Configurações do Projeto": { + "message": "Project Settings", + "description": "The label for category Configurações do Projeto in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Domínios": { + "message": "Domains", + "description": "The label for category Domínios in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.doc.Introdução": { + "message": "Introduction", + "description": "The label for the doc item Introdução in sidebar tutorialSidebar, linking to the doc start" + }, + "sidebar.tutorialSidebar.doc.Domínios": { + "message": "Domains", + "description": "The label for the doc item Domínios in sidebar tutorialSidebar, linking to the doc domains" + } +} diff --git a/i18n/en/docusaurus-plugin-content-docs/current/CLI.md b/i18n/en/docusaurus-plugin-content-docs/current/CLI.md new file mode 100644 index 0000000..7410773 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/CLI.md @@ -0,0 +1,57 @@ +--- +sidebar_position: 12 +--- + +# Command-line Interface - CLI + +bohr.io CLI is a command-line tool that allows you to publish your website to production with a single command, making it a great way to save time and effort when deploying your site. + +Additionally, the bohr.io CLI enables you to run a local development server on which you can test your code and plugins locally before deploying them to production. This local environment can be shared with others to get feedback on your work before deploying it to production. + +The following sections will explain how to use the bohr.io CLI for common tasks. + +## Login + +To use the bohr.io CLI, you must log in using the bohr.io login command. This command will open a tab in your default browser for authentication with GitHub. + +## Installation + +To install the bohr.io CLI, make sure you have Node.js version 16.0.0 or later installed. Then, run this command in any directory of your terminal: + +```npm install bohr``` + +To install the bohr.io CLI globally, you can run the following command: + +```npm install bohr -g``` + +## Deploy + +To publish a bohr.io project from the source code, you can use the ```bohr deploy``` command inside your project's folder. This command will publish the project on bohr.io and create an active URL for you to access it. While it is recommended, you don't have to have a GitHub repository with the project to be published. + +![image](https://github.com/bohr-io/docs/assets/69644385/bf076245-f45e-4fb6-b74a-64ac063d768a) + +## Local Development Environment + +You can also use the bohr.io CLI to develop your site on your local machine, much like how it will be deployed in production on bohr.io. You can use the ```bohr dev``` command to start the local development environment. This will run your project using the configuration and environment variables defined in your project within bohr.io. + +This local development environment provides a proxy server that includes edge logic for custom headers and redirects, environment variables, and initializes backend functions, simulating AWS Lambdas. It also automatically detects tools and frameworks like Gatsby, Hugo, Eleventy, Next.js, and more to set up a local development server that mimics the bohr.io production environment. + +![image](https://github.com/bohr-io/docs/assets/69644385/8d56646a-ae7d-4dc5-8b59-37b7d6824534) + +Here are some of the benefits of using ```bohr dev```: + + - You can develop your website locally without worrying about setting up a complex development environment. + + - You can test your site with custom headers and redirects, which can be useful for SEO and security. + + - You can use environment variables to configure your site with different development, staging, and production settings. + + - You can test the back end locally. + + - You can get feedback from others on your site by sharing your local development server with them. + +If you are developing a site with bohr.io, it is highly recommended to use ```bohr dev```. It's a great way of developing your site locally, much like how it will be deployed in production. + +## Logout + +The ```bohr logout``` command is used to end your current session with bohr.io. This means you will no longer be able to use the bohr.io CLI to interact with your bohr.io account until you log in again. \ No newline at end of file diff --git a/i18n/en/docusaurus-plugin-content-docs/current/Frameworks/nextjs.md b/i18n/en/docusaurus-plugin-content-docs/current/Frameworks/nextjs.md new file mode 100644 index 0000000..3b82d38 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/Frameworks/nextjs.md @@ -0,0 +1,74 @@ +# Next.js + +The bohr.io platform provides two main options for deploying projects using the Next.js framework. This guide will help you understand and choose the option that best suits your needs. + +## Option 1: Static Export (Recommended) + +The first and recommended option is to use **Static Export**, which was formerly known as `next export`. This involves adding an attribute `output: 'export'` to your next.config.js file. + + +Read more about configuring static export in the [oficial Next.js documentation](https://nextjs.org/docs/pages/building-your-application/deploying/static-exports). + +### Benefits + +- The front end is served directly by bohr.io's edge layer, resulting in the lowest possible latency for users. + +### Limitações + +- Image Optimization is disabled. +- Other features that depend on Server-Side Rendering (SSR) are not available. + +### How to Use + +1. Use the `next-blog-starter` template to create a new project with this configuration: + + [Create a new repository with the template](https://bohr.io/createRepository?sampleUrl=https://github.com/bohr-io/next-blog-starter) + +2. Make sure the following environment variables are present: + + ``` + BUILD_CMD=npx next build && npx next export + DEV_CMD=npx next dev --port $PORT + INSTALL_CMD=npm install + PUBLIC_PATH=./out + DEPLOY_PATH=./ + ``` +3. If you are not using the `next-blog-starter` template, it is necessary to disable Image Optimization in the `next.config.js` file: + ``` + images: { + unoptimized: true + } + ``` +## Option 2: Experimental SSR Support + +The second option is to enable experimental support for Server-Side Rendering (SSR) by creating environment variables. + +### How to Use + +1. Use the `nextjs-template` template to create a new project with SSR settings enabled: + + [Create a new repository with the template](https://bohr.io/createRepository?sampleUrl=https://github.com/bohr-io/nextjs-template) + +2. Make sure the following environment variables are present: + + ``` + BOHR_WEB_ADAPTER=1 + BOHR_WEB_ADAPTER_TYPE=nextjs + INSTALL_CMD=npm install + BUILD_CMD=npm run build + DEV_CMD=npx next dev --port $PORT + PUBLIC_PATH=./public + DEPLOY_PATH=./ + ``` + +3. You also need to add the following configuration to the `next.config.js` file: + + ``` + module.exports = { + output: 'standalone', + } + ``` +## Conclusion + +Choose the option that best suits your project's needs. Static Export is generally faster and offers lower latency but has some limitations. Experimental SSR support can be helpful if you need features that depend on server-side rendering. + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/Templates/dashboard-template.md b/i18n/en/docusaurus-plugin-content-docs/current/Templates/dashboard-template.md new file mode 100644 index 0000000..c06dbb1 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/Templates/dashboard-template.md @@ -0,0 +1,23 @@ +--- +sidebar_position: 18 +--- + +# Dashboard + +
+ +The **Dashboard Template** comes with some pre-configured environment variables for compilation, including a connection string to a database hosted on **PlanetScale**. This database doesn't accept structural changes, only data changes. + +To access it, click on "**Publish**". bohr.io will publish both the front end and the API, which will already be connected to the database. + +Simultaneously, bohr.io will create the repository on GitHub. You can check its creation by clicking on the GitHub icon in the upper right corner. + +You can view the code using **Visual Studio Code for Web** by clicking in the upper right corner. There, you will find an API folder. bohr.io uses [**Prisma**](https://www.prisma.io/ "Prisma"), which is an ORM (_object-relational mapping_) for database management. + +In the code, you will also see a simple API that handles user CRUD operations. + +The Dashboard Template is integrated with **reCAPTCHA** (you can change the key later). For your convenience, an instant login and password are provided, but you can change both. + +Upon entering, you will see an example of the API making requests directly to the database. On this screen, you can modify the data. + +This template has documentation in **OpenAPI** format. To access it, add `/doc` to the end of the URL, where you can directly call methods for user creation, for example. \ No newline at end of file diff --git a/i18n/en/docusaurus-plugin-content-docs/current/Templates/default-templates.md b/i18n/en/docusaurus-plugin-content-docs/current/Templates/default-templates.md new file mode 100644 index 0000000..709edee --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/Templates/default-templates.md @@ -0,0 +1,18 @@ +--- +sidebar_position: 15 +--- + +# Templates + +
+ +Currently, bohr.io offers some free templates for use, for example: + +- **Simple Portfolio:** Integrated with direct content editing on the page. +- **Gatsby-powered Portfolio:** How to use Static Site Generation with Gatsby. +- **Dashboard with Basic CRUD using PlanetScale:** An example of how to use PlanetScale to create a basic CRUD. +- **Speed test using the Cloudflare API:** that you can generate and customize. +- **NextJS:** Two NextJS templates. +- **PHP:** Basic PHP template. + +We are constantly expanding the number of templates, and it's even possible to use templates created by community users. \ No newline at end of file diff --git a/i18n/en/docusaurus-plugin-content-docs/current/Templates/gatsby-template.md b/i18n/en/docusaurus-plugin-content-docs/current/Templates/gatsby-template.md new file mode 100644 index 0000000..7b2e1d2 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/Templates/gatsby-template.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 17 +--- + +# Gatsby + +
+ +This template comes preconfigured with compilation commands to run locally using [**Gatsby**](https://www.gatsbyjs.com/). + +After the compilation step, you can view the already published portfolio by accessing the website simulation on the **Overview** screen. + +In **Settings**, under "**Authentication**", you can secure the portfolio with a password. + +You can also add environment variables in **Environment Variables**. + +It's also possible to insert APIs into the template by creating a folder within the **API** folder. \ No newline at end of file diff --git a/i18n/en/docusaurus-plugin-content-docs/current/Templates/portfolio-template.md b/i18n/en/docusaurus-plugin-content-docs/current/Templates/portfolio-template.md new file mode 100644 index 0000000..78e45df --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/Templates/portfolio-template.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 16 +--- + +# Portfólio + +
+ +This is a simple template without a compilation step because it's pure static HTML. If you want to implement an API, it already includes an example. + +At this moment, this is the only bohr.io template integrated with the **Content Editing** feature. For this feature to work, you need to have certain tags in the middle of your HTML code. + +You can access the Content Editing feature by clicking on "**EDIT**" in the upper right corner of the screen. You can also edit the content directly on the page, and after saving it, the `commit` will be automatically made to GitHub. \ No newline at end of file diff --git a/i18n/en/docusaurus-plugin-content-docs/current/autenticacao.md b/i18n/en/docusaurus-plugin-content-docs/current/autenticacao.md new file mode 100644 index 0000000..338882c --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/autenticacao.md @@ -0,0 +1,76 @@ +--- +sidebar_position: 8 +--- + +# Authentication + +
+ +In bohr.io, you can configure authentication for both all environments of your project and specific branches by navigating to **Settings ⇾ Authentication ⇾ METHOD checkbox**. + +bohr.io's authentication allows you to include multiple users and passwords. + +In addition to ***Basic Authentication***, bohr.io offers **OAuth integration with GitHub**, which allows authentication with Google, Discord, and other providers. + +To do this, you need to: + +- Log in to GitHub; +- Access *Settings*; +- Go to *Developer Settings* (the last option in the left-side menu); + + +![developer settings](https://images.bohr.io/oauth1.png) + +4. access *OAuth Apps*; + +![OAuth Apps](https://images.bohr.io/oauth2.png) + +5. create an **OAuth application** (the highlighted sections represent mandatory formats; after filling in the gaps shown in the image, click on *Register application*); + + +![Aplicação OAuth](https://images.bohr.io/oauth3.png) + +6. on the next screen, you will copy your `client` and `secret` keys. For the `secret`, you need to click on "Generate a new client secret" (tip: save the keys in a notepad because you will need them shortly - and they will become invisible from now on); + + +![Chaves clients e secret](https://images.bohr.io/oauth4.png) + +7. to configure the `client` and `secret` within bohr.io, you need to log in to the platform and add a new project: + + +![Novo projeto](https://images.bohr.io/oauth5.png) + +8. choose a template (in this example, we will use the *Portfolio Template*); + +9. rename the subdomain and click on "Publish" at the bottom of the screen. + +![Renomear o subdomínio](https://images.bohr.io/oauth6.png) + +10. On the “Overview” screen, click on the following icon: + +![Clique no ícone](https://images.bohr.io/oauth7.png) + +11. when your project appears, copy the URL "teste-bohr.bohr.io" (tip: save it in a notepad because you will need this URL); + +12. return to the GitHub screen where you obtained the `client` and `secret` keys, and paste the URL "teste-bohr.bohr.io" into the fields *Homepage URL* and *Authorization callback URL* (don't forget to keep "bohr/signin" at the end of the URL in *Authorization callback URL*); then click on "Update application". + + +![Preencher Homepage URL e Authorization callback URL](https://images.bohr.io/oauth8.png) + +13. get back to the **Overview** screen on bohr.io and click on *Settings*; + + +![Clique em Configurações](https://images.bohr.io/oauth9.png) + +14. Within the **Settings** page, click on *Authentication*; + +- in *Method*, select **OAuth**; +- in *Provider*, choose **GitHub**; +- enter the `client` and `secret` you saved in the notepad into their respective fields; +- in *Protect*, select **Front end and Back end**; +- click Save. + + +![Método, Provedor e inserção de client e server](https://images.bohr.io/oauth10.png) + + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/domains.md b/i18n/en/docusaurus-plugin-content-docs/current/domains.md new file mode 100644 index 0000000..d07cf12 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/domains.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 6 +--- + +# Domains + +
+ +In bohr.io, you can add a domain for use within your websites. The first time you add a domain, you will go to the **"Setting the nameservers"** section, with instructions on how to configure the nameservers in your domain manager. + +Once this domain has been validated and added to the nameservers, you can edit the DNS keys. + +In the same area, you can configure services like receiving emails for this domain. In **Settings ⇾ General**, selecting an environment (such as the main `branch`), you can edit the URL and use your domain. + +> ⚠️ IMPORTANT - +You cannot use a period (.) before your domain because it belongs to **Tier 1** subdomains. You can only use the hyphen (-) character. + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/dominios-disponiveis.md b/i18n/en/docusaurus-plugin-content-docs/current/dominios-disponiveis.md new file mode 100644 index 0000000..e2cf3c3 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/dominios-disponiveis.md @@ -0,0 +1,42 @@ +--- +sidebar_position: 10 +--- + +# Available Domains + +List of available domains for registration: + +``` +.com +.com.br +.net +.org +.cc +.xyz +.me +.stream +.trade +.win +.bid +.date +.download +.loan +.men +.party +.faith +.racing +.review +.science +.rodeo +.work +.casa +.pictures +.business +.company +.observer +.contact +.club +.webcam +.boston +.markets +``` diff --git a/i18n/en/docusaurus-plugin-content-docs/current/fair-use-policy.md b/i18n/en/docusaurus-plugin-content-docs/current/fair-use-policy.md new file mode 100644 index 0000000..1ea5411 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/fair-use-policy.md @@ -0,0 +1,87 @@ +--- +sidebar_position: 30 +--- + +# Fair Use Policy + +All subscription plans incorporate usage that is subject to this Fair Use policy. Presented below is a guideline to help determine which projects fall within our definition of "Fair Use" and which do not. + + +## Examples of Acceptable Use + +- Static websites +- Hybrid applications +- Frontend applications +- Single-page applications +- Functions that query databases or APIs +- Blogs, e-commerce, and marketing websites + + +## Examples of Unacceptable Use + +- Proxies and Virtual Private Networks (VPNs) +- Hosting media for hot-linking +- Web scrapers +- Cryptocurrency mining +- Load testing + +## Guidelines for Usage + +As a guideline for our community, we anticipate that most users will fall within the following usage ranges for each plan. Should your usage deviate significantly, we will contact you to address the outlier usage. Our objective is to be as accommodating as possible while preventing an undue strain on our infrastructure. Whenever possible, we will reach out to you before taking any action to address unreasonable usage and collaborate with you to resolve it. + + +### Typical Monthly Usage Guidelines + +| | **Hobby** | **Pro**| +|---------------------------------:|----------------------------:|-----------------------------| +| Bandwidth | Up to 100 GB | Up to 1 TB | +| Serverless Function Execution | Up to 100 GB-Hrs | Up to 1000 GB-Hrs | +| Edge Middleware Invocations | Up to 1,000,000 Invocations | Up to 1,000,000 Invocations | +| Build Execution | Up to 100 Hrs | Up to 400 Hrs | +| Image Optimization Source Images | Up to 1000 Images | Up to 5000 Images | + +### Additional recommendations + +**CPU Usage Limit for Edge Middleware** - Edge Middleware is advised to utilize an average CPU time of no more than 50ms. This constraint pertains to the effective net CPU time, excluding execution time. For instance, periods spent waiting for network responses during communication do not contribute to the CPU time restrictions. + +### Extra resources availability + +For participants in our Pro plan, we introduce a pay-as-you-go structure for supplementary usage, providing enhanced adaptability and management of your consumption. The standard monthly usage benchmarks outlined earlier remain relevant, while any additional usage will be subject to automatic charges according to the following rates: + + +| **Hobby** | **Pro** | +|---------------------------------:|-------------------------------| +| Bandwidth | $40 per 100 GB increment | +| Serverless Function Execution | $40 per 100 GB-Hrs increment | +| Edge Middleware Invocations | $0.65 per 1,000,000 increment | +| Image Optimization Source Images | $5 per 1000 increment | + +## Usage for Profit + +Hobby accounts are limited to non-commercial personal use exclusively. Any utilization of the platform for commercial purposes necessitates a Pro or Enterprise plan. + +Commercial usage is described as any Deployment utilized for the intention of generating financial gains for any entity or individual involved in any aspect of project production. This encompasses paid employees or consultants engaged in code development. Instances of this include, though are not confined to, the subsequent: + + +- Any method of soliciting or handling payments from site visitors. +- Promotion of product or service sales. +- Receipt of compensation for site creation, maintenance, or hosting. +- Primary use of affiliate links on the site. +- Incorporation of advertisements, including online advertising platforms like Google AdSense. +- Soliciting donations does not qualify as commercial usage. + +If there is uncertainty about whether your site qualifies as commercial usage, please contact the bohr.io Support team. + +## General Boundaries + +Please review our Limits documentation to familiarize yourself with the limitations applicable to all accounts. + +## Further Details + +Circumventing or misusing bohr.io's limits or usage guidelines constitutes a violation of our Fair Use Policy. + +For additional information about this policy and acceptable use of our Services, kindly refer to our Terms of Service or your Enterprise Service Agreement. + + + + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/importacao.md b/i18n/en/docusaurus-plugin-content-docs/current/importacao.md new file mode 100644 index 0000000..333be3c --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/importacao.md @@ -0,0 +1,28 @@ +--- +sidebar_position: 3 +--- + +# Import Repositories from Github + +
+ +To import projects hosted in GitHub repositories, go to the new [project page](http://bohr.io/projects/new) and select the [**"Import from GitHub"**](https://bohr.io/projects/new/import) option in the upper right corner of the screen. + +Only the repositories to which you have granted access permission will be listed. If you haven't been granted access to any repositories yet, you will click ["Check permissions on GitHub"](https://github.com/apps/bohr-io/installations/new/) to integrate bohr.io with your personal or organizational GitHub account. + +For example, in a React project repository, bohr.io will identify from the `package.json` that the framework used is **React** and that the folder containing the content is `build`. With this information, bohr.io will generate the publication. + +When you click "**Import**", you will need to wait a few seconds while the **Overview** screen loads the simulation. In the GitHub repository, you can see that bohr.io will make a commit adding a **GitHub Actions** workflow file, used to build the project (you can track this execution in the Actions tab on GitHub). + +The repository will install the bohr.io CLI and perform the publication, attempting to identify the framework. Depending on the framework you are using, you may need to make some additional configurations within the site's **Settings** (if you encounter any issues, feel free to reach out to us on [Discord](https://discord.com/invite/p3hhfGg2Uy)). + +Once installed, it will run the installation and project build commands using Yarn. You can change the commands in the site's settings. + +After the compilation and upload are complete, a publication URL is generated. + + +:::note +Due to a small delay on the **Overview** screen, your project's preview may initially return a "Site not Found" message. Don't worry; simply refresh the screen. +::: + +In the **Settings** screen, under **Environment Variables**, you can see the variables being used during execution. They can be modified in case of any issues or if they are not detected (if needed, reach out to us on [Discord](https://discord.com/invite/p3hhfGg2Uy)). diff --git a/i18n/en/docusaurus-plugin-content-docs/current/localhost.md b/i18n/en/docusaurus-plugin-content-docs/current/localhost.md new file mode 100644 index 0000000..deba041 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/localhost.md @@ -0,0 +1,20 @@ +--- +sidebar_position: 9 +--- + +# Localhost + +
+ +In **Overview ⇾ Project ⇾ Core**, you can access localhost environments (environments running on developers' machines) and view them directly on the screen, thanks to **Cloudflare's Durable Objects**. + +To run a localhost, copy the following command: + + +```bash +git clone https://github.com/bohr-io/app-template.git +cd app-template +npx -y bohr@latest dev +``` + +If the environment variable settings and development commands are correct, the command will run smoothly. If you find any trouble, you can reach out on [Discord](https://discord.com/invite/p3hhfGg2Uy). diff --git a/i18n/en/docusaurus-plugin-content-docs/current/logs.md b/i18n/en/docusaurus-plugin-content-docs/current/logs.md new file mode 100644 index 0000000..34a3ca6 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/logs.md @@ -0,0 +1,16 @@ +--- +sidebar_position: 7 +--- + +# Logs + +
+ +When you open the **Logs** page, you can click on the Visual Studio Code for Web icon (top right corner) to view the code of a simple API with a `console.log`. Whenever you access this API and open the Logs page, the log will appear in the real-time logs area. + +To access the API, get back to the site's Overview page, open it in a new tab, and navigate to `/api`. This will trigger a request to the API. Then, you can return to the Logs page and refresh it if necessary until the logs appear. + +Thanks to **Web Sockets** and **CloudFlare's Durable Objects**, this is instantaneous. + +We are working on features to allow data download and storage in *Local Storage*. + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/pnpm-support.md b/i18n/en/docusaurus-plugin-content-docs/current/pnpm-support.md new file mode 100644 index 0000000..40a0d26 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/pnpm-support.md @@ -0,0 +1,38 @@ +To use pnpm, add the following to your file: "/.github/workflows/bohr.yml," right after the line "- uses: actions/checkout@v3": + +``` + - run: corepack enable + + - name: Install Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: pnpm +``` + +Example of a complete file (correct indentation is mandatory): + +``` +name: bohr.io deploy +on: + push: + repository_dispatch: + types: [bohr-dispatch] +permissions: write-all +jobs: + deploy: + name: Deploy on bohr.io + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - run: corepack enable + + - name: Install Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: pnpm + + - uses: bohr-io/action@main +``` diff --git a/i18n/en/docusaurus-plugin-content-docs/current/preview-deploys.md b/i18n/en/docusaurus-plugin-content-docs/current/preview-deploys.md new file mode 100644 index 0000000..349d8dc --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/preview-deploys.md @@ -0,0 +1,25 @@ +--- +sidebar_position: 5 +--- + +# Preview Deployments + +
+ +***Preview Deployments*** are all publications not in the production environment, meaning they are not the central publications. + +Usually, there are three categories of preview deployments: + +- `branches` +- `pull requests` +- `releases` + +For now, bohr.io only supports branches. The environments for `pull requests` and `releases` are part of our Roadmap. + +The *preview deployments* environment is updated with each new `commit` to the `branch`, creating a preview deployment for each branch. + +You can click on "View Website" to directly preview the specific `branch`. + +You can also switch between branches by using the selection box available in the navigation bar. + + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/privacy-policy.md b/i18n/en/docusaurus-plugin-content-docs/current/privacy-policy.md new file mode 100644 index 0000000..b500780 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/privacy-policy.md @@ -0,0 +1,257 @@ +--- +sidebar_position: 28 +--- + +# Privacy Policy + +bohr.io, along with its affiliates ("bohr.io," "we," "our," and/or "us"), highly values the privacy of individuals who engage with our website and associated services (collectively referred to as "our Services"). + +This privacy policy (referred to as the "Privacy Policy") outlines our practices regarding the collection, utilization, and sharing of information pertaining to you or your device as you make use of the Services. + + + + +## Information Collection + +We gather an array of information from you or your devices through various sources, as explained below. + +If you opt not to provide the requested information, you might not have access to some or all of our Services, either due to the necessity of the information for providing the Services or because legal requirements mandate its collection. + + +### A. Data You Furnish to Us +**Registration and Profile Details.** When you create an account, we request your email address and may ask for your phone number. If you opt for social media account registration, we will also obtain details from those platforms, such as your name, email address, and profile image, following the privacy preferences you've set on those platforms. + +**Payment Particulars.** When you add a credit card or payment method to your account, a third-party payment service provider responsible for processing payments on our behalf will receive and handle your payment card details. + +**Communications.** When you communicate with us, we may receive additional information. For instance, when you interact with our Customer Support Team, we'll collect your name, email address, phone number, the contents of messages or attachments you send us, and other data you choose to share. Subscribing to our newsletter leads to the collection of specific information, such as your email address. We might employ technologies like web beacons in our emails to track open rates, aiming to enhance the customer experience and improve our Services. + +**Career-Related Information.** If you apply for a job, you may submit your contact details and resume online. We'll collect the data you provide in your resume, such as education and employment history. For California-based job applicants, specific additional terms are applicable. + +### B. Automatic Data Collection During Service Usage +Utilizamos ferramentas eletrônicas como cookies, tags de pixel e tecnologias semelhantes (coletivamente referidas como "cookies" nesta Política de Privacidade) para gerar automaticamente dados sobre sua interação com os Serviços, conforme detalhado nesta seção. + +While using our Services, we employ electronic tools like cookies, pixel tags, and similar technologies (collectively referred to as "cookies" in this Privacy Policy) to automatically generate data about your interaction with the Services, as elaborated in this section. + +**Cookie Clarification:** Cookies encompass small files of characters and numbers stored on your browser or computer hard drive, or small graphic elements placed within web pages or emails. They can be temporary for a single browsing session or more enduring. Cookies assist us in collecting data about your browsing actions, differentiating you from other users, offering functionality, and analyzing Service usage. Our third-party partners, including analytics and advertising collaborators, might employ these technologies to collect data about your online activities across services and time. The types of cookies utilized by us and third parties include: + + +- **Essential cookies:** Some cookies are vital to facilitate Service access. The Services cannot be provided without this cookie category. + +- **Functional Cookies:** These recognize you upon your return to the Services, allowing us to tailor content for you and remember your preferences, such as language or region choice. + +- **Analytical or Performance cookies:** We use cookies for analytics purposes to operate, enhance, and maintain our Services. We may employ our analytics cookies or third-party analytics providers like Google Analytics to gather and process specific analytics data on our behalf. These providers might also collect information about your usage of other websites, applications, and online resources. Opting out of Google Analytics is possible via Google's browser plugin. Further details regarding your rights, choices, and how to block specific cookies can be found in the "Your Rights and Choices" section below. + +## Automatically Collected Data During Service Usage + +**Device Information.** Details about your device and software used to access our Services include IP address, Internet Service Provider, web browser type, operating system version, phone carrier and manufacturer, application installations, device type and identifiers, and mobile advertising identifiers. + +**Location Information.** We may infer your general location from other collected data (for instance, your IP address indicating your general region), but we do not gather precise geolocation data. + +**Usage Data.** To comprehend and analyze your use of our Services for improvement purposes, we automatically receive data about your interactions, such as viewed or interacted-with content, searches conducted, comments, posted content, entered commands, and visit timestamps. + + +### C. Data Received from Third Parties + +**Information from Third-Party Services.** If you link our Services to a third-party account, we may acquire data about you, including profile details and photos, as well as information about your usage of the third-party account, as per your settings on that account. To control the information we receive, consult the privacy settings of your third-party accounts. + +**Other Third-Party Data.** We might receive additional information, like demographic data, from third parties such as data or marketing partners, and merge it with our existing information about you. + +## Utilization of Collected Information + +We employ the collected information in the following ways: + +- To deliver, sustain, refine, and elevate our Services. +- To interact with you, furnish updates and additional details pertaining to our Services, provide requested information, address comments and inquiries, and offer customer support. +- To streamline the linkage of third-party services or applications, including social networks. +- For marketing objectives, encompassing the development and provision of promotional and advertising materials that could be beneficial, pertinent, valuable, or otherwise engaging to you. +- To tailor your encounter on our Services by offering customized content. +- To facilitate transactions and payments. +- To identify and avert fraudulent activities and address matters of trust and safety that might arise. +- For compliance purposes, which may involve enforcing our Terms of Service or other legal rights, or adhering to applicable laws, regulations, judicial proceedings, or governmental agency requests. +- For other explicit purposes that we notify you of at the time the information is gathered. + + +**De-Identified Data:** It's important to note that we might transform the information collected from you to a state where it cannot be reasonably traced back to you or your device. Once this de-identification process is executed, we retain the freedom to utilize and share the data for any purpose at our discretion, rendering this Privacy Policy inapplicable to said information. + +## Your Responsibilities Regarding Privacy + +bohr.io offers you the capability to share content that may potentially gather personally identifiable information from its users. Should you choose to share such content, it becomes your duty to comprehend your legal commitments and adhere to all relevant laws, which include: + +- Furnishing appropriate notifications to your users about their privacy rights, wherein this Privacy Policy should be referenced. +- Acquiring any necessary consent from your users for the processing, storage, utilization, and transfer of any personally identifiable information that you collect. +- If applicable, supplying requisite notifications and obtaining verifiable parental consent as mandated by the Children’s Online Privacy Protection Act (COPPA) or analogous legislations. +- Adhering to your legal responsibilities to enable your users to rectify their personally identifiable information or request its deletion. + +## Legal Grounds for Information Processing + +Various global privacy regulations (such as those within the European Economic Area, United Kingdom, and Brazil) necessitate the establishment of a "legal basis" for the processing of your information. The legal foundations upon which we rely to process your information encompass: + +- Consent: Your consent has been obtained for the utilization of your information. This applies, for instance, when it's legally required to send you marketing communications. +- Contractual Obligation: Your information is essential to furnish you with the Services, such as facilitating registration and addressing your queries. +- Adherence to Legal Mandates: We are obligated by law to employ your information, as seen in instances like meeting tax and accounting commitments. +- Legitimate Interests: We possess a genuine business interest in utilizing your information, one that doesn't infringe upon your individual rights and concerns. This includes using your information for purposes like product enhancement, internal analytics, refining the accuracy of our machine learning technologies (such as code generation), and enhancing the safety, security, and performance of our Services. + +### Sharing of Collected Information + +We collaborate with the following categories of third parties to share information. + +- Affiliates: We may share any received information with our affiliated corporate entities under a shared ownership or control framework, for any of the purposes outlined in this Privacy Policy. +- Service Providers: Information may be shared with vendors engaged in facilitating our Services, who process your data on our behalf. These entities encompass analytics, billing, legal support, marketing, security, machine learning, and fraud prevention entities. +- Other Users and Individuals: Our Services foster a social environment where you can discover, cooperate on, and distribute content. Specific portions of your profile, such as your name, user name, profile image, and code, are consistently viewable and searchable by fellow users, while content like your posted code and forum contributions is presented on the Services and accessible by other users by default. The "Your Preferences" segment of this Privacy Policy outlines the controls you can employ to restrict code sharing. We don't assume responsibility for other users' utilization of available information, thus it's important to consider your content choices and self-identification strategy on the Services. It's noteworthy that student profiles created by educators via Teams for Education, as well as students' code, remain inaccessible for public viewing and search, and students cannot post content on publicly accessible forums. +- Third-Party App Integrations: If you integrate a third-party application with our Services, information like code may be shared with that third party. +- Legal and Comparable Disclosures: We might access, uphold, and reveal your information if there is a genuine belief that such actions are requisite or fitting to: (a) meet requests from law enforcement and legal proceedings, such as court orders or subpoenas; (b) fulfill your requests; or (c) safeguard your rights, our rights, or the rights, property, or safety of others. To be clear, the divulgence of your information may transpire if you share any inappropriate content on or via the Services. +- Mergers, Sales, or Asset Transfers: Your information may be disclosed and transferred to service providers, advisors, potential transactional partners, or other third parties as part of the assessment, negotiation, or realization of a corporate transaction, wherein we are acquired by or amalgamated with another entity, or when we sell, dissolve, or transfer the entirety or a section of our business or assets. +- Consent: We may also reveal information from or about you with your explicit authorization. + + +### Your Rights and Preferences + +**Customizing Sharing Options**: If you wish to restrict the visibility of your code, you have the option to upgrade and designate it as private. Should you import code from GitHub and your repository is public, it will retain its public status by default on bohr.io. Conversely, if you import code from a private GitHub repository, upgrading will ensure that the code remains private on bohr.io as well. + +**Opting Out of Marketing Communications**: You have the ability to unsubscribe from our promotional emails through the provided link within the emails. Even if you choose to opt-out of receiving promotional messages, administrative notifications will continue to be sent to you. + +**Managing Cookies**: Adjusting your browser settings allows you to block, disable, or receive notifications about the receipt of cookies, delete cookies, or navigate our Services utilizing your browser's anonymous usage feature. However, blocking all cookies, including essential ones, via your browser settings could impede your access to specific parts of our Services, or lead to certain functionalities not working as expected. + +**Your Privacy Rights in Europe**: If you're situated in the European Economic Area or the United Kingdom, the subsequent rights are available to you: + +- **Accessing your Information**: You may request access to your maintained information, rectify inaccuracies, restrict or object to processing, anonymize or erase data, as appropriate, and exercise data portability rights. +- **Withdrawing Consent**: You have the right to withdraw any previously granted consent for processing your information, free of charge. This will impact future processing and does not affect the legality of previous processing. +- **Lodging Complaints**: You have the option to file complaints with supervisory authorities, including those in your country of residence, work, or where an incident took place. + +To enact these rights, you can contact us using the provided contact information at the conclusion of this Privacy Policy. Prior to addressing your request, we may request reasonable identity verification. It's important to note that each right has specific exceptions and limitations. While any changes you implement will be promptly reflected in active user databases or within a reasonable time frame, we may retain information for backup, archival, fraud prevention, analytics, legal obligations, or legitimate purposes. + + +#### Involvement of Third Parties + +Our Services may incorporate links to other websites, products, or services that we neither own nor operate. We do not assume responsibility for the privacy practices of these third parties. Please note that this Privacy Policy does not apply to your interactions on such third-party platforms or any information you divulge to them. We encourage you to review their privacy policies prior to sharing any data. + +#### Data Retention + +We undertake measures to either delete your information or maintain it in a de-identified state when its retention in an identifiable form is no longer necessary for the purposes of processing. This is done unless the law mandates a longer retention period. When determining the specific duration of retention, factors such as the type of service provided, the nature and duration of our relationship, and legal retention mandates are taken into account. When you request the deletion of your account, your data is deleted within 30 days. + +#### Security Measures + +We employ an array of technical, organizational, and physical safeguards designed to protect the information we retain. However, given that our Services are electronically hosted, we cannot provide guarantees regarding the security or privacy of your data. + + + + +#### Conformidade com a COPPA + +No âmbito de nossa oferta gratuita Teams for Education, educadores verificados podem criar contas limitadas no bohr.io para estudantes com menos de 13 anos, gerando um link de convite privado. Em tais casos, apenas um nome de usuário (excluindo nomes reais) e identificadores persistentes, como endereço IP e dados de cookies, são coletados do titular da conta. + +#### FERPA Compliance + +FERPA safeguards "personally identifiable information" contained in students' educational records against unauthorized disclosure. In alignment with FERPA, we utilize education records, as defined by FERPA, exclusively for providing agreed-upon services to educational institutions. We share FERPA-protected information solely as directed or permitted by the respective educational entities or under FERPA. When parents or eligible students request access to education records stored on our servers, we assist in facilitating such access. Further insights are available in our U.S. Student Data Protection Addendum and Student Privacy Notice. + + +### Collection Notice + +The table below outlines the various categories of "personal information" (as defined by relevant state laws mentioned below) that we gather from you or about you, along with the intended purposes for utilizing each category, and the third parties with whom we share each category for business-related reasons. Please refer to the chart provided for this information and consult the respective sections above within this Privacy Policy for more details on each category. + +| Category of Personal Information | Purposes of Use | Categories of Third Parties | +|:------------------------------------:|:------------------------------------:|:------------------------------------:| +| Registration and profile information | - Providing the Services | - Affiliates | +| | - Communicating with you | - Service providers | +| | - Facilitating 3rd-party connections | - Third-party app integrations | +| | - Marketing and advertising | - Entities for legal compliance | +| | - Personalization | - Entities for business transactions | +| | - Legal and compliance purposes | - | +| | - With consent | - | +| Payment information | - Facilitating transactions | - Service providers | +| | - Legal and compliance purposes | - Entities for legal compliance | +| Communications | - Communicating with you | - Affiliates | +| | - Legal and compliance purposes | - Service providers | +| | - With consent | - Entities for business transactions | +| Careers information | - Facilitating job applications | - Affiliates | +| | - Service providers | - Entities for legal compliance | +| | - Entities for legal compliance | - | +| Device information | - Providing the Services | - Affiliates | +| | - Marketing and advertising | - Service providers | +| | - Personalization | - Entities for legal compliance | +| | - Legal and compliance purposes | - Entities for business transactions | +| | - With consent | - | +| Location information | - Providing the Services | - Affiliates | +| | - Marketing and advertising | - Service providers | +| | - Personalization | - Entities for legal compliance | +| | - Legal and compliance purposes | - Entities for business transactions | +| | - With consent | - | +| Usage information | - Providing the Services | - Affiliates | +| | - Marketing and advertising | - Service providers | +| | - Personalization | - Entities for legal compliance | +| | - Legal and compliance purposes | - Entities for business transactions | +| | - With consent | - | +| User-generated content (e.g., code) | - Providing the Services | - Affiliates | +| | - Facilitating 3rd-party connections | - Service providers | +| | - Personalization | - Other users and individuals | +| | - Legal and compliance purposes | - Third-party app integrations | +| | - With consent | - Entities for legal compliance | +| Third-party information | - Providing the Services | - Affiliates | +| | - Marketing and advertising | - Service providers | +| | - Personalization | - Entities for legal compliance | +| | - Legal and compliance purposes | - Entities for business transactions | +| | - With consent | - | + + +### Age of Consent + +We do not knowingly offer the Services to, and will not knowingly gather personal information from individuals below the age of legal consent. + +### Your Information Rights +You retain the right to access, modify, and delete your information at your discretion through the web interface integrated within the Services. + +### California Residents + +In adherence to the California Consumer Privacy Act (CCPA), we do not sell, lease, or distribute personal information to third parties as specified in the California Consumer Privacy Act of 2018 (California Civil Code Sec. 1798.100 et seq.). Furthermore, we do not sell, lease, or distribute personal information to third parties for direct marketing purposes, as outlined in California Civil Code Sec. 1798.83. + + + +### Disclosure + +We will exclusively share your information with third parties in accordance with your directives or as necessary to provide you with a specific service, all in line with applicable privacy laws. As a general practice, we do not and will not sell, lease, share, or disclose your personal information without obtaining your consent or as authorized in this Privacy Policy. + + +### Aggregated Data + +We may utilize your personal information to generate Aggregated Data for internal purposes and selective sharing. "Aggregated Data" pertains to records that have been stripped of potentially identifying information related to customers, landing pages, or end-users, and which have been manipulated or merged to offer generalized, anonymous insights. Your identity and personal details will remain anonymous in Aggregated Data. + + +### Links + +The Site may feature links to other websites, and we hold no accountability for the privacy practices or content of such external sites. We advise reviewing the privacy policy of linked sites, as their privacy policies and practices may vary from our own. + +### Cookies and Log + +Files Cookies and log files are utilized to track user information. Cookies are small data sets transferred to your web browser by a web server, stored on your computer's hard drive. These cookies help track the page variant viewed by a visitor, clicks on page variants, traffic patterns, and the popularity of service options. This data aids in delivering pertinent content and services, and ensures that returning visitors encounter the expected website when revisiting the same web URL. Additionally, cookies reveal the number of clicks your website receives. + + +### Change of Ownership or Business Transition + +In cases of ownership change or other business transitions, such as mergers, acquisitions, or asset sales, your information may be transferred in compliance with applicable privacy laws. + +### Security + +Although we strive to prevent unauthorized access to your personal information, complete security of data transmission over the internet, via wireless devices, or through the air cannot be guaranteed to be 100% secure. We will continue enhancing security measures as new technologies and procedures emerge. + +We strongly advise against sharing your password with anyone. If you forget your password, we will request your ID and send an email containing a link to reset it. + +Please bear in mind that you control the personal information provided while using the Services. Ultimately, you are responsible for maintaining the confidentiality of your identification, passwords, and/or any personal information in your possession for Service usage. Exercise caution and responsibility when disclosing personal information. We disclaim responsibility for others' use of any information you provide to them, and caution should be exercised when selecting the personal information shared with others through the Services. Similarly, we are not liable for the content of personal information or other information received from other users through the Services, and you release us from any liability related to the content of such personal or other information. We cannot guarantee or assume responsibility for verifying the accuracy of personal information or other information provided by third parties. You release us from any and all liability associated with the use of such personal information or other third-party information. + + + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/project-settings.md b/i18n/en/docusaurus-plugin-content-docs/current/project-settings.md new file mode 100644 index 0000000..fe03892 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/project-settings.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 4 +--- + +# Project Settings + +
+ +In the "Settings" screen, the "All Deployments" field defines which settings are in use. + +bohr.io settings are based on the publication: it can be a `branch`, a `pull request`, or even a `release`. + +For example, if you select the `main` branch, the site's URL will appear, which can be changed. + +All menu items, such as environment variables and authentication, are linked to what is selected, whether a `branch` or "All Deployments" (that means all branches will have the same configuration). diff --git a/i18n/en/docusaurus-plugin-content-docs/current/start.md b/i18n/en/docusaurus-plugin-content-docs/current/start.md new file mode 100644 index 0000000..3272303 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/start.md @@ -0,0 +1,116 @@ +--- +sidebar_position: 1 +--- + +# Introduction + +
+ +Bohr.io is a **serverless platform** designed for those who are just starting to program, perfect for making your first deployments, whether it's for a portfolio, college project, job interview test, or any other project. + +We're talking about a unified solution to meet all beginner's needs, entirely focused on the developer experience. bohr.io is a unique tool in the market with incredible and unprecedented usability. + +The platform is tightly integrated with **GitHub**, especially with **GitHub Actions**, the environment where the `build` for each project is performed. + + +## Getting started with Bohr.io + +First of all, you must have a bohr.io account. Then, to create a project on bohr.io, you can [choose a template](https://docs.bohr.io/docs/Templates/default-templates) or [import a GitHub repository](https://docs.bohr.io/docs/importacao) created using any framework. You can also create a new project directly from the terminal and deploy it on bohr.io instantly! + +### Using a template + +To use a template, navigate to the [projects page](https://bohr.io/projects), click "Add a New Project," and select the template. +![templates do Bohr](https://github.com/bohr-io/docs/assets/69644385/92be8efa-a15a-4cfa-bedb-2b92f4ab6055) + +Next, set the desired subdomain, domain, username, and GitHub repository. At this stage, you may need to grant permissions to Bohr if you haven't done so earlier. Now, you can simply use the pre-prepared build and development variables and publish your project! + +![dados sobre o projeto](https://github.com/bohr-io/docs/assets/69644385/f3563bcc-4194-48a8-8b65-f6d50561aa43) + +There you go, your project is already live and ready to be accessed. Now, you can edit your code and take advantage of Bohr's CI/CD along with GitHub Actions for automatic deployments of your changes. + +![página do projeto](https://github.com/bohr-io/docs/assets/69644385/2865d293-ae4c-48d9-acbe-4e657c09877a) + +### Importing a project + +Para importar um projeto, navegue até a [página de projetos](https://bohr.io/projects), clique em "Adicionar novo projeto" e em seguida clique em "Importar do Github". Agora selecione o repositório com o projeto que deseja importar, nesta etapa talvez seja necessário adicionar permissões ao Bohr, caso não tenha feito isso anteriormente. +![importar projeto](https://github.com/bohr-io/docs/assets/69644385/d8e7e371-47d8-4b72-9657-5730c8ea94dc) + +Em seguida, defina o subdomínio desejado, domínio e variáveis de ambiente desejados. +![dados sobre o projeto](https://github.com/bohr-io/docs/assets/69644385/f55b821b-7bc2-47eb-9799-ec5c14b3498e) + +Pronto, agora o bohr será instalado no seu repositório do GitHub e será feito o deploy do seu projeto no Bohr, assim que terminado, seu projeto já estará no ar pronto para ser acessado, agora você pode editar seu código e aproveitar do CI/CD do Bohr junto com as GitHub Actions para fazer deploys automáticos das suas alterações. +![página do projeto](https://github.com/bohr-io/docs/assets/69644385/2865d293-ae4c-48d9-acbe-4e657c09877a) + +### Using the Terminal + +You can use the terminal to create and publish projects on the platform. You can also use the terminal locally or the terminal available within bohr.io. +![Terminal do Bohr](https://github.com/bohr-io/docs/assets/69644385/74b1aff7-40bd-4c40-92f1-619d0c661d24) + +In this example, we'll create a Next.js project and name it "my-next-app," then click on the "npx create-next-app" button and set your preferences. The project will then be initialized automatically. +![preferências next](https://github.com/bohr-io/docs/assets/69644385/03ddf754-8102-4289-9b14-cd9645e74ef4) + +Now, navigate to your new Next.js project folder by clicking the "cd /app/my-next-app" button. +![navegar até a pasta do projeto](https://github.com/bohr-io/docs/assets/69644385/dbfae19e-b8c7-441d-84f5-94c3fc0b0ec1) + +With your new project already created, you have to publish it on bohr.io by clicking the "npx bohr deploy" button. bohr.io will then install, build, and deploy the project within the platform. Once it's finished, your project will be live and ready to be accessed via the link provided in the terminal. +![publicando no Bohr](https://github.com/bohr-io/docs/assets/69644385/28e43577-f4e1-46b9-93a2-2ccd152c9f67) + +Now, you can also create a GitHub repository for your new project by clicking the "gh repo create" button and setting your repository preferences. + +Then, you can navigate to your project's page and take advantage of bohr.io's CI/CD along with GitHub Actions to perform automatic deployments of your changes. +![página do projeto](https://github.com/bohr-io/docs/assets/69644385/4d4d21a9-9c50-44e0-a73b-4778f5f6c1a7) + +## Features + +Discover other platform capabilities: + +### Fullstack + +You can publish projects with both **front-end** and **back-end**. Just place your API (in Node.js) in the API folder. You can find more information in the [Dashboard Template](https://docs.bohr.io/docs/dashboard-template), for example. + +### Logs + +With bohr.io, you can view the your **back-end logs** within the platform through the [Logs menu](https://docs.bohr.io/docs/logs). + +### Environment Variables + +Store **database credentials**, **API keys**, and other data in the [Environment Variables](https://docs.bohr.io/docs/variaveis-de-ambiente) feature. + +### Content Editing + +Bohr.io offers an essential **content editing** feature integrated into the platform, where some changes can be made directly on the page, such as adding links and formatting text (bold, italic, etc.), among other options. + +On the project screen, you also access the link to the repository created on GitHub. + + +### Project Preview + +bohr.io allows you to preview **realistic, real-time simulations** of your project on **mobile devices** (smartphones, tablets) and **different types of displays** (desktop and laptop). + +### Collaboration Feature + +Using **Durable Objects (Cloudflare)** and **liveblocks** technologies, bohr.io allows developers working on the same project to **view each other's activities in real time**. + +### Visual Studio Code for the Web + +On the project screen, there's a link to **Visual Studio Code for the Web** to simplify the developer's work in creating and reviewing code. + +### _Dogfooding_ + +_Dogfooding_ means using your own products. Our platform fits into this concept since **bohr.io is a project within bohr.io itself**. In other words, you can open bohr.io within bohr.io (something like the movie Inception by director Christopher Nolan). 🤩 + +## See Also + +In the side menu or the links below, you can access documentation for specific areas of bohr.io: + +- [Environment Variables](https://docs.bohr.io/docs/variaveis-de-ambiente) +- [Importing Github Repositories](https://docs.bohr.io/docs/importacao) +- [Settings](https://docs.bohr.io/docs/project-settings) +- [Preview Deploys](https://docs.bohr.io/docs/preview-deploys) +- [Template: Portfólio](https://docs.bohr.io/docs/Templates/portfolio-template) +- [Template: Gatsby](https://docs.bohr.io/docs/Templates/gatsby-template) +- [Template: Dashboard](https://docs.bohr.io/docs/Templates/dashboard-template) +- [Domains](https://docs.bohr.io/docs/domains) +- [Logs](https://docs.bohr.io/docs/logs) +- [Authentication](https://docs.bohr.io/docs/autenticacao) +- [Localhost](https://docs.bohr.io/docs/localhost) diff --git a/i18n/en/docusaurus-plugin-content-docs/current/terms-of-use.md b/i18n/en/docusaurus-plugin-content-docs/current/terms-of-use.md new file mode 100644 index 0000000..abfc67d --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/terms-of-use.md @@ -0,0 +1,198 @@ +# Terms of Service + +Please carefully review these Terms of Service ("Terms") before utilizing the bohr.io websites and applications (the "Service") operated by bohr.io, Inc. (“bohr.io”, "us", "we", or "our"). + +Your ability to access and utilize the Service is contingent upon your acceptance of and adherence to these Terms. These Terms are applicable to all individuals, users, and other parties seeking to access or utilize the Service. + +Upon accessing or utilizing the Service, you signify your agreement to be bound by these Terms. Additionally, you acknowledge your agreement to comply with our Privacy Policy located at bohr.io/privacy, which is hereby incorporated by reference. If you find yourself in disagreement with any aspect of these Terms, you are not authorized to access or use the Service. + +## The Service + +Our Service offers users a hosted platform and a collaborative community to engage in coding, development, sharing, and deployment of software and web servers. + +## User Consent to Acceptable Service Use + +Your utilization of the Service is governed by the restrictions on usage and content outlined in these Terms. In the event that you are identified as contravening these Terms or any of our additional policies, at any juncture, as determined solely by bohr.io, we reserve the right to issue a warning, suspend, or terminate your account. + + +## Prohibited Activities +When utilizing the Services, you are strictly prohibited from engaging in or allowing any third party, including your end users, to engage in the following actions: + +- Sending, uploading, distributing, or offering to disseminate any content that is unlawful, defamatory, harassing, abusive, fraudulent, infringing, obscene, or otherwise objectionable; +- Deliberately distributing viruses, worms, defects, Trojan horses, corrupted files, hoaxes, or any other items with malicious or deceptive intent; +- Participating in pyramid schemes or similar activities; +- Transmitting content that could be harmful to minors; +- Impersonating another individual (via email or any other means) or misrepresenting yourself or the origin of any email; + +- Creating accounts through automation or registering accounts in bulk without prior written consent from bohr.io; +- Unlawfully transmitting another party's intellectual property or proprietary information without explicit permission from the owner or licensor; +- Utilizing the Service to infringe upon the legal rights (such as privacy and publicity rights) of others; +- Promoting or encouraging illegal actions; +- Utilizing the Service in any manner that supports or facilitates human trafficking, sex trafficking, or physical abuse; +- Interfering with or disrupting the Services or imposing an undue burden on bohr.io's infrastructure or the networks and services connected to it; +- Using the Service to launch attacks or tamper with other websites, services, or individuals; +Conducting extensive load testing without obtaining written consent from bohr.io, as this may be construed as a denial-of-service attack; +- Deploying automated systems, including but not limited to "robots," "spiders," or "offline readers," to access the Service in a manner that exceeds the reasonable request volume a human could generate using a conventional online web browser within a given time period. Exceptions may be granted to public search engine operators for the creation of searchable indices, subject to bohr.io's discretion. However, the collection of personally identifiable information or commercial solicitation through the Service's communication systems is strictly prohibited. Users are not allowed to solicit other users' content for commercial purposes. +- Renting, leasing, loaning, selling access to, or attempting to transfer any rights to bohr.io's website (including its software and documentation) to a third party, through framing or any other method; +- Altering, adapting, translating, or reverse engineering any part of the Service. This includes engaging in practices such as "screen scraping," "database scraping," or any activity intended to extract lists of users, portions of databases, visuals, business methods, or other information from the Service, beyond what is authorized in writing by bohr.io, or for competitive purposes; +- Removing any copyright, trademark, or proprietary rights notices present on or within the Service; +- Reformatting or framing any section of the Service's administrative display web pages; +- Utilizing the Service for cryptocurrency mining, such as "mining" bitcoins or other cryptocurrencies, or Cycles; +- Displaying hate-related or violent content or promoting materials, products, or services that violate or encourage conduct in contravention of criminal laws, other applicable laws, or third-party rights; +- Altering the bohr.io logo, bohr.io Marks, or any other bohr.io logos; +- Sending unsolicited messages or employing the Service to transmit unsolicited messages (commonly referred to as junk mail or SPAM); +- Repetitively forking or cloning projects to run or host identical code, causing undue load on the Service; +- Creating a proxy through the Service with the intent to bypass any firewall or access control measures; +- Participating in attacks designed to extract or steal trained machine learning models utilized by bohr.io or its third-party service providers. + +## Restricted Content +You are prohibited from uploading or transmitting any of the subsequent forms of User Content (as defined below) via the Service: + +- User Content that violates a third party's rights (e.g., copyright) in accordance with relevant laws; +- Excessively offensive User Content; +- User Content promoting hate or violence; +- User Content endorsing racial or ethnic intolerance; +- User Content aimed at advocating or promoting computer hacking or cracking; +- Other illicit activities, including but not limited to the illegal export of controlled substances or illegal software; +- Items related to drug paraphernalia; +- Phishing-related content; +- Malicious User Content; +- Other materials, products, or services that contravene or encourage conduct that breaches criminal laws, other applicable laws, or the rights of third parties; +Nudity and sexually explicit content or activities, including pornography and the sale of sexual services; +- Content that supports or facilitates suicide or self-harm, encompassing instructions or graphic depictions of such acts; +- Content associated with gambling, such as card, roulette, or dice games played for money, Cycles, or any other form of value. + + +## Usage Quotas and Restrictions + +bohr.io enforces specific usage thresholds and constraints for its service. These boundaries comprise both rigid and flexible limits. Rigid limits are automatically upheld by the Service, while flexible limits encompass consumable resources that you pledge not to surpass. + +Comprehensive information about these limits can be found at https://bohr.io/site/pricing and may be periodically revised. Extended periods of inactivity may lead to the categorization of your account or usage of the Service as inactive. + + +## Your Interaction with Service Content + +In addition to the general limitations stated above, the subsequent constraints and provisions pertain specifically to your engagement with content accessible through the Service, including trademarks, service marks, and logos ("Marks") featured on the Service, collectively referred to as "Service Content." + +The ownership or licensing of Service Content rests with bohr.io or other entities, and it is protected by copyright and other intellectual property rights as governed by the law. Service Content is provided to you in an "as-is" manner. You may access Service Content solely for informational and personal use in compliance with these Terms. You are not authorized to download any Service Content unless a "download" or equivalent link is presented by bohr.io for that particular Service Content. + +Except as outlined in the "Open Source and User-Generated Content" section below, you shall refrain from copying, replicating, distributing, transmitting, broadcasting, displaying, selling, licensing, or otherwise exploiting any Service Content for alternative purposes without the prior written consent of bohr.io or the relevant licensors of said Service Content. bohr.io and its licensors retain all rights not explicitly granted in relation to the Service and Service Content. + +You pledge not to bypass, deactivate, or otherwise interfere with security features of the Service or features that impede or limit the utilization or duplication of any Service Content, or impose constraints on the Service or Service Content's usage. While using the Service, you acknowledge that you will come across Service Content from diverse sources, and bohr.io is not accountable for the accuracy, utility, safety, or intellectual property rights associated with such Service Content. Furthermore, you acknowledge that you may encounter Service Content that is erroneous, offensive, inappropriate, or objectionable. + + +## User-Generated Content + +Through our Service, you have the capability to publish, link, store, share, and otherwise make available various forms of information, code, text, graphics, videos, or other materials ("User-Generated Content"). Given that our Service encompasses a code editor and file manager for the purpose of uploading User-Generated Content, you have complete control over the nature and kind of content you upload. Consequently, you (and not bohr.io) bear the responsibility for the User-Generated Content you post on or through the Service, including its legality, dependability, and appropriateness. + +By posting or generating User-Generated Content on or through the Service, you affirm and guarantee that: (i) unless stipulated in the "Open Source and User Content" section below, the User-Generated Content belongs to you (you are the rightful owner) and/or you possess the necessary rights to use it, along with the authority to grant us the rights and license outlined in these Terms, and (ii) the act of posting your User-Generated Content on or through the Service does not transgress the privacy rights, publicity rights, copyrights, contractual rights, intellectual property rights, or any other rights of any individual or entity. We retain the right to terminate the account of any individual found to be infringing upon copyright or any other intellectual property rights. + +With the exception of the "Open Source and User Content" section below, you maintain all your rights to any User-Generated Content you submit, post, or display on or through the Service, and it is your responsibility to safeguard those rights. We do not assume any responsibility, and unless prohibited by law, we disclaim any liability for User-Generated Content posted by you or any third party on or through the Service. However, by posting User-Generated Content using the Service, you grant us a non-exclusive, worldwide, royalty-free, fully paid-up, sublicensable, and transferable right and license to utilize, modify, publicly perform, publicly display, reproduce, and distribute such User-Generated Content on and through the Service, adhering to these Terms and our Privacy Policy. You consent to this license encompassing the right for us to make your User-Generated Content accessible to other users of the Service, who may also use your User-Generated Content in accordance with these Terms. + +bohr.io possesses the authority, but not the obligation, to supervise, edit, remove, or share User-Generated Content supplied by users, whenever it holds the belief in good faith that it is essential to comply with relevant laws, maintain the uniformity, security, and stability of our Service, or for any other valid reason. + +Excluding the "Open Source and User-Generated Content" section below, you are prohibited from distributing, altering, transmitting, reusing, downloading, reposting, copying, or employing the aforementioned User-Generated Content, whether in part or in full, for commercial purposes or personal gain, without obtaining prior written authorization from us. + + + + +## Extensions Marketplace + +The Extensions Marketplace provides you access to Repls, which enhance the functionality of your Workspace and individual Repls. Extensions available in the Marketplace are developed by bohr.io and third-party providers known as "Developers." Your rights and usage as an Extension user are supplemented by the bohr.io Extensions Marketplace - User Terms. + +The Extensions Marketplace also enables you to create and offer Extensions for use by other users. If you are an Extension Developer, your access and usage rights are further explained in the bohr.io Extensions Marketplace - Developer Terms. + + +## Purchases +If you intend to make a purchase ("Purchase") of any product or service offered through the Service, you might need to provide specific information relevant to your Purchase, including but not limited to your credit card number, credit card expiration date, billing address, shipping details, and CSC number. + +You affirm that: (i) you possess the legal authorization to use any credit card(s) or payment method(s) in relation to any Purchase; and (ii) the information you provide to us is accurate, truthful, and complete. + +We maintain the right to decline or cancel your order for various reasons, including, but not limited to, product or service unavailability, inaccuracies in product or service descriptions or pricing, errors in your order, suspicions of fraud or unauthorized/illegal transactions. + + +## Availability, Errors, and Inaccuracies + +Our offerings of products and services on the Service are frequently updated. However, there might be delays in updating information on the Service and other platforms where we advertise. Products or services could be discontinued, mispriced, inaccurately described, or unavailable on the Service. + +We cannot guarantee the precision or comprehensiveness of any information found on the Service. We may provide features utilizing artificial intelligence, such as code generation. +Therefore, we reserve the right to modify or revise information and rectify errors, inaccuracies, or omissions at any time without prior notification. + + +## Notifications and Communication +By registering an account on our Service, you acknowledge that we may occasionally reach out to you to provide notifications about specific changes or additions to the Service, or in relation to your utilization of the Service. When an email address is required, you are responsible for maintaining your most current and accurate email address. In instances where the last email address provided to us is invalid or incapable of delivering necessary notices as stipulated by these Terms, the dispatch of the email containing such notice will still be regarded as effective communication. + + + + +## Contests, Sweepstakes, and Promotions + +Any contests, sweepstakes, or other promotional activities ("Promotions") offered through the Service may be governed by separate rules apart from these Terms. If you engage in any Promotions, please review the specific rules along with our Privacy Policy. If the rules for a Promotion conflict with these Terms, the rules of the Promotion will take precedence. + +## Accounts; Account Termination Policy +Unless you are a student user of _Teams for Education_, you must be at least 13 years old to use the Service. However, children of all ages may utilize the Service if authorized by a parent or legal guardian. If you are under 18, you declare that you have obtained permission from your parent or guardian to use the Service. We encourage them to read these Terms together with you. + +For parents or legal guardians of users under 18, permitting your child to use the Service subjects you to the terms of this Agreement and holds you responsible for your child’s actions on the Service. + +Upon creating an account with us, you assure that the information you provide is accurate, complete, and up-to-date at all times. Failing to provide accurate, complete, or current information may lead to the immediate termination of your account. + +Safeguarding the confidentiality of your account and password is your responsibility, including restricting access to your computer and/or account. You consent to take accountability for any activities or actions that occur under your account and/or password, whether via our Service or a third-party platform. Promptly inform us if you suspect any security breach or unauthorized usage of your account. + +Your username must not infringe upon the rights of others, utilize a name or trademark that is lawfully unavailable, or employ a name that belongs to another individual or entity without proper authorization. Offensive, vulgar, or obscene usernames are prohibited. + +bohr.io may terminate a user’s access to the Service if the user is found to be a repeat infringer of our Copyright Policy below or if bohr.io, at its sole discretion, determines that a user has violated or breached these Terms. In the event that bohr.io, in its sole discretion, concludes that a user or User Content violates these Terms for any reason, bohr.io reserves the right to remove such User Content and/or terminate the user’s account without prior notice. Furthermore, we retain the right, at our sole discretion, to decline service, terminate, reclaim or repurpose accounts, edit or delete content, or cancel orders. + + +## Copyright Policy +We uphold the rights of intellectual property holders and have established a policy to address any assertions of copyright or other intellectual property infringement ("Infringement") arising from User Content posted on the Service. + + + +Submitting a claim that misrepresents or falsely accuses User Content on the Service of copyright infringement may render you liable for damages, including costs and legal fees. + + +## Indemnification +You consent to protect, indemnify, and hold bohr.io and its licensees, licensors, employees, contractors, agents, officers, and directors harmless from all claims, damages, obligations, losses, liabilities, debts, and expenses (including attorney's fees) arising from a) your use and access to the Service, whether by you or any individual using your account and password; b) a violation of these Terms; or c) Content posted on the Service. + + +## DMCA Notice and Procedure for Copyright Infringement Claims +You have the option to file a notification in accordance with the Digital Millennium Copyright Act (DMCA) by furnishing our Copyright Agent with the following written details (refer to 17 U.S.C 512(c)(3) for more specifics): + +- An electronic or physical signature from an authorized representative of the copyright owner; +- A depiction of the copyrighted work claimed to have been infringed, including the URL (web page address) where the copyrighted work is accessible or a copy of the copyrighted work; +- Identification of the precise URL or other specific location on the Service where the allegedly infringing material is situated; +- Your mailing address, telephone number, and email address; +- A statement by you, under penalty of perjury, attesting to your good faith belief that the contested use is not authorized by the copyright owner, its agent, or the law; +- A statement by you, under penalty of perjury, affirming the accuracy of the information in your notice and your status as the copyright owner or authorized representative. + + + + + +## Intellectual Property +The Service, along with its original content (excluding User Content contributed by users), features, and functionalities, including all associated intellectual property rights, are and will remain the sole and exclusive property of bohr.io and its licensors. The Service is safeguarded by copyright, trademark, and other laws of both the United States and foreign jurisdictions. The use of our trademarks and trade dress in connection with any product or service requires prior written consent from bohr.io. + + +## Links To Third Party Websites, Advertisements, and Services +Our Service may include links to third-party websites, advertisements, or services that are not owned or controlled by bohr.io. These links could appear alongside your User Content or be related to features of the Service. + +bohr.io exercises no control over, and to the maximum extent allowable by law, assumes no responsibility for the content, privacy policies, or practices of any third-party websites or services. We do not endorse the offerings of these entities or individuals, or their websites. + +You acknowledge and accept that bohr.io cannot and will not review, censor, endorse, or alter the content of any third-party site, service, or advertisement. Any links to such third-party websites, services, or advertisements provided within the Service are for informational and convenience purposes only. You further acknowledge and agree that your use of any third-party websites, services, and/or advertisements is entirely at your own risk, and that exercising appropriate caution and discretion when accessing such third-party links is advisable. + +Upon clicking on any third-party links, the terms and policies of the respective third party apply, superseding these Terms. To the fullest extent permitted by law, by using the Service, you release bohr.io from any and all liability arising from your use of any third-party website, services, or advertisements, and/or from your use of or access to any third-party content made available through the Service, including User Content made accessible or retrieved through interactions with other Service users. + +You also acknowledge and agree that to the maximum extent allowable by law, bohr.io shall not be accountable or liable, either directly or indirectly, for any damage or loss purportedly caused or related to the use of or reliance on any such content, products, or services available on or through any third-party websites or services. + +### Termination +Your account may be terminated or suspended, and access to the Service revoked, immediately and at our sole discretion, without prior notice or liability, for any reason, including but not limited to a breach of these Terms. + +Should you wish to terminate your account, visit https://bohr.io/account and select the "Request Account Deletion" option. + +All provisions of these Terms that, by their nature, should survive termination, will endure accordingly. These include, but are not limited to, ownership provisions, warranty disclaimers, indemnification, and limitations of liability. \ No newline at end of file diff --git a/i18n/en/docusaurus-plugin-content-docs/current/variaveis-de-ambiente.md b/i18n/en/docusaurus-plugin-content-docs/current/variaveis-de-ambiente.md new file mode 100644 index 0000000..72688d3 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/variaveis-de-ambiente.md @@ -0,0 +1,18 @@ +--- +sidebar_position: 2 +--- + +# Environment Variables + +
+ +**bohr.io's environment variables** are useful for storing sensitive information, such as database credentials and API keys, among other examples. + +Currently, bohr.io uses some default environment variables, which can be modified in the **Build & Development** menu within your project's settings: + +- `BUILD_CMD` +- `DEV_CMD` +- `INSTALL_CMD` +- `DEPLOY_PATH` +- `PUBLIC_PATH` + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/versao-node-js.md b/i18n/en/docusaurus-plugin-content-docs/current/versao-node-js.md new file mode 100644 index 0000000..26cc818 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/versao-node-js.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 11 +--- + +# Node.js Version + +To change the Node.js version, access your project on bohr.io, go to Settings, Environment Variables, and add the variable BOHR_FUNCTION_RUNTIME with one of the values below: + +- `Nodejs16.x` +- `Nodejs18.x` +- `Nodejs20.x` + + +![image](https://github.com/bohr-io/docs/assets/69644385/b4e51b73-757e-43b8-a09e-bb5e2fe46e44) + diff --git a/i18n/en/docusaurus-theme-classic/footer.json b/i18n/en/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..eb38349 --- /dev/null +++ b/i18n/en/docusaurus-theme-classic/footer.json @@ -0,0 +1,38 @@ +{ + "link.title.Docs": { + "message": "Docs", + "description": "The title of the footer links column with title=Docs in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.Tutorial": { + "message": "Tutorial", + "description": "The label of footer link with label=Tutorial linking to /docs/start" + }, + "link.item.label.Discord": { + "message": "Discord", + "description": "The label of footer link with label=Discord linking to https://discord.com/invite/p3hhfGg2Uy" + }, + "link.item.label.Twitter": { + "message": "Twitter", + "description": "The label of footer link with label=Twitter linking to https://twitter.com/bohr_io" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to https://blog.bohr.io" + }, + "link.item.label.GitHub": { + "message": "GitHub", + "description": "The label of footer link with label=GitHub linking to https://github.com/bohr-io" + }, + "copyright": { + "message": "Copyright © 2023 bohr.io.", + "description": "The footer copyright" + } +} diff --git a/i18n/en/docusaurus-theme-classic/navbar.json b/i18n/en/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..41bee0a --- /dev/null +++ b/i18n/en/docusaurus-theme-classic/navbar.json @@ -0,0 +1,14 @@ +{ + "title": { + "message": "bohr.io", + "description": "The title in the navbar" + }, + "item.label.Docs": { + "message": "Docs", + "description": "Navbar item with label Docs" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + } +} diff --git a/i18n/pt/code.json b/i18n/pt/code.json new file mode 100644 index 0000000..7a00392 --- /dev/null +++ b/i18n/pt/code.json @@ -0,0 +1,265 @@ +{ + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again when the page crashed" + }, + "theme.NotFound.title": { + "message": "Página não encontrada", + "description": "The title of the 404 page" + }, + "theme.NotFound.p1": { + "message": "Não foi possível encontrar o que você está procurando.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Entre em contato com o proprietário do site que lhe trouxe para cá e lhe informe que o link está quebrado.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Volte para o topo", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Arquivo", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Arquivo", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Navegação da página de listagem do blog", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Conteúdo mais novo", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Conteúdo mais antigo", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Navegação da página de postagem do blog", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Postagem mais nova", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Postagem mais antiga", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "Uma postagem|{count} postagens", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} marcadas com \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "Ver todas os Marcadores", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.DocCard.categoryDescription": { + "message": "{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Navigação das páginas de documentação", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Anterior", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Próxima", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "Um documento selecionado|{count} documentos selecionados", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} com \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "Esta é uma documentação não lançada para {siteTitle} {versionLabel}.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "Esta é a documentação para {siteTitle} {versionLabel}, que não é mais mantida ativamente.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "Para a documentação atualizada, veja: {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "última versão", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Editar essa página", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Link direto para o título", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " em {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " por {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Última atualização {atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Marcadores:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Fechar", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copiado", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copiar código para a área de transferência", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copiar", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel": { + "message": "Toggle the collapsible sidebar category '{label}'", + "description": "The ARIA label to toggle the collapsible sidebar category" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "Nessa página", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.blog.post.readMore": { + "message": "Leia Mais", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "Leitura de um minuto|Leitura de {readingTime} minutos", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Fechar painel lateral", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Fechar painel lateral", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Voltar para o menu principal", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expandir painel lateral", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expandir painel lateral", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.common.skipToMainContent": { + "message": "Pular para o conteúdo principal", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Marcadores", + "description": "The title of the tag list page" + } +} diff --git a/i18n/pt/docusaurus-plugin-content-blog/options.json b/i18n/pt/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000..9239ff7 --- /dev/null +++ b/i18n/pt/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,14 @@ +{ + "title": { + "message": "Blog", + "description": "The title for the blog used in SEO" + }, + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} diff --git a/i18n/pt/docusaurus-plugin-content-docs/current.json b/i18n/pt/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..192443b --- /dev/null +++ b/i18n/pt/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.tutorialSidebar.category.Utilizando o Bohr": { + "message": "Utilizando o Bohr", + "description": "The label for category Utilizando o Bohr in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Templates": { + "message": "Templates", + "description": "The label for category Templates in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Frameworks": { + "message": "Frameworks", + "description": "The label for category Frameworks in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Configurações do Projeto": { + "message": "Configurações do Projeto", + "description": "The label for category Configurações do Projeto in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Domínios": { + "message": "Domínios", + "description": "The label for category Domínios in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.doc.Introdução": { + "message": "Introdução", + "description": "The label for the doc item Introdução in sidebar tutorialSidebar, linking to the doc start" + }, + "sidebar.tutorialSidebar.doc.Domínios": { + "message": "Domínios", + "description": "The label for the doc item Domínios in sidebar tutorialSidebar, linking to the doc domains" + } +} diff --git a/i18n/pt/docusaurus-theme-classic/footer.json b/i18n/pt/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..eb38349 --- /dev/null +++ b/i18n/pt/docusaurus-theme-classic/footer.json @@ -0,0 +1,38 @@ +{ + "link.title.Docs": { + "message": "Docs", + "description": "The title of the footer links column with title=Docs in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.Tutorial": { + "message": "Tutorial", + "description": "The label of footer link with label=Tutorial linking to /docs/start" + }, + "link.item.label.Discord": { + "message": "Discord", + "description": "The label of footer link with label=Discord linking to https://discord.com/invite/p3hhfGg2Uy" + }, + "link.item.label.Twitter": { + "message": "Twitter", + "description": "The label of footer link with label=Twitter linking to https://twitter.com/bohr_io" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to https://blog.bohr.io" + }, + "link.item.label.GitHub": { + "message": "GitHub", + "description": "The label of footer link with label=GitHub linking to https://github.com/bohr-io" + }, + "copyright": { + "message": "Copyright © 2023 bohr.io.", + "description": "The footer copyright" + } +} diff --git a/i18n/pt/docusaurus-theme-classic/navbar.json b/i18n/pt/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..41bee0a --- /dev/null +++ b/i18n/pt/docusaurus-theme-classic/navbar.json @@ -0,0 +1,14 @@ +{ + "title": { + "message": "bohr.io", + "description": "The title in the navbar" + }, + "item.label.Docs": { + "message": "Docs", + "description": "Navbar item with label Docs" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + } +}