feat (docs): overhaul structure (#3254)

### **PR Type**
Enhancement, Documentation


___

### **Description**
- Restructured docs navigation and content

- Updated links and paths throughout docs

- Refreshed images and examples in guides

- Added new content for AI, Auth, and Run


___



### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>15
files</summary><table>
<tr>
<td><strong>docs.json</strong><dd><code>Restructure navigation and add
new sections</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-873ce17c654718debe2fe308a2f2279bde8663686423c51f97fab2dd0722b8d9">+616/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>welcome.mdx</strong><dd><code>Add new welcome page with
getting started links</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-b35cb8e6a6201730c2d95103d1275186d72e727686bfd6470256c0c30137a761">+65/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>overview.mdx</strong><dd><code>Add new getting started
overview page</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-8c9b35da559a5de5fe14ee078573e8d487453e26ed760c03ffd7f0ad476ca24d">+88/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>overview.mdx</strong><dd><code>Add new products overview
page</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-745a45fa3dbe67784dd921e50865c7ef33fdc6488cff1ccc75d9db524799d8b3">+81/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>overview.mdx</strong><dd><code>Add new platform overview
page</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-63ed954170e482e58b02938bcf8ab3c5b9b76b1a37b23b521cd88de2685ab566">+46/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>overview.mdx</strong><dd><code>Update AI overview with new
content and links</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-e36c2139a3deb3ca81742e73df8ce981aa4502fcb3713832636088eda8f120fd">+10/-10</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>overview.mdx</strong><dd><code>Add new Auth overview
page</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-fcb8a858a73ee17bb801d63453716d58b940d7b1e51f48c5fb184e34971866f2">+49/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>overview.mdx</strong><dd><code>Update Database overview with
new content</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-542ffbd4d75869cef7479dbc59a2c7c67272879b4f219488193794567b545351">+8/-9</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>overview.mdx</strong><dd><code>Update Run overview with new
content and links</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-ca49842af7e87c264e3ce8c19f4df657890fa0965cc188dbffafcd6ced1c526c">+11/-11</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>overview.mdx</strong><dd><code>Add new Cloud overview
page</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-32f53230fbf8b84f6a60dbf37568f8a4ea4bcab6f2e00e4357cd3b7f4c50cb55">+70/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>style.css</strong><dd><code>Add new styles for welcome
page</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-4dde236d1a1b6f7a24be281ce9e8212368612d66a631fa592bfe18653f57c601">+80/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>echo.ts</strong><dd><code>Add echo function
example</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-95b428813572cd2a2abcaf0c6e243622d757860c22f170c82126e5d2cbb269f0">+13/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>email-confirm-change.tsx</strong><dd><code>Add email confirm
change template</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-34aea348d369ef146295ec5c36c6df0fde8262277b93b98d7d9f4633092dc195">+129/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>signin-passwordless.tsx</strong><dd><code>Add signin
passwordless email template</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-2d67959219d5979cf79921d4e8a86e16cceb46cd1e909a1783b68d27a85a0998">+127/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>email-verify.tsx</strong><dd><code>Add email verify
template</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-139c6d5e04e5f6d2ce2c8e08a513a9830752fd9baff2aab415c9e34b0cee9918">+127/-0</a>&nbsp;
</td>

</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>2 files</summary><table>
<tr>
<td><strong>docker-compose.yaml</strong><dd><code>Update Docker Compose
configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-47a924f5ea105a2a42b2c421901d43cf1f834a94be0c2f2f868d29dd8990b060">+481/-174</a></td>

</tr>

<tr>
<td><strong>.env.example</strong><dd><code>Update environment variables
example</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-08ca7f9ad9d499c71a30703d1bb00c4c599646480cfcc311972bfaa654530c45">+13/-25</a>&nbsp;
</td>

</tr>

</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>2
files</summary><table>
<tr>
<td><strong>README.md</strong><dd><code>Update Docker Compose example
README</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-34955300bc0ac9daa466c28e7aa59683b9b0c89e16344cf0544772acfb971b8f">+184/-23</a></td>

</tr>

<tr>
<td><strong>README.md</strong><dd><code>Update main README with new doc
links</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5">+14/-14</a>&nbsp;
</td>

</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>101 files</summary><table>
<tr>
  <td><strong>CONTRIBUTING.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-eca12c0a30e25b4b46522ebf89465a03ba72a03f540796c979137931d8f92055">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>DEVELOPERS.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-bd017515eb79a7fb7569b1d15e8963ea380123d4fdf779978dd4b3ab7500fd10">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>README.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-c15729e6c35a283a4b0eda60a991303b6c36c03903ba42dbf832bb8d0daa1a1a">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>AuthenticatedLayout.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-2d69ccffd267658f76d77a864cdece93fc222e08f6025955795fc6f4697f60e7">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>docs.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-ba8b2e40409d3782ac444d6c60d7f478772311cb211acd1c24c791937e47f1c6">+7/-7</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>SubscriptionPlan.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-2a5f070869055286b669e382b18d656935752803b9a1ef13390ac028c2a48ac4">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>SettingsLayout.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-aa21cda513a125d8cefc5e7b5e1c755128aa904657350abf0ce1cde21e27ca75">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>AllowedEmailSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-f4b2730b26266319aa6e705012da5bd20774881bc473411bd8b1619bbd0646d1">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>AllowedRedirectURLsSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-5c4c3714c99421265e1c35dd4300423407f758555eab0622d1f3bf12e7eb13ce">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>AppleProviderSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-2e75c4eada80cf228714593e2cd315108b5d10ff7f20bd91e8bc884f571f6f85">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>BlockedEmailSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-3a99b1db51b5654043151df4d77ad1ec369dd6d475e3261f80bb52e55dd81296">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>ClientURLSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-fd60e1f63909e5cf5a57ca7cb9eb5c8577683b638e94185cc840ce8fc6ad0d39">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>DisableNewUsersSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-60f6b3603e0467216d9633f4f92879a37416e202b18f0a4da0171332492fb6cf">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>DisableSignUpsSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-13b3734c8b8aed2e159affbfc9997846e85e2096e739479c72a09e9101d31faf">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>DiscordProviderSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-640c83d25085fd13cac559d4b567e2b14f0ef77e003d3b0a6fd4c35b2b5177f9">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>EmailAndPasswordSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-b4c8b368defc138ebbf777af773d0a98d00f7130e4f795b0fd83cf934bbf9a4a">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>FacebookProviderSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-5103b8085b43ba8f884429a70076ac8707a1510f06d62b5bf5bd08380ef4385c">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>GitHubProviderSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-438abe40d1c5ea84110c526038042a65d4c960a87f0371c23fc5d493350c5bd7">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>GoogleProviderSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-3c17bcfb21f6d2066f4727df5d059cfe871a5e1cf5efede5fcdf97d86ce17dbd">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>GravatarSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-e6d30e32ab062fd6060282190a4b28d86cd7aaf1a08fe3090056759ea43cfc02">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>LinkedInProviderSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-1efc0012f8c04ff4d54a29d20c0bc81422bcb5d689f4141c52179d7e8c054a7f">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>MFASettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-edb42fdfa300aae0bea103b9b4cc379e3d5c49ed00646a30673473660982904f">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>MagicLinkSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-d698ac461b405af3109f38cf74a81eb919193c28a62fa8abda7f62ba573a38e8">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>SMSSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-beffd7762c6b4f12ba0edd9e524fe07c33062f5d8c12d3783ae2bb42e1380f64">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>SpotifyProviderSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-93ba8b83aa965db9730f5f4aef9da2db8279a924a3812fc9e6f880173fa4235c">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>TwitchProviderSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-0f30d19f5b40424b59a85450a33f870a1a3e7b844e36e2ff7a92ce6c35a441c1">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>WebAuthnSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-d34c84f3b66fa2b843540e1829d3c827e38c46d5e663b8dcad11dac964a34080">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>WorkOsProviderSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-f0cd2c2e6badf59f882d564bf06617345cb4243bc699af4d02420ec2aefb166e">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>PointInTimeBackupInfo.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-35be453f6605231bcee5b7f7f78564eb7aa2be723f5169509f9dddfe84477fe6">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>DatabasePiTRSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-7a638c446af8419249770dc8da1ea522f950163b1d0045020927216c38db8cec">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>EnvironmentVariableSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-621bb42cb9fe0a763d30e738ab075af2784e8538e5ed7ac6ff1aa132d1a38042">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>SystemEnvironmentVariableSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-b952daa2a34e49a14c5a471477fa2d50583091e420d88a3b941503b092d18e5c">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>EditRepositoryAndBranchSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-e19e36c0830816cdd4d73cd058b91295bbfcbe65c37c36fa9a87e9c1f2e3b7ef">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>BaseDirectorySettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-50bcccdf949a19ce69fa86acdd63b5291fa2beaba07191a62c87d40ea5b94e88">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>DeploymentBranchSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-d8fc80cc734f593c686f873536856bf9103efb1115ca865709bbeb7bd940895e">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>GitConnectionSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-9e7a97afc3500aa2f4b28bdf4acb135925d92a6a595e16a3808b0b90ecc6be58">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>JWTSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-4bc7ce8b3f6e45940e5137c199d24b7a62cf3f804bf9c51b34a5f1168567ef25">+4/-4</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>ContactPointsSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-50a024995bad7b420fd717104a1584009e9fa44c508889dd125155f33d99f48e">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>MetricsSMTPSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-db01779fdfdece601aa83a1a2c256e65514602344a8556afd5832d32e465bc65">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>MetricsSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-957bb404fee8d18aa45af9e878837d311b69d9805ac16fe8d2c0e9d3b431e906">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>features.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-036778e07a1cdf33b7d90d8110f75338f8cd6870cc68bb75cff0c880318cd92d">+4/-4</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>frameworks.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-3833ff9ca6b5f1020384672b9de38149de400c57beaeb65ea255475ba8ce7da3">+3/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>PermissionVariableSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-ffbd1a0083e64318b68922362b6392090e24facc2a6476dc31e54e988a7599f6">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>ResourcesFormFooter.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-035d56050da913a9ab98c730bb88b34c734149053674204b86bd798d79f81371">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>ServiceResourcesFormFragment.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-9b9bf7e4f4e4dd34502e1b636c9f9aabbb20defe43595a79aa7e3f7d89750029">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>RoleSettings.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-4cd13b62487b2de616d26d895ce4bb3afc7380abf9f3831ef2b949d073802a1f">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>ComputeFormSection.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-b5600bae05b535d54dc04b2a847b6402b10575efd87a0e7098796f0f9ae96d51">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>HealthCheckFormSection.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-9287c48c51c8a48a4b4aedcdc195cd9c8c79d3b3e2072765608081bc341f7fba">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>ImageField.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-6f618d85f2ca9a85b2a754f45e7b7e7803317be7e5dfd0e05bbee87c5bd1f116">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>PortsFormSection.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-75c4254c31fe6addb187b5d122dd1fa171c1a8875c0152a6c1b2a05257c61d4c">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>custom-domains.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-e35b13396a4aa0b96e35dd7a0b1a27d188c0d45fe20cbda99e2fd59b83da5574">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>rate-limiting.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-f31e44eb689a0e65e60f6eb2701f7adf283582fa5014c8727dc4922ecbd8c657">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>snippet-example.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-5fdce31e426151efa036ecdc78f6842c3bcd644a3d7658b1c753ee80c55d3cc8">+0/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>coc.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-dc80329f722e73bc46ee76902de782b4f696a4be0224658cbbb0a70127cb7627">+128/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>getting-involved.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-4c15a93e9b63664bed77a875378d805efc8dc787bc0e1d6a6f413a376c5e6983">+57/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>commands.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-2053eb5138f4c468b9aa94e6fd7302ad2f577839be107741f265ae1b2d9bfcaa">+0/-158</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>getting-started.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-05cc8d760dce63f257bee91e9c0293424a63e0ed210d26c7bca78bc3a3d5d763">+0/-87</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>overview.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-dfcca51e047037e649bbf76e68ab3aa9161a85c1bd25cf385acc5e764bea0cd3">+0/-32</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>nextjs.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-291e724f8e8aadb8d126a30590af172b9b82fe187407c83cfc0673d76efd1188">+3/-7</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>react.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-fdf7ec55eee7c46bd8f83f8bf10066a136d21181bd6a04d513ae4c3bfaec1dc5">+7/-21</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>reactnative.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-bac475908ec022811c05fccec3d0eae805b25419b65a5d2537d70c606415d586">+14/-28</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>vue.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-1fee09fc68c4d33cea15dcb726c3e3671fdfbfc605a1751337f685f3cf851ca5">+3/-7</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>nextjs.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-a5210d45e7d33a57d43078dbe2a2ccbf0667b157291fd92c3986092d7d33ab9c">+10/-11</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>react.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-6f5adda9f7b29d98c68cab6ec754c0bac501666a49dd635ee830789e2c812b68">+9/-9</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>vue.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-f6c4215fa6909fd3accebe0691a7364d17befb8ef90da5a4aeaee83d598c0540">+9/-9</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>overview.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-3ca431109466557ec1ba7fbd4cb01fa0ad6316e3a9a2fe9c4a849b2760cc7613">+0/-115</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>overview.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-2a040923190b20dd4aa651b3cae8a7be263e7c5d014a71e9f27d628fa7404c08">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>getting-started.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-f5ce74103419f39f4217dd75f3e89517779c94615558ae726ae1b4519328a939">+0/-35</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>diagrams.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-5f90e86736e92ab8b695c8cad8bd1d65d2be49609da7e693957bad0e238e563e">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>overview.mermaidjs</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-e68718f71eddf030085b739d48f6067bbb15f2421256ff27620d00f022b0c710">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>sequence.mermaid</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-cec810243251bf77934d8689d65f3e7d33f7632decf51e5eb7115b17042c11d9">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>introduction.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-0166b0574213b999964155797259928739a25e0a09d0442bdd14ff8307dcca30">+0/-85</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>mint.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-c91a604899dfef4b2494c317f4fd39a7f22b79986095f580399347293d534deb">+0/-560</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>package.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-adfa337ce44dc2902621da20152a048dac41878cf3716dfc4cc56d03aa212a56">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>configuration-overlays.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-f94c8434a3810529922d6b73ebd5f348e4f978b973e2959de0c0e45889b914d9">+7/-7</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>local-development.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-29e98b0241b9335e8929e64440664e4be275f3a3965a88d22a3eb80b5034fca1">+4/-4</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>migrate-config.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-0e2b5b8948935d313421790d173d10bb5c1242166f97d87fbf35d2a010d643f1">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>multiple-projects.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-b756a0fa80d9cdbefb538f676c90521bcff5e730498cde0430bfe789475c4e2f">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>overview.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-18be817b7d51e5caba56718075ae087777f3e3811987257d48949ada0fe96da8">+46/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>seeds.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-94215e4f4b5a3df8c20f0102f5755ecb55b5155d6ddbae30844666e477b496ab">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>subdomain.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-3300c8ab184167028e82d2e66932958ac55ebe94fba7d1aa2e45e8180178ea0e">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>billing.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-5a3b0998ad9e2f09c66255dff3651de3c6d7999e8e9c84169481e5e8af95935d">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>compute-resources.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-e2c40097d219e905b83f9e5ea40b19f6b927f846d7834b37a2dbe93dea3f5299">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>custom-domains.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-6004c16e12e623eda4d50a3b2e4f8ecbf5c2e1bbc9e5a91a62232e3a35f76a9d">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>environment-variables.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-49e8324f160e8fbe2cfea76adb45de7bbc3da6ca3d64d3a786a0f188c8bec9dc">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>git.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-d427ee2887e5cae303ce21a0b08300a82955c0f7f231ecea2ee198b69b0feb8d">+52/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>logs.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-d04ffc497f0eac2496c6bb7d4dfbb49853f35ba380dd45baf2d3239f8a42d569">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>metrics.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-14a13543059bf5d4903769ef3e6a90bb63af5cacc6105a35689ff75936421ea2">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>rate-limits.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-16b5125772f57a495889904938e950431b7b03a886e32241a162554b952db0c1">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>secrets.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-4c49bd272574c88f0d475d349c782c4ea24ba5cef97127106ebddde5befe7f4e">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>service-replicas.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-9188cea8fe3017f7732d5c9ed6600ef0147da8e960cff24ac4c6e156b53c4be1">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>subdomain.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-6d4add19495d7514bbaf0d67d9e60cf83b10ca4de6012aaf39dc0e39f3086bc6">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>tls.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-ca2d4657dffa3ca239e06eef76855154feb9b155317c67ff182d79f81aeaa236">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>deployments.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-6fa07c021c9566a75e9aca5efbf0f4708bd9862bb5484bf95cc25ce00f30e853">+0/-38</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>community.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-4f14893ed8d4ebde9be284bec0c27adc760452f8939246a6a65361bfd70760b8">+13/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>dedicated.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-78f989a9a039240f69408cb775632f7494754276051eae98af420dadf096c8cd">+18/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>overview.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-7cc9f04b4559ab62c5104791051ff7d7ad8dea108f1720eb260aa8e68475b0ee">+40/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>support.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-2aa4bcb1194ac3857cbb1846e43db4f1a5ebd0d9302e02308ce1502fb8c0a763">+17/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>product.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-3a7c615149cb270f3f59493a817306f87f8771114d1272de085359996e64bef2">+0/-56</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>authentication.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-1d91de2bc59159b3d47e86967f6ea82c608a10eb277d3fc0b5734f6f19305089">+0/-66</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>Additional files not shown</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3254/files#diff-2f328e4cd8dbe3ad193e49d92bcf045f47a6b72b1e9487d366f6b8288589b4ca"></a></td>

</tr>
</table></details></td></tr></tr></tbody></table>

___

> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a>
for more information.</li></details>

---------

Co-authored-by: Sumit Saurabh <62152915+sumitsaurabh927@users.noreply.github.com>
Co-authored-by: Nuno Pato <nunopato@gmail.com>
This commit is contained in:
David Barroso
2025-04-01 09:34:27 +02:00
committed by GitHub
parent 8ea263ec75
commit 69c1ffa766
433 changed files with 7823 additions and 3736 deletions

View File

@@ -31,7 +31,7 @@ PRs to our libraries are always welcome and can be a quick way to get your fix o
- Only fix/add the functionality in question **OR** address wide-spread whitespace/style issues, not both.
- Add unit or integration tests for fixed or changed functionality (if a test suite exists).
- Address a single concern in the least number of changed lines as possible.
- Include documentation in the repo or on our [docs site](https://docs.nhost.io/get-started).
- Include documentation in the repo or on our [docs site](https://docs.nhost.io).
- Be accompanied by a complete Pull Request template (loaded automatically when a PR is created).
For changes that address core functionality or require breaking changes (e.g., a major release), it's best to open an Issue to discuss your proposal first. This is not required but can save time creating and reviewing changes.

View File

@@ -14,10 +14,10 @@ The easiest way to install `pnpm` if it's not installed on your machine yet is t
$ npm install -g pnpm
```
### [Nhost CLI](https://docs.nhost.io/cli)
### [Nhost CLI](https://docs.nhost.io/platform/cli/local-development)
- The CLI is primarily used for running the E2E tests
- Please refer to the [installation guide](https://docs.nhost.io/get-started/cli-workflow/install-cli) if you have not installed it yet
- Please refer to the [installation guide](https://docs.nhost.io/platform/cli/local-development) if you have not installed it yet
## File Structure

View File

@@ -4,7 +4,7 @@
# Nhost
<a href="https://docs.nhost.io/introduction#quick-start-guides">Quickstart</a>
<a href="https://docs.nhost.io/getting-started/overview">Quickstart</a>
<span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
<a href="http://nhost.io/">Website</a>
<span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
@@ -36,7 +36,7 @@ Nhost consists of open source software:
- Authentication: [Hasura Auth](https://github.com/nhost/hasura-auth/)
- Storage: [Hasura Storage](https://github.com/nhost/hasura-storage)
- Serverless Functions: Node.js (JavaScript and TypeScript)
- [Nhost CLI](https://docs.nhost.io/development/cli/overview) for local development
- [Nhost CLI](https://docs.nhost.io/platform/cli/local-development) for local development
## Architecture of Nhost
@@ -89,25 +89,25 @@ await nhost.graphql.request(`{
Nhost is frontend agnostic, which means Nhost works with all frontend frameworks.
<div align="center">
<a href="https://docs.nhost.io/guides/quickstarts/nextjs"><img src="assets/nextjs.svg"/></a>
<a href="https://docs.nhost.io/reference/javascript"><img src="assets/nuxtjs.svg"/></a>
<a href="https://docs.nhost.io/guides/quickstarts/react"><img src="assets/react.svg"/></a>
<a href="https://docs.nhost.io/reference/javascript"><img src="assets/react-native.svg"/></a>
<a href="https://docs.nhost.io/reference/javascript"><img src="assets/svelte.svg"/></a>
<a href="https://docs.nhost.io/guides/quickstarts/vue"><img src="assets/vuejs.svg"/></a>
<a href="https://docs.nhost.io/getting-started/quickstart/nextjs"><img src="assets/nextjs.svg"/></a>
<a href="https://docs.nhost.io/reference/javascript/nhost-js/nhost-client"><img src="assets/nuxtjs.svg"/></a>
<a href="https://docs.nhost.io/getting-started/quickstart/react"><img src="assets/react.svg"/></a>
<a href="https://docs.nhost.io/getting-started/quickstart/reactnative"><img src="assets/react-native.svg"/></a>
<a href="https://docs.nhost.io/reference/javascript/nhost-js/nhost-client"><img src="assets/svelte.svg"/></a>
<a href="https://docs.nhost.io/getting-started/quickstart/vue"><img src="assets/vuejs.svg"/></a>
</div>
# Resources
- Start developing locally with the [Nhost CLI](https://docs.nhost.io/cli)
- Start developing locally with the [Nhost CLI](https://docs.nhost.io/platform/cli/local-development)
## Nhost Clients
- [JavaScript/TypeScript](https://docs.nhost.io/reference/javascript)
- [JavaScript/TypeScript](https://docs.nhost.io/reference/javascript/nhost-js/nhost-client)
- [Dart and Flutter](https://github.com/nhost/nhost-dart)
- [React](https://docs.nhost.io/reference/react)
- [Next.js](https://docs.nhost.io/reference/nextjs)
- [Vue](https://docs.nhost.io/reference/vue)
- [React](https://docs.nhost.io/reference/react/nhost-client)
- [Next.js](https://docs.nhost.io/reference/nextjs/nhost-client)
- [Vue](https://docs.nhost.io/reference/vue/nhost-client)
## Integrations
@@ -140,7 +140,7 @@ This repository, and most of our other open source projects, are licensed under
Here are some ways of contributing to making Nhost better:
- **[Try out Nhost](https://docs.nhost.io/introduction)**, and think of ways to make the service better. Let us know here on GitHub.
- **[Try out Nhost](https://docs.nhost.io)**, and think of ways to make the service better. Let us know here on GitHub.
- Join our [Discord](https://discord.com/invite/9V7Qb2U) and connect with other members to share and learn from.
- Send a pull request to any of our [open source repositories](https://github.com/nhost) on Github. Check our [contribution guide](https://github.com/nhost/nhost/blob/main/CONTRIBUTING.md) and our [developers guide](https://github.com/nhost/nhost/blob/main/DEVELOPERS.md) for more details about how to contribute. We're looking forward to your contribution!

View File

@@ -38,7 +38,7 @@ These files are added to `.gitignore`, so you don't need to worry about committi
### Enable Local Development
You can connect the Nhost Dashboard to your **locally running** Nhost backend in a few steps. Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli#installation).
You can connect the Nhost Dashboard to your **locally running** Nhost backend in a few steps. Make sure you have the [Nhost CLI installed](https://docs.nhost.io/platform/cli/local-development).
First, you need to run the following command to start your backend locally:

View File

@@ -97,7 +97,7 @@ export default function AuthenticatedLayout({
<HighlightedText className="font-mono">nhost up</HighlightedText>?
Please refer to the{' '}
<Link
href="https://docs.nhost.io/platform/cli"
href="https://docs.nhost.io/platform/cli/local-development"
target="_blank"
rel="noopener noreferrer"
underline="hover"

View File

@@ -2,36 +2,36 @@
{
"title": "Create Your Project",
"desc": "Create a simple todo app using Nhost.",
"href": "https://docs.nhost.io/get-started/quick-start"
"href": "https://docs.nhost.io/getting-started/overview"
},
{
"title": "Authenticate Users",
"desc": "Nhost provides a ready-to-use authentication service.",
"href": "https://docs.nhost.io/platform/authentication"
"href": "https://docs.nhost.io/products/auth/overview"
},
{
"title": "Creating Functions",
"desc": "Nhost gives you the option to run serverless functions.",
"href": "https://docs.nhost.io/platform/serverless-functions"
"href": "https://docs.nhost.io/products/functions/overview"
},
{
"title": "File Storage",
"desc": "Nhost stores and serves files of any type in your backend.",
"href": "https://docs.nhost.io/platform/storage"
"href": "https://docs.nhost.io/products/storage/overview"
},
{
"title": "Environment Variables",
"desc": "Environment variables are key-value pairs configured outside your source code.",
"href": "https://docs.nhost.io/platform/nhost/environment-variables"
"href": "https://docs.nhost.io/platform/cloud/environment-variables"
},
{
"title": "GitHub Integration",
"desc": "You can connect your Nhost project to a GitHub repository.",
"href": "https://docs.nhost.io/platform/nhost/github-integration"
"href": "https://docs.nhost.io/platform/cloud/git"
},
{
"title": "Nhost CLI",
"desc": "Nhost CLI lets you run Nhost's development environment locally.",
"href": "https://docs.nhost.io/platform/nhost/local-development"
"href": "https://docs.nhost.io/platform/cli/local-development"
}
]

View File

@@ -168,7 +168,7 @@ export default function SubscriptionPlan() {
</Link>
<span> You can also visit our </span>
<Link
href="https://docs.nhost.io/platform/billing"
href="https://docs.nhost.io/platform/cloud/billing"
target="_blank"
rel="noopener noreferrer"
underline="hover"

View File

@@ -52,7 +52,7 @@ export default function SettingsLayout({ children }: SettingsLayoutProps) {
target="_blank"
rel="noopener noreferrer"
className="underline"
href="https://docs.nhost.io/guides/cli/configuration-overlays#configuration-overlays"
href="https://docs.nhost.io/platform/cli/configuration-overlays"
>
Configuration Overlays
</a>{' '}

View File

@@ -162,7 +162,7 @@ export default function AllowedEmailDomainsSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/overview#allowed-emails-and-domains"
docsLink="https://docs.nhost.io/products/auth/overview#allowed-emails-and-domains"
switchId="enabled"
showSwitch
className={twMerge(

View File

@@ -134,7 +134,7 @@ export default function AllowedRedirectURLsSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/overview#allowed-redirect-urls"
docsLink="https://docs.nhost.io/products/auth/overview#allowed-redirect-urls"
className="grid grid-flow-row px-4 lg:grid-cols-5"
>
<Input

View File

@@ -176,7 +176,7 @@ export default function AppleProviderSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/social/sign-in-apple"
docsLink="https://docs.nhost.io/products/auth/social/sign-in-apple"
docsTitle="how to sign in users with Apple"
icon={
theme.palette.mode === 'dark'

View File

@@ -168,7 +168,7 @@ export default function BlockedEmailSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/overview#allowed-emails-and-domains"
docsLink="https://docs.nhost.io/products/auth/overview#allowed-emails-and-domains"
switchId="enabled"
showSwitch
className={twMerge(

View File

@@ -126,7 +126,7 @@ export default function ClientURLSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/overview#client-url"
docsLink="https://docs.nhost.io/products/auth/overview#client-url"
className="grid grid-flow-row lg:grid-cols-5"
>
<Input

View File

@@ -118,7 +118,7 @@ export default function DisableNewUsersSettings() {
<SettingsContainer
title="Disable New Users"
description="If set, newly registered users are disabled and won't be able to sign in."
docsLink="https://docs.nhost.io/guides/auth/overview#disable-new-users"
docsLink="https://docs.nhost.io/products/auth/overview#disable-new-users"
switchId="disabled"
showSwitch
slotProps={{

View File

@@ -117,7 +117,7 @@ export default function DisableSignUpsSettings() {
<SettingsContainer
title="Disable Sign Ups"
description="If set, new users won't be able to sign up."
docsLink="https://docs.nhost.io/guides/auth/overview#disable-sign-ups"
docsLink="https://docs.nhost.io/products/auth/overview#disable-sign-ups"
switchId="disabled"
showSwitch
slotProps={{

View File

@@ -141,7 +141,7 @@ export default function DiscordProviderSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/social/sign-in-discord"
docsLink="https://docs.nhost.io/products/auth/social/sign-in-discord"
docsTitle="how to sign in users with Discord"
icon="/assets/brands/discord.svg"
switchId="enabled"

View File

@@ -141,7 +141,7 @@ export default function EmailAndPasswordSettings() {
<SettingsContainer
title="Email and Password"
description="Allow users to sign in with email and password."
docsLink="https://docs.nhost.io/guides/auth/sign-in-email-password"
docsLink="https://docs.nhost.io/products/auth/sign-in-email-password"
docsTitle="how to sign in users with email and password"
className="grid grid-flow-row"
showSwitch

View File

@@ -142,7 +142,7 @@ export default function FacebookProviderSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/social/sign-in-facebook"
docsLink="https://docs.nhost.io/products/auth/social/sign-in-facebook"
docsTitle="how to sign in users with Facebook"
icon="/assets/brands/facebook.svg"
switchId="enabled"

View File

@@ -144,7 +144,7 @@ export default function GitHubProviderSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/social/sign-in-github"
docsLink="https://docs.nhost.io/products/auth/social/sign-in-github"
docsTitle="how to sign in users with GitHub"
icon={
theme.palette.mode === 'dark'

View File

@@ -162,7 +162,7 @@ export default function GoogleProviderSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/social/sign-in-google"
docsLink="https://docs.nhost.io/products/auth/social/sign-in-google"
docsTitle="how to sign in users with Google"
icon="/assets/brands/google.svg"
switchId="enabled"

View File

@@ -144,7 +144,7 @@ export default function GravatarSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/overview#gravatar"
docsLink="https://docs.nhost.io/products/auth/overview#gravatar"
switchId="enabled"
showSwitch
className={twMerge(

View File

@@ -142,7 +142,7 @@ export default function LinkedInProviderSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/social/sign-in-linkedin"
docsLink="https://docs.nhost.io/products/auth/social/sign-in-linkedin"
docsTitle="how to sign in users with LinkedIn"
icon="/assets/brands/linkedin.svg"
switchId="enabled"

View File

@@ -133,7 +133,7 @@ export default function MFASettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/overview#multi-factor-authentication"
docsLink="https://docs.nhost.io/products/auth/overview#multi-factor-authentication"
switchId="enabled"
showSwitch
className={twMerge(

View File

@@ -124,7 +124,7 @@ export default function MagicLinkSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/sign-in-magic-link"
docsLink="https://docs.nhost.io/products/auth/sign-in-magic-link"
docsTitle="how to sign in users with Magic Link"
switchId="enabled"
showSwitch

View File

@@ -169,7 +169,7 @@ export default function SMSSettings() {
}}
switchId="enabled"
showSwitch
docsLink="https://docs.nhost.io/guides/auth/sign-in-phone-number"
docsLink="https://docs.nhost.io/products/auth/sign-in-sms-otp"
docsTitle="how to sign in users with a phone number (SMS)"
className={twMerge(
'grid grid-flow-col grid-cols-2 grid-rows-4 gap-x-3 gap-y-4 px-4 py-2',

View File

@@ -142,7 +142,7 @@ export default function SpotifyProviderSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/social/sign-in-spotify"
docsLink="https://docs.nhost.io/products/auth/social/sign-in-spotify"
docsTitle="how to sign in users with Spotify"
icon="/assets/brands/spotify.svg"
switchId="enabled"

View File

@@ -144,7 +144,7 @@ export default function TwitchProviderSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/social/sign-in-twitch"
docsLink="https://docs.nhost.io/products/auth/social/sign-in-twitch"
docsTitle="how to sign in users with Twitch"
icon={
theme.palette.mode === 'dark'

View File

@@ -128,7 +128,7 @@ export default function WebAuthnSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/sign-in-webauthn"
docsLink="https://docs.nhost.io/products/auth/webauthn"
docsTitle="how to sign in users with security keys"
switchId="enabled"
showSwitch

View File

@@ -177,7 +177,7 @@ export default function WorkOsProviderSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/social/sign-in-workos"
docsLink="https://docs.nhost.io/products/auth/social/sign-in-workos"
docsTitle="how to sign in users with WorkOS"
icon="/assets/brands/workos.svg"
switchId="enabled"

View File

@@ -8,7 +8,7 @@ import RestoreBackupDialogButton from './RestoreBackupDialogButton';
function LearnMoreAboutPiTRLink() {
return (
<Link
href="https://docs.nhost.io/guides/database/backups#point-in-time-recovery"
href="https://docs.nhost.io/products/database/backups#point-in-time-recovery"
className="flex items-center gap-1 text-[0.9375rem] leading-[1.375rem] text-[#0052cd] hover:underline dark:text-[#3888ff]"
target="_blank"
rel="noopener noreferrer"

View File

@@ -45,7 +45,7 @@ export default function DatabasePiTRSettings() {
showSwitch={shouldShowSwitch}
enabled={isPiTREnabled}
onEnabledChange={handleEnabledChange}
docsLink="https://docs.nhost.io/guides/database/backups#point-in-time-recovery"
docsLink="https://docs.nhost.io/products/database/backups#point-in-time-recovery"
docsTitle="enabling or disabling PiTR"
>
{isFreeProject ? (

View File

@@ -161,7 +161,7 @@ export default function EnvironmentVariableSettings() {
<SettingsContainer
title="Project Environment Variables"
description="Environment Variables are key-value pairs configured outside your source code. They are used to store environment-specific values such as API keys."
docsLink="https://docs.nhost.io/platform/environment-variables"
docsLink="https://docs.nhost.io/platform/cloud/environment-variables"
docsTitle="Environment Variables"
rootClassName="gap-0"
className={twMerge(

View File

@@ -108,7 +108,7 @@ export default function SystemEnvironmentVariableSettings() {
<SettingsContainer
title="System Environment Variables"
description="System environment variables are automatically generated from the configuration file and your project's subdomain and region."
docsLink="https://docs.nhost.io/platform/environment-variables#system-environment-variables"
docsLink="https://docs.nhost.io/platform/cloud/environment-variables#system-environment-variables"
rootClassName="gap-0"
className="mb-2.5 mt-2 px-0"
slotProps={{ submitButton: { className: 'hidden' } }}

View File

@@ -48,7 +48,7 @@ export default function EditRepositoryAndBranchSettings() {
>
Base Directory{' '}
<Link
href="https://docs.nhost.io/platform/github-integration#base-directory"
href="https://docs.nhost.io/platform/cloud/git#base-directory"
rel="noopener noreferrer"
target="_blank"
underline="none"

View File

@@ -90,7 +90,7 @@ export default function BaseDirectorySettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/platform/github-integration#base-directory"
docsLink="https://docs.nhost.io/platform/platform/cloud/git#base-directory"
className="grid grid-flow-row lg:grid-cols-5"
>
{project?.githubRepository ? (

View File

@@ -83,7 +83,7 @@ export default function DeploymentBranchSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/platform/github-integration#deployment-branch"
docsLink="https://docs.nhost.io/platform/cloud/git#deployment-branch"
className="grid grid-flow-row lg:grid-cols-5"
>
{project?.githubRepository ? (

View File

@@ -51,7 +51,7 @@ export default function GitConnectionSettings() {
<SettingsContainer
title="Git Repository"
description="Create Deployments for commits pushed to your Git repository."
docsLink="https://docs.nhost.io/platform/github-integration"
docsLink="https://docs.nhost.io/platform/cloud/git"
slotProps={{ submitButton: { className: 'hidden' } }}
className="grid grid-cols-5"
>

View File

@@ -298,7 +298,7 @@ export default function JWTSettings() {
loading: formState.isSubmitting,
},
}}
docsLink="https://docs.nhost.io/guides/auth/jwt"
docsLink="https://docs.nhost.io/products/auth/jwt"
docsTitle="JSON Web Token (JWT) Settings"
className="grid grid-flow-row gap-x-4 gap-y-2 px-4"
>
@@ -321,7 +321,7 @@ export default function JWTSettings() {
<a
target="_blank"
rel="noopener noreferrer"
href="https://docs.nhost.io/guides/auth/jwt#symmetric-keys"
href="https://docs.nhost.io/products/auth/jwt#symmetric-keys"
className="underline"
>
symmetric keys
@@ -351,7 +351,7 @@ export default function JWTSettings() {
<a
target="_blank"
rel="noopener noreferrer"
href="https://docs.nhost.io/guides/auth/jwt#asymmetric-keys"
href="https://docs.nhost.io/products/auth/jwt#asymmetric-keys"
className="underline"
>
asymmetric keys
@@ -381,7 +381,7 @@ export default function JWTSettings() {
<a
target="_blank"
rel="noopener noreferrer"
href="https://docs.nhost.io/guides/auth/jwt#external-signing"
href="https://docs.nhost.io/products/auth/jwt#external-signing"
className="underline"
>
external signing

View File

@@ -173,7 +173,7 @@ export default function ContactPointsSettings() {
<SettingsContainer
title="Contact Points"
description="Define the contact points where your notifications will be sent."
docsLink="https://docs.nhost.io/platform/metrics#configure-contact-points"
docsLink="https://docs.nhost.io/platform/cloud/metrics#configure-contact-points"
rootClassName="gap-0"
className={twMerge('my-2 px-0')}
slotProps={{

View File

@@ -125,7 +125,7 @@ export default function MetricsSMTPSettings() {
<SettingsContainer
title="SMTP Settings"
description="Configure your SMTP settings to send emails as part of your alerting."
docsLink="https://docs.nhost.io/platform/metrics#smtp"
docsLink="https://docs.nhost.io/platform/cloud/metrics#smtp"
submitButtonText="Save"
className="grid gap-4 lg:grid-cols-9"
slotProps={{

View File

@@ -147,7 +147,7 @@ export default function MetricsSettings() {
}}
switchId="enabled"
docsTitle="enabling or disabling Alerting"
docsLink="https://docs.nhost.io/platform/metrics#alerting"
docsLink="https://docs.nhost.io/platform/cloud/metrics#alerting"
showSwitch
className="hidden"
/>

View File

@@ -10,28 +10,28 @@ const features: CardProps[] = [
description: 'Learn how to use Postgres with Nhost',
icon: <DatabaseIcon className="h-8 w-8" sx={{ color: 'text.secondary' }} />,
disableIconBackground: true,
link: 'https://docs.nhost.io/product/database',
link: 'https://docs.nhost.io/products/database/overview',
},
{
title: 'GraphQL API',
description: 'Learn how to interact with the GraphQL API',
icon: <GraphQLIcon className="h-8 w-8" sx={{ color: 'text.secondary' }} />,
disableIconBackground: true,
link: 'https://docs.nhost.io/product/graphql',
link: 'https://docs.nhost.io/products/graphql/overview',
},
{
title: 'Authentication',
description: 'Learn how to authenticate users with Nhost',
icon: <UserIcon className="h-8 w-8" sx={{ color: 'text.secondary' }} />,
disableIconBackground: true,
link: 'https://docs.nhost.io/product/authentication',
link: 'https://docs.nhost.io/products/auth/overview',
},
{
title: 'Storage',
description: 'Learn how to use Storage with Nhost',
icon: <StorageIcon className="h-8 w-8" sx={{ color: 'text.secondary' }} />,
disableIconBackground: true,
link: 'https://docs.nhost.io/product/storage',
link: 'https://docs.nhost.io/products/storage/overview',
},
];

View File

@@ -5,7 +5,7 @@ const frameworks: CardProps[] = [
title: 'React',
description: 'Guide to build a simple React app',
icon: '/assets/frameworks/react.svg',
link: 'https://docs.nhost.io/guides/quickstarts/react',
link: 'https://docs.nhost.io/getting-started/quickstart/react',
iconIsComponent: false,
},
{
@@ -14,14 +14,14 @@ const frameworks: CardProps[] = [
icon: '/assets/frameworks/nextjs.svg',
lightIcon: '/assets/frameworks/light/nextjs.svg',
disableIconBackground: true,
link: 'https://docs.nhost.io/guides/quickstarts/nextjs',
link: 'https://docs.nhost.io/getting-started/quickstart/nextjs',
iconIsComponent: false,
},
{
title: 'Vue.js',
description: 'Learn how to use Vue.js with Nhost',
icon: '/assets/frameworks/vue.svg',
link: 'https://docs.nhost.io/guides/quickstarts/vue',
link: 'https://docs.nhost.io/getting-started/quickstart/vue',
iconIsComponent: false,
},
];

View File

@@ -158,7 +158,7 @@ export default function PermissionVariableSettings() {
<SettingsContainer
title="Permission Variables"
description="Permission variables are used to define permission rules in the GraphQL API."
docsLink="https://docs.nhost.io/guides/api/permissions#permission-variables"
docsLink="https://docs.nhost.io/products/graphql/permissions#permission-variables"
rootClassName="gap-0"
className="my-2 px-0"
slotProps={{ submitButton: { className: 'hidden' } }}

View File

@@ -90,7 +90,7 @@ export default function ResourcesFormFooter() {
<Text>
Learn more about{' '}
<Link
href="https://docs.nhost.io/platform/compute-resources"
href="https://docs.nhost.io/platform/cloud/compute-resources"
target="_blank"
rel="noopener noreferrer"
underline="hover"

View File

@@ -350,7 +350,7 @@ export default function ServiceResourcesFormFragment({
<Text>
Learn more about{' '}
<Link
href="https://docs.nhost.io/platform/service-replicas"
href="https://docs.nhost.io/platform/cloud/service-replicas"
target="_blank"
rel="noopener noreferrer"
underline="hover"

View File

@@ -191,7 +191,7 @@ export default function RoleSettings() {
<SettingsContainer
title="Default Allowed Roles"
description="Default Allowed Roles are roles users get automatically when they sign up."
docsLink="https://docs.nhost.io/guides/auth/users#allowed-roles"
docsLink="https://docs.nhost.io/products/auth/users#allowed-roles"
rootClassName="gap-0"
className={twMerge(
'my-2 px-0',

View File

@@ -70,7 +70,7 @@ export default function ComputeFormSection({
<a
target="_blank"
rel="noopener noreferrer"
href="https://docs.nhost.io/guides/run/resources#compute"
href="https://docs.nhost.io/products/run/resources#compute"
className="underline"
>
resources

View File

@@ -42,7 +42,7 @@ export default function HealthCheckFormSection() {
<a
target="_blank"
rel="noopener noreferrer"
href="https://docs.nhost.io/guides/run/health-checks"
href="https://docs.nhost.io/products/run/health-checks"
className="underline"
>
Health Check

View File

@@ -86,7 +86,7 @@ export default function ImageField({
<Text>
Learn more about{' '}
<Link
href="https://docs.nhost.io/guides/run/registry#creating-a-private-repository-for-your-image"
href="https://docs.nhost.io/products/run/registry#creating-a-private-repository-for-your-image"
target="_blank"
rel="noopener noreferrer"
underline="hover"
@@ -156,7 +156,7 @@ export default function ImageField({
<Text>
Learn more about{' '}
<Link
href="https://docs.nhost.io/guides/run/registry#using-your-own-private-registry"
href="https://docs.nhost.io/products/run/registry#using-your-own-private-registry"
target="_blank"
rel="noopener noreferrer"
underline="hover"

View File

@@ -56,7 +56,7 @@ export default function PortsFormSection() {
<a
target="_blank"
rel="noopener noreferrer"
href="https://docs.nhost.io/run/networking"
href="https://docs.nhost.io/products/run/networking"
className="underline"
>
Networking

View File

@@ -49,7 +49,7 @@ export default function CustomDomains() {
Add a custom domain to Auth, Hasura, PostgreSQL, and your Run
services for only a $10 flat fee 🚀 <br /> Learn more about
<Link
href="https://docs.nhost.io/platform/custom-domains"
href="https://docs.nhost.io/platform/cloud/custom-domains"
target="_blank"
rel="noopener noreferrer"
underline="hover"

View File

@@ -36,7 +36,7 @@ export default function RateLimiting() {
<Text color="secondary">
Learn more about
<Link
href="https://docs.nhost.io/platform/rate-limits"
href="https://docs.nhost.io/platform/cloud/rate-limits"
target="_blank"
rel="noopener noreferrer"
underline="hover"

View File

@@ -1,3 +0,0 @@
## My Snippet
<Info>This is an example of a reusable snippet</Info>

128
docs/community/coc.mdx Normal file
View File

@@ -0,0 +1,128 @@
---
title: 'Code of Conduct'
description: 'The set of rules and guidelines that govern interaction among community members'
icon: users-line
---
As a community-driven company, Nhost is committed to creating an inclusive and welcoming environment for all members, regardless of factors such as age, body size, disability, ethnicity, gender identity, experience level, education, socio-economic status, nationality, personal appearance, race, religion, or sexual orientation.
However, diverse communities may face challenges, such as potential misunderstandings and miscommunications. To ensure respectful interactions, free from behaviour that may create an unsafe environment, we have established this Code of Conduct.
These guidelines do not cover every possible scenario comprehensively but serve as a guiding light towards courteous interactions among community members, aligning with the overarching principle of avoiding unprofessional behaviour. This Code of Conduct applies to all events and participants, aiming to maintain a welcoming and healthy environment for our community.
Traits of a Nhost community member include:
### Being considerate and using appropriate channels
Contributions of every kind have far-ranging consequences. Just as your work depends on the work of others, decisions you make surrounding your contributions to the Nhost community will affect your fellow community members. Use appropriate channels for what you're about to say and refrain from tagging a role that sends out a lot of pings. You are strongly encouraged to take those consequences into account while making decisions.
### Adhering to these standards
It's crucial to keep in mind that our community members are from all kinds of backgrounds, so the members are expected to:
- Demonstrate empathy and kindness toward other people
- Be respectful of differing opinions, viewpoints, and experiences
- Give and accept constructive feedback gracefully
- Accept responsibility and apologise to those affected by mistakes, and learn from such experiences
- Focus on what is best not just for us as individuals, but for the overall community!
### Patience
Our community thrives on the generosity of volunteered time. Questions, contributions, and support requests may embark on a time-travelling journey before finding their destination. Repeated "bumps" or persistent "reminders" don't display patience and are looked down upon. Lastly, it is a bad practice to ask general questions to a specific person (in direct messages for example). Try to ask in public as much as you can, and patiently wait for the response
### Inclusivity, kindness and respectfulness
Please be courteous and respectful to fellow members. Avoid offensive comments related to age, body size, disability, ethnicity, gender identity, experience level, education, socio-economic status, nationality, personal appearance, race, religion, or sexual orientation.
Strictly prohibited are sexualized imagery, violence, intimidation, stalking, disruptions, sharing personal information without explicit permission, unwanted physical contact, and unwelcome sexual attention.
Use inclusive language respecting our community's diversity.
Avoid assumptions about others' backgrounds. Maintain a positive and professional demeanour, refraining from threatening or inappropriate behaviour.
**We have zero tolerance for discrimination**. Any form of discrimination, including harassment, will lead to immediate consequences, potentially expulsion.
### Inquisitive
**_The only stupid question is the one that does not get asked_**.
We encourage our users to ask early and ask often. Rather than asking whether you can ask a question (the answer is always yes!), instead, simply ask your question. You are encouraged to provide as many specifics as possible.
Code snippets in the form of images are bad practice. Instead, use text formatted as code (using backticks) on Discord or simply send a gist. Refrain from pasting multiple lines of code directly into the chat channels - instead use [gist.github.com](http://gist.github.com/) or another paste site to provide code snippets.
### Helpful
Nhost welcomes users of all skill levels. We were all beginners once, and a supportive environment is essential for the community to thrive. While it can be repetitive to answer the same questions, members are expected to be courteous and helpful to everyone.
Avoid sarcastic responses and prioritize useful information. Everyone should read the provided documentation. We're here to answer questions, offer guidance, and suggest workflows, but not to do your job for you.
### Anti-harassment policy
Harassment includes (but is not limited to) all of the following behaviors:
- Offensive comments related to gender (including gender expression and identity), age, sexual orientation, disability, physical appearance, body size, race, and religion.
- Derogatory terminology including words commonly known to be slurs
- Posting sexualized images or imagery in public spaces
- Deliberate intimidation
- Stalking
- Posting others' personal information without explicit permission
- Sustained disruption of talks or other events
- Inappropriate physical contact
- Unwelcome sexual attention
Immediate compliance is expected from participants asked to cease harassing behaviour. Sponsors must adhere to the anti-harassment policy, refraining from using sexualized images or creating a sexualized environment at events. Volunteer organizers, including meetup staff, should also avoid sexualized attire.
Continuing inappropriate behaviour after being asked to stop constitutes harassment, even if not explicitly mentioned in this policy. It is respectful to stop doing something when asked to do so, and all community members are expected to promptly comply with such requests.
### Reporting policy violations
Instances of abusive, harassing, or otherwise unacceptable behaviour may be reported to anyone with administrative power in the community (Admins or Moderators on Discord, members of the 'DevRel' role), or to the local organizers of an event or to [our support team](https://app.nhost.io/support). Meetup organizers are encouraged to prominently display points of contact for reporting unacceptable behaviour at local events.
If a participant engages in harassing behaviour, the meetup organizers may take any action they deem appropriate. These actions may include but are not limited to warning the offender, expelling the offender from the event, and barring the offender from future community events.
Organizers will be happy to help participants contact security or local law enforcement, provide escorts to an alternate location, or otherwise assist those experiencing harassment to feel safe during the meetup. We value the safety and well-being of our community members and want everyone to feel welcome at our events, both online and offline.
We expect all participants, organizers, speakers, and attendees to follow these policies at all of our event venues and event-related social events.
### Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
1. **Correction**
- `Community Impact`: Use of inappropriate language or other behaviour deemed unprofessional or unwelcome in the community.
- `Consequence`: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behaviour was inappropriate. A public apology may be requested.
2. **Warning**
- `Community Impact`: A violation through a single incident or series of actions.
- `Consequence`: A warning with consequences for continued behaviour. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
3. **Temporary Ban**
- `Community Impact`: A serious violation of community standards, including sustained inappropriate behaviour.
- `Consequence`: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
4. **Permanent Ban**
- `Community Impact`: Demonstrating a pattern of violation of community standards, including sustained inappropriate behaviour, harassment of an individual, or aggression toward or disparagement of classes of individuals.
- `Consequence`: A permanent ban from any sort of public interaction within the community.
The Nhost Community Code of Conduct is licensed under the Creative Commons Attribution-Share Alike 3.0 license.
Our Code of Conduct was adapted from Codes of Conduct of other open-source projects, including:
- **Contributor Covenant**
- **Elastic**
- **The Fedora Project**
- **OpenStack**
- **Ansible**
- **Puppet Labs**
- **Ubuntu**
- **Novu**
Community Impact Guidelines were inspired by Mozilla's code of conduct enforcement ladder.
For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq.
Translations are available at https://www.contributor-covenant.org/translations.

View File

@@ -0,0 +1,57 @@
---
title: 'Getting Involved'
description: 'Get started with making your first contribution'
icon: handshake-simple
---
# Contributing
Welcome and thank you for considering contributing to Nhost!
This document outlines the rules to follow to make the contribution process easy and effective for everyone involved. If you are ever in doubt about anything, we encourage you to reach out [via Discord](https://discord.com/invite/9V7Qb2U).
## Code of Conduct
We take our open source community seriously and hold ourselves and other contributors to high standards of communication. By participating and contributing to this project, you agree to uphold our [Code of Conduct](https://github.com/nhost/nhost/blob/main/CODE_OF_CONDUCT.md).
## Getting Started
Contributions are made to Nhost repos via Issues and Pull Requests (PRs). A few general guidelines that cover both:
- Search for existing Issues and PRs before creating your own.
- We work hard to make sure issues are handled on time, but it could take a while to investigate the root cause depending on the impact. A friendly ping in the comment thread to the submitter or a contributor can help draw attention if your issue is blocking.
- If you've never contributed before, see [the first-timer's guide](https://github.com/firstcontributions/first-contributions) for resources and tips on getting started.
### Issues
Issues should be used to report problems with Nhost, request a new feature, or discuss potential changes before a PR is created.
If you find an Issue that addresses the problem you're having, please add your reproduction information to the existing issue rather than creating a new one. Adding a [reaction](https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) can also help indicate to our maintainers that a particular problem affects more than just the reporter.
### Pull Requests
Please have a look at our [developers guide](https://github.com/nhost/nhost/blob/main/DEVELOPERS.md) to start coding!
PRs to our libraries are always welcome and can be a quick way to get your fix or improvement slated for the next release. In general, PRs should:
- Only fix/add the functionality in question **OR** address wide-spread whitespace/style issues, not both.
- Add unit or integration tests for fixed or changed functionality (if a test suite exists).
- Address a single concern in the least number of changed lines as possible.
- Include documentation in the repo or on our [docs site](https://docs.nhost.io).
- Be accompanied by a complete Pull Request template (loaded automatically when a PR is created).
For changes that address core functionality or require breaking changes (e.g., a major release), it's best to open an Issue to discuss your proposal first. This is not required but can save time creating and reviewing changes.
In general, we follow the ["fork-and-pull" Git workflow](https://github.com/susam/gitpr)
1. Fork the repository to your own Github account
2. Clone the project to your machine
3. Create a branch locally with a succinct but descriptive name. All changes should be part of a branch and submitted as a pull request - your branches should be prefixed with one of:
- `bug/` for bug fixes
- `feat/` for features
- `chore/` for configuration changes
- `docs/` for documentation changes
4. Commit changes to the branch
5. Following any formatting and testing guidelines specific to this repo
6. Push changes to your fork
7. Open a PR in our repository and follow the PR template to review the changes efficiently.

View File

@@ -1,158 +0,0 @@
---
title: Commands
description: Available commands to run and manage local Nhost projects
icon: rectangle-code
---
## `nhost init`
Initializes current directory with a new project containing configuration and objects necessary to run Nhost locally.
<Accordion title="Output">
Initializing Nhost project
Successfully initialized Nhost project, run `nhost up` to start development
</Accordion>
### Flags
`--remote` optional `false` <br />
Pulls state from a remote Nhost instance.
## `nhost up`
Starts Nhost for development and testing purposes. Requires scaffolding from `nhost init`.
<Accordion title="Output">
```
Nhost development environment started.
URLs:
- Postgres: postgres://postgres:postgres@localhost:5432/local
- Hasura: https://local.hasura.local.nhost.run
- GraphQL: https://local.graphql.local.nhost.run
- Auth: https://local.auth.local.nhost.run
- Storage: https://local.storage.local.nhost.run
- Functions: https://local.functions.local.nhost.run
- Dashboard: https://local.dashboard.local.nhost.run
- Mailhog: https://local.mailhog.local.nhost.run
SDK Configuration:
Subdomain: local
Region: (empty)
Run `nhost up` to reload the development environment
Run `nhost down` to stop the development environment
Run `nhost logs` to watch the logs
```
</Accordion>
## `nhost down`
Stops all services and deletes all containers.
### Flags
`--volumes` optional `false` <br />
Remove volumes.
## `nhost login`
Login to an Nhost account to perform authenticated operations.
<Accordion title="Output">
- email: user@domain.com
- password:
Authenticating <br />
Successfully logged in, creating PAT <br />
Successfully created PAT <br />
Storing PAT for future user
</Accordion>
### Flags
`--email` optional <br />
Email adress.
`--password` optional <br />
Password.
`--pat` optional <br />
Use this Personal Access Token instead of generating a new one with email/password.
## `nhost logs`
Render all logs.
<Accordion title="Output">
```
app-auth-1 | {"level":"info","message":"Applying SQL migrations..."}
app-auth-1 | {"level":"info","message":"SQL migrations applied"}
app-auth-1 | {"level":"info","message":"Applying metadata..."}
app-auth-1 | {"level":"info","message":"Metadata applied"}
app-auth-1 | {"level":"info","message":"Running on port 4000"}
```
</Accordion>
### Flags
`--follow` optional <br />
Follow (or tail) log output.
`--no-color` optional <br />
Produce monochrome output.
`--no-log-prefix` optional <br />
Don't print prefix in logs.
`--since` optional <br />
Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
`--tail` optional `all`<br />
Number of lines to show from the end of the logs for each service
`--timestamps` optional <br />
Show timestamps
`--until` optional <br />
Show logs before a timestamp
## `nhost list`
List all remote Nhost projects this user has access to.
<Accordion title="Output">
```
# │ Subdomain │ Project │ Workspace │ Region │
1 │ dahvgwlspuridghplrso │ nbp │ Nuno's Workspace │ eu-central-1 │
2 │ mhmvhergiiycqfvhisan │ Bun Generator │ Nhost Examples │ eu-central-1 │
4 │ qaxzubvwbuhzgxswghug │ Next.js Stripe Starter Template │ Nhost Examples │ eu-central-1 │
5 │ cuzwcdqwgmhbxqetfbci │ Nhost Netlify Starter Template │ Nhost Examples │ us-east-1 │
6 │ jsjiiuwiuqdvvwgwhxnx │ quickstarts │ Nhost Examples │ eu-central-1 │
7 │ vvhjnsgebtspueuuxnvp │ React Apollo │ Nhost Examples │ eu-central-1 │
9 │ vue-quickstart │ vue-quickstart │ Nhost Examples │ eu-central-1 │
11 │ odqlmnqxospbvqvphuyl │ monitoring-app-frankfurt │ monitoring │ eu-central-1 │
12 │ xmhqdbhkvskuubnelgkc │ monitoring-app-london │ monitoring │ eu-west-2 │
13 │ jjetetkbmovfgyewremk │ monitoring-app-mumbai │ monitoring │ ap-south-1 │
```
</Accordion>
## `nhost secrets`
Manage secrets in the Nhost cloud.
### `nhost secrets create`
#### Flags
<Accordion title="Output">
</Accordion>

View File

@@ -1,87 +0,0 @@
---
title: Nhost CLI
description: Tools to develop and test Nhost projects locally
icon: square-terminal
---
## Instaling the Nhost CLI
To install the Nhost CLI copy the following command and paste it into your terminal:
```bash
sudo curl -L https://raw.githubusercontent.com/nhost/cli/main/get.sh | bash
```
The `get.sh` script checks for both the architecture and operating system and installs the right binary.
### Supported Platforms:
- MacOS
- Linux
- Windows WSL2
### Dependencies:
- [Docker](https://docs.docker.com/get-docker/)
- [curl](https://curl.se/)
- [Git](https://git-scm.com/downloads)
## Updating the Nhost CLI
Update an existing installation to the latest version.
```bash Terminal
nhost sw upgrade
```
## Running Nhost
Inside of the folder where you want to create your project, run:
```bash Terminal
> nhost init
Initializing Nhost project
Successfully initialized Nhost project, run `nhost up` to start development
```
`init` will scaffold a bunch of files that Nhost uses to manage configuration, database schema and migrations, APIs, functions, etc.
With the project scaffolding in place, start the local Nhost instance with `nhost up`:
```bash Terminal
> nhost up
Nhost development environment started.
URLs:
- Postgres: postgres://postgres:postgres@localhost:5432/local
- Hasura: https://local.hasura.local.nhost.run
- GraphQL: https://local.graphql.local.nhost.run
- Auth: https://local.auth.local.nhost.run
- Storage: https://local.storage.local.nhost.run
- Functions: https://local.functions.local.nhost.run
- Dashboard: https://local.dashboard.local.nhost.run
- Mailhog: https://local.mailhog.local.nhost.run
SDK Configuration:
Subdomain: local
Region: (empty)
Run `nhost up` to reload the development environment
Run `nhost down` to stop the development environment
Run `nhost logs` to watch the logs
```
The following services are started:
- Postgres
- Hasura Console
- GraphQL API
- Authentication
- Storage
- Functions
- Dashboard
- Mailhog (SMTP server for testing emails locally)
<Info>Support for Nhost Run services is coming soon</Info>

View File

@@ -1,32 +0,0 @@
---
title: 'Overview'
description: 'Developing locally with the Nhost CLI'
icon: hand-wave
---
Run the Nhost Stack on your computer with `nhost init` and `nhost start`. The Nhost CLI ships with all the tools you need to run, test, and operate your projects.
Manage configuration, database migrations, API schema changes, and more, with ease.
```bash
> nhost up
Nhost development environment started.
URLs:
- Postgres: postgres://postgres:postgres@localhost:5432/local
- Hasura: https://local.hasura.local.nhost.run
- GraphQL: https://local.graphql.local.nhost.run
- Auth: https://local.auth.local.nhost.run
- Storage: https://local.storage.local.nhost.run
- Functions: https://local.functions.local.nhost.run
- Dashboard: https://local.dashboard.local.nhost.run
- Mailhog: https://local.mailhog.local.nhost.run
SDK Configuration:
Subdomain: local
Region: (empty)
Run `nhost up` to reload the development environment
Run `nhost down` to stop the development environment
Run `nhost logs` to watch the logs
```

616
docs/docs.json Normal file
View File

@@ -0,0 +1,616 @@
{
"$schema": "https://mintlify.com/docs.json",
"theme": "palm",
"name": "Documentation",
"colors": {
"primary": "#3787ff",
"light": "#569aff",
"dark": "#1874ff"
},
"favicon": "/favicon.svg",
"navigation": {
"tabs": [
{
"tab": "Welcome",
"pages": [
"welcome"
]
},
{
"tab": "Getting Started",
"pages": [
{
"group": "Welcome",
"icon": "house",
"pages": ["/getting-started/overview" ]
},
{
"group": "Quickstart",
"icon": "house",
"pages": [
"/getting-started/quickstart/react",
"/getting-started/quickstart/nextjs",
"/getting-started/quickstart/vue",
"/getting-started/quickstart/reactnative"
]
},
{
"group": "Tutorials",
"icon": "book",
"pages": [
"/getting-started/tutorials/react",
"/getting-started/tutorials/nextjs",
"/getting-started/tutorials/vue"
]
}
]
},
{
"tab": "Products",
"dropdowns": [
{
"dropdown": "Overview",
"icon": "eye",
"pages": [
"/products/overview"
]
},
{
"dropdown": "Auth",
"icon": "lock",
"pages": [
"/products/auth/overview",
"/products/auth/users",
"/products/auth/client_and_redirect_urls",
"/products/auth/jwt",
"/products/auth/email-templates",
"/products/auth/gravatar",
{
"group": "Sign In Methods",
"pages": [
{
"group": "Social Providers",
"icon": "at",
"pages": [
"products/auth/social/sign-in-apple",
"products/auth/social/sign-in-azuread",
"products/auth/social/sign-in-discord",
"products/auth/social/sign-in-facebook",
"products/auth/social/sign-in-github",
"products/auth/social/sign-in-google",
"products/auth/social/sign-in-linkedin",
"products/auth/social/sign-in-spotify",
"products/auth/social/sign-in-twitch",
"products/auth/social/sign-in-workos"
]
},
"/products/auth/social-connect",
"/products/auth/sign-in-email-password",
"/products/auth/sign-in-otp",
"/products/auth/sign-in-magic-link",
"/products/auth/sign-in-sms-otp",
"/products/auth/webauthn",
"/products/auth/idtokens"
]
},
{
"group": "Security",
"icon": "shield",
"pages": [
"/products/auth/elevated-permissions",
"/products/auth/bot-protection",
"/products/auth/custom-jwts",
"/products/auth/restricting_emails_and_domains"
]
}
]
},
{
"dropdown": "Database",
"icon":"database",
"pages":[
"/products/database/overview",
"/products/database/configuring-postgres",
"/products/database/backups",
"/products/database/access",
"/products/database/extensions",
"/products/database/performance",
"/products/database/upgrade-major"
]
},
{
"dropdown": "Functions",
"icon":"lambda",
"pages":[
"/products/functions/overview",
"/products/functions/getting-started",
"/products/functions/runtimes"
]
},
{
"dropdown": "GraphQL",
"icon":"webhook",
"pages":[
"/products/graphql/overview",
"/products/graphql/configuring-hasura",
"/products/graphql/permissions",
"/products/graphql/advanced-features"
]
},
{
"dropdown": "Storage",
"icon":"warehouse",
"pages":[
"/products/storage/overview",
"/products/storage/cdn",
"/products/storage/antivirus"
]
},
{
"dropdown": "AI",
"icon":"robot",
"pages":[
"/products/ai/overview",
"/products/ai/enabling-service",
"/products/ai/local-development",
"/products/ai/auto-embeddings",
"/products/ai/assistants",
"/products/ai/dev-assistant"
]
},
{
"dropdown": "Run",
"icon":"play",
"pages":[
"/products/run/overview",
"/products/run/getting-started",
"/products/run/configuration",
"/products/run/networking",
"/products/run/health-checks",
"/products/run/resources",
"/products/run/registry",
"/products/run/local-development",
"/products/run/configuration-overlays",
"/products/run/cli-deployments"
]
}
]
},
{
"tab": "Platform",
"dropdowns": [
{
"dropdown": "Overview",
"icon": "eye",
"pages": [
"/platform/overview"
]
},
{
"dropdown": "Cloud",
"icon": "cloud",
"pages": [
"/platform/cloud/overview",
"platform/cloud/subdomain",
"platform/cloud/compute-resources",
"platform/cloud/service-replicas",
"platform/cloud/metrics",
"platform/cloud/environment-variables",
"platform/cloud/secrets",
"platform/cloud/git",
"platform/cloud/custom-domains",
"platform/cloud/rate-limits",
"platform/cloud/tls",
"platform/cloud/billing"
]
},
{
"dropdown": "Local Development",
"icon": "terminal",
"pages": [
"/platform/cli/overview",
"/platform/cli/local-development",
"/platform/cli/subdomain",
"/platform/cli/migrate-config",
"/platform/cli/multiple-projects",
"/platform/cli/configuration-overlays",
"/platform/cli/seeds"
]
},
{
"dropdown": "Self-Hosting",
"icon": "server",
"pages": [
"/platform/self-hosting/overview",
"/platform/self-hosting/community",
"/platform/self-hosting/support",
"/platform/self-hosting/dedicated"
]
}
]
},
{
"tab":"Reference",
"icon":"bolt",
"pages":[
"/reference/overview",
{
"group": "Backend Services",
"pages": [
{
"group": "Authentication",
"icon": "user-check",
"pages": [
"reference/auth/get-.well-known-jwks.json",
"reference/auth/post-elevate-webauthn",
"reference/auth/post-elevate-webauthn-verify",
"reference/auth/get-healthz",
"reference/auth/head-healthz",
"reference/auth/post-link-idtoken",
"reference/auth/get-mfa-totp-generate",
"reference/auth/post-pat",
"reference/auth/post-signin-anonymous",
"reference/auth/post-signin-email-password",
"reference/auth/post-signin-idtoken",
"reference/auth/post-signin-mfa-totp",
"reference/auth/post-signin-otp-email",
"reference/auth/post-signin-otp-email-verify",
"reference/auth/post-signin-passwordless-email",
"reference/auth/post-signin-passwordless-sms",
"reference/auth/post-signin-passwordless-sms-otp",
"reference/auth/post-signin-pat",
"reference/auth/get-signin-provider-{provider}",
"reference/auth/get-signin-provider-{provider}-callback",
"reference/auth/post-signin-webauthn",
"reference/auth/post-signin-webauthn-verify",
"reference/auth/post-signout",
"reference/auth/post-signup-email-password",
"reference/auth/post-signup-webauthn",
"reference/auth/post-signup-webauthn-verify",
"reference/auth/post-token",
"reference/auth/post-token-verify",
"reference/auth/get-user",
"reference/auth/post-user-deanonymize",
"reference/auth/post-user-email-change",
"reference/auth/post-user-email-send-verification-email",
"reference/auth/post-user-mfa",
"reference/auth/post-user-password",
"reference/auth/post-user-password-reset",
"reference/auth/post-user-provider-tokens",
"reference/auth/post-user-webauthn-add",
"reference/auth/post-user-webauthn-verify",
"reference/auth/get-verify",
"reference/auth/get-version"
]
},
{
"group": "Storage",
"icon": "warehouse",
"pages": [
"reference/storage/upload-file",
"reference/storage/replace-file",
"reference/storage/delete-file",
"reference/storage/download-file",
"reference/storage/download-file-metadata",
"reference/storage/presigned-url",
"reference/storage/get-file-content"
]
},
{
"group": "AI",
"icon":"robot",
"pages": [
"reference/graphql/ai/overview",
{
"group": "Query",
"pages": [
"reference/graphql/ai/query/assistant",
"reference/graphql/ai/query/assistants",
"reference/graphql/ai/query/session",
"reference/graphql/ai/query/sessionMessages",
"reference/graphql/ai/query/sessions"
]
},
{
"group": "Mutation",
"pages": [
"reference/graphql/ai/mutation/insertAssistant",
"reference/graphql/ai/mutation/updateAssistant",
"reference/graphql/ai/mutation/deleteAssistant",
"reference/graphql/ai/mutation/startSession",
"reference/graphql/ai/mutation/deleteSession",
"reference/graphql/ai/mutation/sendMessage",
"reference/graphql/ai/mutation/startDevSession",
"reference/graphql/ai/mutation/sendDevMessage"
]
}
]
}
]
},
{
"group": "Client Libraries",
"pages": [
{
"group": "Javascript",
"icon":"js",
"pages": [
{
"group": "nhost-js",
"pages": [
"reference/javascript/nhost-js/nhost-client",
"reference/javascript/nhost-js/set-role",
"reference/javascript/nhost-js/unset-role"
]
},
{
"group": "Auth",
"pages": [
"reference/javascript/auth/hasura-auth-client",
"reference/javascript/auth/change-email",
"reference/javascript/auth/change-password",
"reference/javascript/auth/create-pat",
"reference/javascript/auth/get-access-token",
"reference/javascript/auth/get-authentication-status",
"reference/javascript/auth/get-decoded-access-token",
"reference/javascript/auth/get-hasura-claim",
"reference/javascript/auth/get-hasura-claims",
"reference/javascript/auth/get-session",
"reference/javascript/auth/get-user",
"reference/javascript/auth/is-authenticated",
"reference/javascript/auth/is-authenticated-async",
"reference/javascript/auth/on-auth-state-changed",
"reference/javascript/auth/on-token-changed",
"reference/javascript/auth/refresh-session",
"reference/javascript/auth/reset-password",
"reference/javascript/auth/send-verification-email",
"reference/javascript/auth/sign-in",
"reference/javascript/auth/sign-in-pat",
"reference/javascript/auth/sign-out",
"reference/javascript/auth/sign-up",
"reference/javascript/auth/add-security-key",
"reference/javascript/auth/elevate-email-security-key",
"reference/javascript/auth/connect-provider",
"reference/javascript/auth/sign-in-email-otp",
"reference/javascript/auth/verify-email-otp",
"reference/javascript/auth/sign-in-id-token",
"reference/javascript/auth/link-id-token",
"reference/javascript/auth/sign-in-security-key"
]
},
{
"group": "Storage",
"pages": [
"reference/javascript/storage/hasura-storage-client",
"reference/javascript/storage/upload",
"reference/javascript/storage/download",
"reference/javascript/storage/get-presigned-url",
"reference/javascript/storage/get-public-url",
"reference/javascript/storage/delete",
"reference/javascript/storage/set-access-token",
"reference/javascript/storage/set-admin-secret",
"reference/javascript/storage/set-headers",
"reference/javascript/storage/unset-headers",
"reference/javascript/storage/get-headers"
]
},
{
"group": "GraphQL ",
"pages": [
"reference/javascript/graphql/nhost-graphql-client",
"reference/javascript/graphql/get-url",
"reference/javascript/graphql/set-access-token",
"reference/javascript/graphql/request",
"reference/javascript/graphql/set-headers",
"reference/javascript/graphql/unset-headers",
"reference/javascript/graphql/get-headers"
]
},
{
"group": "Functions ",
"pages": [
"reference/javascript/functions/create-functions-client",
"reference/javascript/functions/call",
"reference/javascript/functions/set-access-token"
]
}
]
},
{
"group": "React",
"icon": "react",
"pages": [
"reference/react/nhost-client",
"reference/react/signed-in",
"reference/react/signed-out",
"reference/react/use-access-token",
"reference/react/use-add-security-key",
"reference/react/use-authenticated",
"reference/react/use-authentication-status",
"reference/react/use-change-email",
"reference/react/use-change-password",
"reference/react/use-config-mfa",
"reference/react/use-decoded-access-token",
"reference/react/use-file-upload",
"reference/react/use-file-upload-item",
"reference/react/use-hasura-claim",
"reference/react/use-hasura-claims",
"reference/react/use-multiple-files-upload",
"reference/react/use-nhost-client",
"reference/react/use-provider-link",
"reference/react/use-reset-password",
"reference/react/use-send-verification-email",
"reference/react/use-sign-in-anonymous",
"reference/react/use-sign-in-email-password",
"reference/react/use-sign-in-email-passwordless",
"reference/react/use-sign-in-email-security-key",
"reference/react/use-sign-in-pat",
"reference/react/use-sign-in-sms-passwordless",
"reference/react/use-sign-out",
"reference/react/use-sign-up-email-password",
"reference/react/use-sign-up-email-security-key-email",
"reference/react/use-elevate-security-key-email",
"reference/react/use-user-avatar-url",
"reference/react/use-user-data",
"reference/react/use-user-default-role",
"reference/react/use-user-display-name",
"reference/react/use-user-email",
"reference/react/use-user-id",
"reference/react/use-user-is-anonymous",
"reference/react/use-user-locale",
"reference/react/use-user-roles",
"reference/react/use-sign-in-email-otp",
"reference/react/use-sign-in-id-token",
"reference/react/use-link-id-token",
"reference/react/use-sign-in-security-key"
]
},
{
"group": "Next.js",
"icon": "react",
"pages": [
"reference/nextjs/nhost-client",
"reference/nextjs/signed-in",
"reference/nextjs/signed-out",
"reference/nextjs/create-server-side-client",
"reference/nextjs/get-nhost-session",
"reference/nextjs/use-access-token",
"reference/nextjs/use-add-security-key",
"reference/nextjs/use-authenticated",
"reference/nextjs/use-authentication-status",
"reference/nextjs/use-change-email",
"reference/nextjs/use-change-password",
"reference/nextjs/use-config-mfa",
"reference/nextjs/use-decoded-access-token",
"reference/nextjs/use-file-upload",
"reference/nextjs/use-file-upload-item",
"reference/nextjs/use-hasura-claim",
"reference/nextjs/use-hasura-claims",
"reference/nextjs/use-multiple-files-upload",
"reference/nextjs/use-nhost-client",
"reference/nextjs/use-provider-link",
"reference/nextjs/use-reset-password",
"reference/nextjs/use-send-verification-email",
"reference/nextjs/use-sign-in-anonymous",
"reference/nextjs/use-sign-in-email-password",
"reference/nextjs/use-sign-in-email-passwordless",
"reference/nextjs/use-sign-in-email-security-key",
"reference/nextjs/use-sign-in-pat",
"reference/nextjs/use-sign-in-sms-passwordless",
"reference/nextjs/use-sign-out",
"reference/nextjs/use-sign-up-email-password",
"reference/nextjs/use-sign-up-email-security-key-email",
"reference/nextjs/use-elevate-security-key-email",
"reference/nextjs/use-user-avatar-url",
"reference/nextjs/use-user-data",
"reference/nextjs/use-user-default-role",
"reference/nextjs/use-user-display-name",
"reference/nextjs/use-user-email",
"reference/nextjs/use-user-id",
"reference/nextjs/use-user-is-anonymous",
"reference/nextjs/use-user-locale",
"reference/nextjs/use-user-roles",
"reference/nextjs/use-sign-in-email-otp",
"reference/nextjs/use-sign-in-id-token",
"reference/nextjs/use-link-id-token",
"reference/nextjs/use-sign-in-security-key"
]
},
{
"group": "Vue",
"icon": "vuejs",
"pages": [
"reference/vue/nhost-client",
"reference/vue/use-access-token",
"reference/vue/use-authenticated",
"reference/vue/use-authentication-status",
"reference/vue/use-change-email",
"reference/vue/use-change-password",
"reference/vue/use-decoded-access-token",
"reference/vue/use-file-upload",
"reference/vue/use-file-upload-item",
"reference/vue/use-hasura-claim",
"reference/vue/use-hasura-claims",
"reference/vue/use-multiple-files-upload",
"reference/vue/use-nhost-client",
"reference/vue/use-provider-link",
"reference/vue/use-reset-password",
"reference/vue/use-send-verification-email",
"reference/vue/use-sign-in-anonymous",
"reference/vue/use-sign-in-email-password",
"reference/vue/use-sign-in-email-passwordless",
"reference/vue/use-sign-in-pat",
"reference/vue/use-sign-in-sms-passwordless",
"reference/vue/use-sign-out",
"reference/vue/use-sign-up-email-password",
"reference/vue/use-user-avatar-url",
"reference/vue/use-user-data",
"reference/vue/use-user-default-role",
"reference/vue/use-user-display-name",
"reference/vue/use-user-email",
"reference/vue/use-user-id",
"reference/vue/use-user-is-anonymous",
"reference/vue/use-user-locale",
"reference/vue/use-user-roles",
"reference/vue/use-add-security-key",
"reference/vue/use-elevate-security-key-email",
"reference/vue/use-sign-in-email-security-key",
"reference/vue/use-sign-up-email-security-key",
"reference/vue/use-sign-in-email-otp",
"reference/vue/use-sign-in-id-token",
"reference/vue/use-link-id-token",
"reference/vue/use-sign-in-security-key"
]
},
{
"group": "React Native",
"icon": "mobile-notch",
"pages": ["reference/react-native/support"]
}
]
},
{
"group": "CLI",
"pages": [
"reference/cli/commands"
]
}
]
},
{
"tab":"Community",
"icon":"users-line",
"pages":["/community/coc", "/community/getting-involved"]
},
{
"tab": "Blog",
"href":"https://nhost.io/blog"
}
]
},
"logo": {
"light": "/images/logo/light.svg",
"dark": "/images/logo/dark.svg"
},
"navbar": {
"links": [
{
"label": "Support",
"href": "https://app.nhost.io/support"
}
],
"primary": {
"type": "button",
"label": "Dashboard",
"href": "https://app.nhost.io"
}
},
"footer": {
"socials": {
"twitter": "https://twitter.com/nhost",
"github": "https://github.com/nhost",
"linkedin": "https://www.linkedin.com/company/nhost"
}
}
}

View File

@@ -0,0 +1,88 @@
---
title: What is Nhost?
icon: hand-wave
sidebarTitle: Introduction
---
Nhost is a backend development platform designed to help you build and scale production-ready applications fast, with powerful, fully managed infrastructure.
It eliminates backend complexity by providing a performant and reliable software stack ready-to-go, while still offering the flexibility to customize and grow as your app grows.
<img
className="block dark:hidden"
src="/images/nhost-overview-light.svg"
alt="Hero Light"
/>
<img
className="hidden dark:block"
src="/images/nhost-overview-dark.svg"
alt="Hero Dark"
/>
## Next steps
Follow one of our quick start guides for learning how to quickly setup Nhost with your framework of choice, in just a few easy steps.
<CardGroup cols={2}>
<Card
title="Next.js"
icon="react"
href="/getting-started/quickstart/nextjs"
>
Learn how to connect Nhost with Next.js
</Card>
<Card
title="React"
icon="react"
href="/getting-started/quickstart/react"
>
Learn how to connect Nhost with React
</Card>
<Card
title="Vue"
icon="vuejs"
href="/getting-started/quickstart/vue"
>
Learn how to connect Nhost with Vue
</Card>
<Card
title="React Native"
icon="react-native"
href="/getting-started/quickstart/reactnative"
>
Learn how to connect Nhost with React Native
</Card>
</CardGroup>
## Follow a tutorial to build a Todo Manager
Follow one of your tutorials where we walk you through building a Todo Manager application using features from Nhost.
<CardGroup cols={2}>
<Card
title="React"
icon="react"
href="/getting-started/tutorials/react"
>
Todo Manager with Nhost and React
</Card>
<Card
title="Vue"
icon="vuejs"
href="/getting-started/tutorials/vue"
>
Todo Manager with Nhost and Vue
</Card>
<Card
title="Next.js"
icon="image"
href="/getting-started/tutorials/nextjs"
>
Todo Manager with Nhost and NextJS
</Card>
</CardGroup>

View File

@@ -32,14 +32,14 @@ icon: react
<Warning>Make sure the option `Track this` is enabled</Warning>
![SQL Editor](/images/guides/quickstarts/react/sql-editor.png)
![SQL Editor](/images/quickstarts/react/sql-editor.png)
</Step>
<Step title="permissions">
Select the new table `movies` just created, and click in **Edit Permissions** to set the following permissions for the `public` role and `select` action.
![Permission Rules](/images/guides/quickstarts/react/permissions.png)
![Permission Rules](/images/quickstarts/react/permissions.png)
</Step>
@@ -154,8 +154,4 @@ icon: react
<Step title="The end">
Run your project with `npm run dev` and navigate to `http://localhost:3000` in your browser.
</Step>
</Steps>
```
```
</Steps>

View File

@@ -27,9 +27,7 @@ icon: react
);
```
<Frame caption="Create Todos Table">
<img src="/images/guides/quickstarts/react-native/create-table-todos.png" />
</Frame>
![Create Todos Table](/images/quickstarts/react-native/create-table-todos.png)
</Step>
@@ -43,9 +41,7 @@ icon: react
- Add a new `Column preset` and set `Column Name` to `user_id` and `Column Value` to `X-Hasura-User-Id`
- Save
<Frame caption="Insert Permissions">
<img src="/images/guides/quickstarts/react-native/todos-insert-permissions.png" />
</Frame>
![Insert Permissions](/images/quickstarts/react-native/todos-insert-permissions.png)
2. `Select`
- Set `Row select permissions` to `With custom check` and fill in the following rule:
@@ -55,9 +51,7 @@ icon: react
- Select all columns except `user_id` on `Column select permissions`
- Save
<Frame caption="Select Permissions">
<img src="/images/guides/quickstarts/react-native/todos-select-permissions.png" />
</Frame>
![Select Permissions](/images/quickstarts/react-native/todos-select-permissions.png)
3. `Update`
- Set `Row update permissions` to `With custom check` and fill in the following rule:
@@ -67,9 +61,7 @@ icon: react
- Select all columns except `user_id` on `Column select permissions`
- Save
<Frame caption="Update permissions">
<img src="/images/guides/quickstarts/react-native/todos-update-permissions.png" />
</Frame>
![Update permissions](/images/quickstarts/react-native/todos-update-permissions.png)
4. `Delete`
- Set `Row delete permissions` to `With custom check` and fill in the following rule:
@@ -78,9 +70,7 @@ icon: react
- Set the value to `X-Hasura-User-Id`
- Save
<Frame caption="Delete permissions">
<img src="/images/guides/quickstarts/react-native/todos-delete-permissions.png" />
</Frame>
![Delete permissions](/images/quickstarts/react-native/todos-delete-permissions.png)
</Step>
@@ -97,9 +87,7 @@ icon: react
2. Select all columns on `Column insert permissions`
4. Save
<Frame caption="Insert Permissions">
<img src="/images/guides/quickstarts/react-native/files-insert-permissions.png" />
</Frame>
![Insert Permissions](/images/quickstarts/react-native/files-insert-permissions.png)
3. `Select`
- Set `Row select permissions` to `With custom check` and fill in the following rule:
@@ -109,9 +97,7 @@ icon: react
- Select all columns on `Column select permissions`
- Save
<Frame caption="Select permissions">
<img src="/images/guides/quickstarts/react-native/files-select-permissions.png" />
</Frame>
![Select permissions](/images/quickstarts/react-native/files-select-permissions.png)
</Step>

View File

@@ -6,7 +6,7 @@ icon: mobile-notch
---
<Card>
Throughout this guide, we'll utilize the **@nhost/react-native-template**, which comes pre-configured with
Throughout this guide, we'll utilize the **@nhost/react-native-template**, which comes pre-configured with
authentication and storage capabilities provided by Nhost.
</Card>
@@ -36,13 +36,11 @@ icon: mobile-notch
user_id uuid NOT NULL,
contents text NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES auth.users(id) ON UPDATE cascade ON DELETE cascade
FOREIGN KEY (user_id) REFERENCES auth.users(id) ON UPDATE cascade ON DELETE cascade
);
```
<Frame caption="Create Todos Table">
<img src="/images/guides/quickstarts/react-native/create-table-todos.png" />
</Frame>
![Create Todos Table](/images/quickstarts/react-native/create-table-todos.png)
</Step>
@@ -55,10 +53,8 @@ icon: mobile-notch
- Select all columns except `user_id` on `Column insert permissions`
- Add a new `Column preset` and set `Column Name` to `user_id` and `Column Value` to `X-Hasura-User-Id`
- Save
<Frame caption="Insert Permissions">
<img src="/images/guides/quickstarts/react-native/todos-insert-permissions.png" />
</Frame>
![Insert Permissions](/images/quickstarts/react-native/todos-insert-permissions.png)
2. `Select`
- Set `Row select permissions` to `With custom check` and fill in the following rule:
@@ -68,9 +64,7 @@ icon: mobile-notch
- Select all columns except `user_id` on `Column select permissions`
- Save
<Frame caption="Select Permissions">
<img src="/images/guides/quickstarts/react-native/todos-select-permissions.png" />
</Frame>
![Select Permissions](/images/quickstarts/react-native/todos-select-permissions.png)
3. `Update`
- Set `Row update permissions` to `With custom check` and fill in the following rule:
@@ -80,9 +74,7 @@ icon: mobile-notch
- Select all columns except `user_id` on `Column select permissions`
- Save
<Frame caption="Update permissions">
<img src="/images/guides/quickstarts/react-native/todos-update-permissions.png" />
</Frame>
![Update permissions](/images/quickstarts/react-native/todos-update-permissions.png)
4. `Delete`
- Set `Row delete permissions` to `With custom check` and fill in the following rule:
@@ -91,9 +83,7 @@ icon: mobile-notch
- Set the value to `X-Hasura-User-Id`
- Save
<Frame caption="Delete permissions">
<img src="/images/guides/quickstarts/react-native/todos-delete-permissions.png" />
</Frame>
![Delete permissions](/images/quickstarts/react-native/todos-delete-permissions.png)
</Step>
<Step title="Configure permissions to enable user file uploads">
@@ -109,9 +99,7 @@ icon: mobile-notch
2. Select all columns on `Column insert permissions`
4. Save
<Frame caption="Insert Permissions">
<img src="/images/guides/quickstarts/react-native/files-insert-permissions.png" />
</Frame>
![Insert Permissions](/images/quickstarts/react-native/files-insert-permissions.png)
3. `Select`
- Set `Row select permissions` to `With custom check` and fill in the following rule:
@@ -121,14 +109,12 @@ icon: mobile-notch
- Select all columns on `Column select permissions`
- Save
<Frame caption="Select permissions">
<img src="/images/guides/quickstarts/react-native/files-select-permissions.png" />
</Frame>
![Select permissions](/images/quickstarts/react-native/files-select-permissions.png)
</Step>
<Step title="Bootstrap your React Native app">
Intialize a new React Native project using the template `@nhost/react-native-template`
```bash Terminal
npx react-native init myapp --template @nhost/react-native-template
```
@@ -452,6 +438,6 @@ icon: mobile-notch
3. Fill in the necessary credentials.
For detailed instructions on generating the required credentials, refer to the following guides:
- [Google Sign-In Guide](https://docs.nhost.io/guides/auth/social/sign-in-google)
- [Apple Sign-In Guide](https://docs.nhost.io/guides/auth/social/sign-in-apple)
</Note>
- [Google Sign-In Guide](https://docs.nhost.io/products/auth/social/sign-in-google)
- [Apple Sign-In Guide](https://docs.nhost.io/products/auth/social/sign-in-apple)
</Note>

View File

@@ -32,14 +32,14 @@ icon: vuejs
<Warning>Make sure the option `Track this` is enabled</Warning>
![SQL Editor](/images/guides/quickstarts/react/sql-editor.png)
![SQL Editor](/images/quickstarts/react/sql-editor.png)
</Step>
<Step title="permissions">
Select the new table `movies` just created, and click in **Edit Permissions** to set the following permissions for the `public` role and `select` action.
![Permission Rules](/images/guides/quickstarts/react/permissions.png)
![Permission Rules](/images/quickstarts/react/permissions.png)
</Step>
@@ -125,8 +125,4 @@ icon: vuejs
<Step title="The end">
Run your project with `npm run dev -- --open --port 3000` and enter `http://localhost:3000` in your browser.
</Step>
</Steps>
```
```
</Steps>

View File

@@ -43,7 +43,7 @@ Enter the details for your project and wait a couple of minutes while Nhost prov
On the project's dashboard, navigate to **Database** and create a new table called `todos`.
![Database](/images/guides/todos-react-database.png)
![Database](/images/tutorials/todos-react-database.png)
You can either copy and paste the following SQL into the SQL Editor, **Database -> SQL Editor**, or manually create the table by clicking on **New Table**.
@@ -72,7 +72,7 @@ You can either copy and paste the following SQL into the SQL Editor, **Database
<Tab title="UI">
Click on **New Table** and fill in the details for the `todos` table as shown.
![New Table](/images/guides/todos-react-database-new-table.png)
![New Table](/images/tutorials/todos-react-database-new-table.png)
</Tab>
</Tabs>
@@ -88,19 +88,19 @@ You will set permissions for the `user` role and actions `insert`, `select`, `up
<Tabs>
<Tab title="insert">
Click on the right cell for the `user` role and action `insert` and set permissions as follows:
![User Insert](/images/guides/todos-react-permissions-insert.png)
![User Insert](/images/tutorials/todos-react-permissions-insert.png)
</Tab>
<Tab title="select">
Click on the right cell for the `user` role and action `select` and set permissions as follows:
![User Select](/images/guides/todos-react-permissions-select.png)
![User Select](/images/tutorials/todos-react-permissions-select.png)
</Tab>
<Tab title="update">
Click on the right cell for the `user` role and action `update` and set permissions as follows:
![User Select](/images/guides/todos-react-permissions-update.png)
![User Select](/images/tutorials/todos-react-permissions-update.png)
</Tab>
<Tab title="delete">
Click on the right cell for the `user` role and action `delete` and set permissions as follows:
![User Delete](/images/guides/todos-react-permissions-delete.png)
![User Delete](/images/tutorials/todos-react-permissions-delete.png)
</Tab>
</Tabs>
@@ -115,15 +115,15 @@ As before, we want to set permissions for the `user` role and actions `insert`,
<Tabs>
<Tab title="insert">
Click on the right cell for the `user` role and action `insert` and set permissions as follows:
![User Insert](/images/guides/todos-react-permissions-files-insert.png)
![User Insert](/images/tutorials/todos-react-permissions-files-insert.png)
</Tab>
<Tab title="select">
Click on the right cell for the `user` role and action `select` and set permissions as follows:
![User Select](/images/guides/todos-react-permissions-files-select.png)
![User Select](/images/tutorials/todos-react-permissions-files-select.png)
</Tab>
<Tab title="delete">
Click on the right cell for the `user` role and action `delete` and set permissions as follows:
![User Delete](/images/guides/todos-react-permissions-files-delete.png)
![User Delete](/images/tutorials/todos-react-permissions-files-delete.png)
</Tab>
</Tabs>
@@ -505,5 +505,4 @@ Run the Todo Manager with:
npm run dev -- --port 3000
```
Open your browser on [localhost:3000](localhost:3000) to see your new application in action.
Open your browser on [localhost:3000](localhost:3000) to see your new application in action.

View File

@@ -43,7 +43,7 @@ Enter the details for your project and wait a couple of minutes while Nhost prov
On the project's dashboard, navigate to **Database** and create a new table called `todos`.
![Database](/images/guides/todos-react-database.png)
![Database](/images/tutorials/todos-react-database.png)
You can either copy and paste the following SQL into the SQL Editor, **Database -> SQL Editor**, or manually create the table by clicking on **New Table**.
@@ -72,7 +72,7 @@ You can either copy and paste the following SQL into the SQL Editor, **Database
<Tab title="UI">
Click on **New Table** and fill in the details for the `todos` table as shown.
![New Table](/images/guides/todos-react-database-new-table.png)
![New Table](/images/tutorials/todos-react-database-new-table.png)
</Tab>
</Tabs>
@@ -88,19 +88,19 @@ You will set permissions for the `user` role and actions `insert`, `select`, `up
<Tabs>
<Tab title="insert">
Click on the right cell for the `user` role and action `insert` and set permissions as follows:
![User Insert](/images/guides/todos-react-permissions-insert.png)
![User Insert](/images/tutorials/todos-react-permissions-insert.png)
</Tab>
<Tab title="select">
Click on the right cell for the `user` role and action `select` and set permissions as follows:
![User Select](/images/guides/todos-react-permissions-select.png)
![User Select](/images/tutorials/todos-react-permissions-select.png)
</Tab>
<Tab title="update">
Click on the right cell for the `user` role and action `update` and set permissions as follows:
![User Select](/images/guides/todos-react-permissions-update.png)
![User Select](/images/tutorials/todos-react-permissions-update.png)
</Tab>
<Tab title="delete">
Click on the right cell for the `user` role and action `delete` and set permissions as follows:
![User Delete](/images/guides/todos-react-permissions-delete.png)
![User Delete](/images/tutorials/todos-react-permissions-delete.png)
</Tab>
</Tabs>
@@ -115,15 +115,15 @@ As before, we want to set permissions for the `user` role and actions `insert`,
<Tabs>
<Tab title="insert">
Click on the right cell for the `user` role and action `insert` and set permissions as follows:
![User Insert](/images/guides/todos-react-permissions-files-insert.png)
![User Insert](/images/tutorials/todos-react-permissions-files-insert.png)
</Tab>
<Tab title="select">
Click on the right cell for the `user` role and action `select` and set permissions as follows:
![User Select](/images/guides/todos-react-permissions-files-select.png)
![User Select](/images/tutorials/todos-react-permissions-files-select.png)
</Tab>
<Tab title="delete">
Click on the right cell for the `user` role and action `delete` and set permissions as follows:
![User Delete](/images/guides/todos-react-permissions-files-delete.png)
![User Delete](/images/tutorials/todos-react-permissions-files-delete.png)
</Tab>
</Tabs>

View File

@@ -42,7 +42,7 @@ Enter the details for your project and wait a couple of minutes while Nhost prov
On the project's dashboard, navigate to **Database** and create a new table called `todos`.
![Database](/images/guides/todos-database.png)
![Database](/images/tutorials/todos-react-database.png)
You can either copy and paste the following SQL into the SQL Editor, **Database -> SQL Editor**, or manually create the table by clicking on **New Table**.
@@ -70,7 +70,7 @@ You can either copy and paste the following SQL into the SQL Editor, **Database
<Tab title="UI">
Click on **New Table** and fill in the details for the `todos` table as shown.
![New Table](/images/guides/todos-react-database-new-table.png)
![New Table](/images/tutorials/todos-react-database-new-table.png)
</Tab>
</Tabs>
@@ -86,19 +86,19 @@ You will set permissions for the `user` role and actions `insert`, `select`, `up
<Tabs>
<Tab title="insert">
Click on the right cell for the `user` role and action `insert` and set permissions as follows:
![User Insert](/images/guides/todos-react-permissions-insert.png)
![User Insert](/images/tutorials/todos-react-permissions-insert.png)
</Tab>
<Tab title="select">
Click on the right cell for the `user` role and action `select` and set permissions as follows:
![User Select](/images/guides/todos-react-permissions-select.png)
![User Select](/images/tutorials/todos-react-permissions-select.png)
</Tab>
<Tab title="update">
Click on the right cell for the `user` role and action `update` and set permissions as follows:
![User Select](/images/guides/todos-react-permissions-update.png)
![User Select](/images/tutorials/todos-react-permissions-update.png)
</Tab>
<Tab title="delete">
Click on the right cell for the `user` role and action `delete` and set permissions as follows:
![User Delete](/images/guides/todos-react-permissions-delete.png)
![User Delete](/images/tutorials/todos-react-permissions-delete.png)
</Tab>
</Tabs>
@@ -113,15 +113,15 @@ As before, we want to set permissions for the `user` role and actions `insert`,
<Tabs>
<Tab title="insert">
Click on the right cell for the `user` role and action `insert` and set permissions as follows:
![User Insert](/images/guides/todos-react-permissions-files-insert.png)
![User Insert](/images/tutorials/todos-react-permissions-files-insert.png)
</Tab>
<Tab title="select">
Click on the right cell for the `user` role and action `select` and set permissions as follows:
![User Select](/images/guides/todos-react-permissions-files-select.png)
![User Select](/images/tutorials/todos-react-permissions-files-select.png)
</Tab>
<Tab title="delete">
Click on the right cell for the `user` role and action `delete` and set permissions as follows:
![User Delete](/images/guides/todos-react-permissions-files-delete.png)
![User Delete](/images/tutorials/todos-react-permissions-files-delete.png)
</Tab>
</Tabs>

View File

@@ -1,115 +0,0 @@
---
title: Overview
description: Learn about Nhost Auth
icon: hand-wave
---
Nhost Auth is a ready-to-use authentication service seamlessly integrated with the [GraphQL API](/product/graphql) and its [Permission System](/guides/api/permissions) from Hasura. This allows you to easily add user authentication to your application without having to build and maintain your own authentication system.
## Supported Methods
<CardGroup cols={4}>
<Card title="Email and Password" icon="square-1" href="/guides/auth/sign-in-email-password">
</Card>
<Card title="Magic Link" icon="square-2" href="/guides/auth/sign-in-magic-link">
</Card>
<Card title="Phone Number (SMS)" icon="square-3" href="/guides/auth/sign-in-phone-number">
</Card>
<Card title="Security Keys (WebAuthn)" icon="square-4" href="/guides/auth/sign-in-webauthn">
</Card>
<Card title="Elevated Permissions" icon="square-5" href="/guides/auth/elevated-permissions">
</Card>
</CardGroup>
### OAuth Providers
<CardGroup cols={4}>
<Card title="Apple" icon="square-1" href="/guides/auth/social/sign-in-apple">
</Card>
<Card title="Discord" icon="square-2" href="/guides/auth/social/sign-in-discord">
</Card>
<Card title="Facebook" icon="square-3" href="/guides/auth/social/sign-in-facebook">
</Card>
<Card title="GitHub" icon="square-4" href="/guides/auth/social/sign-in-github">
</Card>
<Card title="Google" icon="square-5" href="/guides/auth/social/sign-in-google">
</Card>
<Card title="Linkedin" icon="square-6" href="/guides/auth/social/sign-in-linkedin">
</Card>
<Card title="Spotify" icon="square-7" href="/guides/auth/social/sign-in-spotify">
</Card>
<Card title="Twitch" icon="square-8" href="/guides/auth/social/sign-in-twitch">
</Card>
<Card title="WorkOS" icon="square-9" href="/guides/auth/social/sign-in-workos">
</Card>
</CardGroup>
## Client URL
Client URL is the URL of your frontend application. The Client URL is used to redirect the user in certain auth workflows like signing in or resetting a password.
## Allowed Redirect URLs
Allowed Redirect URLs are the URLs of your frontend application that users are allowed to be redirected to on specific auth workflows. This is useful if you have multiple applications using the same Nhost backend or if you want to redirect users to a specific URL after certain authentication workflows.
As an example, for a staging project, you can set the Client URL to `https://staging.example.com` and Allowed Redirect URLs to `https://*.vercel.app`. This way, the user can be redirected to any Vercel deployment of your frontend application.
## Allowed Emails and Domains
Allowed Emails and Domains are used to restrict what email adresses and domains are valid when signing up and signing in.
If both allowed emails and allowed domains are set a user can only sign up if their email address matches one of the allowed emails or one of the allowed domains.
## Blocked Emails and Domains
Blocked Emails and Domains are used to block specific email addresses and domains from signing up and signing in.
Note that even if a user's email address matches any allowed email or domain, they will still be blocked if their email address matches any blocked email or domain.
## Multi-factor Authentication
By enabling Multi-Factor Authentication (MFA), you can allow users to verify their identity using a second factor during the sign-in process. We currently support Authenticator Apps (TOTP) for MFA.
A user can enable MFA for their account by scanning a QR code with their Authenticator App. After that, they will be prompted to enter a code generated by their Authenticator App during the sign-in process.
## Gravatar
If Gravatar is enabled, Nhost Auth will use the user's email address to fetch their Gravatar profile picture. If the user doesn't have a Gravatar profile picture, a default image will be used.
There are two options for Gravatars.
<Steps>
<Step title="Default Image">
If the user doesn't have a Gravatar profile picture, a default image will be used. You can choose between the following options:
- `404`: Do not load any image if none is associated with the email hash, instead return an HTTP 404 (File Not Found) response.
- `mp`: (mystery-person) a simple, cartoon-style silhouetted outline of a person (does not vary by email hash).
- `identicon`: a geometric pattern based on an email hash.
- `monsterid`: a generated 'monster' with different colors, faces, etc.
- `wavatar`: generated faces with differing features and backgrounds.
- `retro`: awesome generated, 8-bit arcade-style pixelated faces.
- `robohash`: a generated robot with different colors, faces, etc.
- `blank`: a transparent PNG image.
</Step>
<Step title="Rating">
Gravatar images are rated by default. You can choose between the following options:
- `g`: suitable for display on all websites with any audience type.
- `pg`: may contain rude gestures, provocatively dressed individuals, lesser swear words or mild violence.
- `r`: may contain such things as harsh profanity, intense violence, nudity, or hard drug use.
- `x`: may contain hardcore sexual imagery or extremely disturbing violence.
</Step>
</Steps>
## Disable New Users
If set, newly registered users are disabled and won't be able to sign in. This is useful if you want to manually approve new users before they can sign in.
## Disable Sign Ups
If set, new users won't be able to sign up.

View File

@@ -1,35 +0,0 @@
---
title: Getting Started
description: 'Learn how to get started with Run'
icon: play
---
To start with Nhost Run, you will need to create an Nhost project first. Then you can click on `Run` in the sidebar:
![click on run](/images/guides/run/getting_started_1.png)
Then on `New Service`:
![click on New Service](/images/guides/run/getting_started_2.png)
Now you can fill your [service configuration](/guides/run/configuration):
![click on New Service](/images/guides/run/getting_started_3.png)
As you configure the `Ports` section you can take note of the generated URL. You can find more information about this section under [Networking](/guides/run/networking).
![copy the URL](/images/guides/run/getting_started_4.png)
Once you are done configuring your service you can click on `Create`:
![click on create](/images/guides/run/getting_started_5.png)
Now wait for the service to finish updating:
![wait for the service to finish updating](/images/guides/run/getting_started_6.png)
Finally you can visit the URL you copied before:
![visit url](/images/guides/run/getting_started_7.png)
And profit!

View File

Before

Width:  |  Height:  |  Size: 276 KiB

After

Width:  |  Height:  |  Size: 276 KiB

View File

Before

Width:  |  Height:  |  Size: 248 KiB

After

Width:  |  Height:  |  Size: 248 KiB

View File

Before

Width:  |  Height:  |  Size: 825 KiB

After

Width:  |  Height:  |  Size: 825 KiB

View File

Before

Width:  |  Height:  |  Size: 984 KiB

After

Width:  |  Height:  |  Size: 984 KiB

View File

Before

Width:  |  Height:  |  Size: 844 KiB

After

Width:  |  Height:  |  Size: 844 KiB

View File

Before

Width:  |  Height:  |  Size: 840 KiB

After

Width:  |  Height:  |  Size: 840 KiB

View File

Before

Width:  |  Height:  |  Size: 840 KiB

After

Width:  |  Height:  |  Size: 840 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

Before

Width:  |  Height:  |  Size: 850 KiB

After

Width:  |  Height:  |  Size: 850 KiB

View File

Before

Width:  |  Height:  |  Size: 971 KiB

After

Width:  |  Height:  |  Size: 971 KiB

View File

Before

Width:  |  Height:  |  Size: 904 KiB

After

Width:  |  Height:  |  Size: 904 KiB

View File

Before

Width:  |  Height:  |  Size: 967 KiB

After

Width:  |  Height:  |  Size: 967 KiB

View File

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 120 KiB

View File

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 110 KiB

View File

Before

Width:  |  Height:  |  Size: 916 KiB

After

Width:  |  Height:  |  Size: 916 KiB

View File

Before

Width:  |  Height:  |  Size: 393 KiB

After

Width:  |  Height:  |  Size: 393 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

Before

Width:  |  Height:  |  Size: 232 KiB

After

Width:  |  Height:  |  Size: 232 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

Before

Width:  |  Height:  |  Size: 878 KiB

After

Width:  |  Height:  |  Size: 878 KiB

View File

Before

Width:  |  Height:  |  Size: 872 KiB

After

Width:  |  Height:  |  Size: 872 KiB

Some files were not shown because too many files have changed in this diff Show More