diff --git a/DEVELOPERS.md b/DEVELOPERS.md index 0d23fbd42f6..e427b76ed6f 100644 --- a/DEVELOPERS.md +++ b/DEVELOPERS.md @@ -1,45 +1,47 @@ # Developing Supabase -1. [Development setup](#development-setup) - - [Install dependencies](#install-dependencies) - - [Fork the repository](#fork-the-repository) -1. [Build Supabase](#build-supabase) - - [Choose a directory](#choose-a-directory) -1. [Start a development server](#start-a-development-server) - - [Supabase Website](#supabase-website) - - [Supabase Docs](#supabase-docs) - - [Supabase Studio](#supabase-studio) -1. [Create a pull request](#create-a-pull-request) +1. [Getting started](#getting-started) + - [Install dependencies](#install-dependencies) +2. [Local development](#local-development) + - [Fork the repository](#fork-the-repository) + - [Clone the repo](#clone-the-repo) + - [Running turborepo](#running-turborepo) + - [Shared components](#shared-components) + - [Installing packages](#installing-packages) +3. [Create a pull request](#create-a-pull-request) - [Common tasks](#common-tasks) - [Add a redirect](#add-a-redirect) -- [Monorepo](#monorepo) - - [Getting started](#getting-started) - - [Shared components](#shared-components) - - [Installing packages](#installing-packages) - - [Development](#development) - [Community channels](#community-channels) -## Development setup +## Getting started -Thanks for your interest in Supabase and for wanting to contribute! Before you begin, read the +Thanks for your interest in [Supabase](https://supabase.com) and for wanting to contribute! Before you begin, read the [code of conduct](https://github.com/supabase/.github/blob/main/CODE_OF_CONDUCT.md) and check out the [existing issues](https://github.com/supabase/supabase/issues). -This document describes how to set up your development environment to build and test Supabase. +This document describes how to set up your development environment to build and test [Supabase](https://supabase.com). ### Install dependencies -You need to install and configure the following dependencies on your machine to build Supabase: +You need to install and configure the following dependencies on your machine to build [Supabase](https://supabase.com): - [Git](http://git-scm.com/) - [Node.js v16.x (LTS)](http://nodejs.org) - [npm](https://www.npmjs.com/) version 7+ or [Yarn](https://yarnpkg.com/) +## Local development + +We are in the process of migrating this repository to monorepo, using [Turborepo](https://turborepo.org/docs). + +Eventually, all the apps will be run using [Turborepo](https://turborepo.org/docs), which will significantly improve the developer workflow. + +If you are working on the ([docs site](https://supabase.com/docs)), please refer to this [developers guide](https://github.com/supabase/supabase/tree/master/apps/reference/DEVELOPERS.md). + ### Fork the repository -To contribute code to Supabase, you must fork the [Supabase Repository](https://github.com/supabase/supabase). +To contribute code to [Supabase](https://supabase.com), you must fork the [Supabase Repository](https://github.com/supabase/supabase). -## Build Supabase +### Clone the repo 1. Clone your GitHub forked repository: @@ -52,104 +54,61 @@ To contribute code to Supabase, you must fork the [Supabase Repository](https:// cd supabase ``` -### Choose a directory +### Running turborepo -Choose if you want to work on the [Supabase Website](https://supabase.com), [Supabase Docs](https://supabase.com/docs), or [Supabase Studio](https://app.supabase.com). +[Supabase](https://supabase.com) uses [Turborepo](https://turborepo.org/docs) to manage and run this monorepo. -1. Go to the [Supabase Website](https://supabase.com) directory +1. Install the dependences in the root of the repo. ```sh - cd apps/www + npm install # install dependencies ``` - Go to the [Supabase Docs](https://supabase.com/docs) directory - +2. You can then run the apps simultaneously with the following. ```sh - cd apps/docs + npm run dev # start all the applications ``` - Go to the [Supabase Studio](https://app.supabase.com) directory +Then visit, and edit, any of the following sites: - ```sh - cd studio - ``` +| Site | Directory | Scope name | Description | Local development server | +| -------------------------------------------- | -------------- | ---------- | ------------------------------------ | ------------------------ | +| [supabase.com](https://supabase.com) | `/apps/www` | www | The main website | http://localhost:3000 | +| [app.supabase.com](https://app.supabase.com) | `/studio` | studio | Studio dashboard | http://localhost:8082 | +| [supabase.com/docs] Next.js based Docs site | `/apps/docs` . | docs | Guides and Reference (Next.js based) | http://localhost:3001 | -1. Install npm/yarn dependencies: +#### Running sites individually - npm +You can run any of the sites indiviudally by using the scope name. For example: - ```sh - npm install - ``` +```sh +npm run dev:www +``` - or with yarn +#### Shared components - ```sh - yarn install - ``` +The monorepo has a set of shared components under `/packages`: -## Start a development server +- `/packages/common`: Common React code, shared between all sites. +- `/packages/config`: All shared config +- `/packages/spec`: Generates documentation using spec files. +- `/packages/tsconfig`: Shared Typescript settings -To debug code and to see your changes in real time, it is often useful to have a local HTTP server. Click one of the three links below to choose which development server you want to start. +#### Installing packages -- [Supabase Website](#supabase-website) -- [Supabase Docs](#supabase-docs) -- [Supabase Studio](#supabase-studio) +Installing a package with NPM workspaces requires you to add the `-w` flag to tell NPM which workspace you want to install into. Do not install dependencies in their local folder, install them from the route using the `-w` flag. -### Supabase Website +The format is: `npm install -w=`. -The website is moving to a new monorepo setup. See the [Monorepo](#monorepo) section below. +For example: -### Supabase Docs +- `npm install react -w common`: installs into `./packages/common` +- `npm install react -w www`: installs into `./apps/www` +- `npm install react -w studio`: installs into `./studio` -1. Build development server +You do not need to install `devDependencies` in each workspace. These can all be installed in the root package. - npm - - ```sh - npm run build - ``` - - or with yarn - - ```sh - yarn build - ``` - -1. Start development server - - npm - - ```sh - npm run dev - ``` - - or with yarn - - ```sh - yarn dev - ``` - -1. Access the local server in your web browser at http://localhost:3001/docs. - -### Supabase Studio - -1. Start development server - - npm - - ```sh - npm run dev - ``` - - or with yarn - - ```sh - yarn dev - ``` - -1. Access the local server in your web browser at http://localhost:8082/. -See the [Supabase Studio readme](./studio/README.md) for more information. +--- ## Create a pull request @@ -165,63 +124,6 @@ Did you have an issue, like a merge conflict, or don't know how to open a pull r Create a new entry in the [`redirects.js`](https://github.com/supabase/supabase/blob/master/apps/www/lib/redirects.js) file in our main site. -## Monorepo - -We are in the process of migrating this repository to monorepo, using Turborepo. -Eventually, the docs and the Studio will be run using Turborepo, which will significantly improve the developer workflow. -You must be using NPM 7 or higher. - -### Getting started - -```sh -npm install # install dependencies -npm run dev # start all the applications -``` - -Then edit and visit any of the following sites: - -Site | Directory | Description | Local development server ----- | --------- | ----------- | ------------------------ -[supabase.com](https://supabase.com) | `/apps/www` | The main website | http://localhost:3000 -[supabase.com/docs](https://supabase.com/docs) | `apps/docs` | Guides and Reference documentation | http://localhost:3001/docs -[POC] Community forum | `/apps/temp-community-forum` | GitHub Discussions in a Next.js site | http://localhost:3002 -[POC] DEV articles site | `/apps/temp-community-tutorials` | A Next.js site for our DEV articles (which community members can write) | http://localhost:3003 - -### Shared components - -The monorepo has a set of shared components under `/packages`: - -- `/packages/common`: Common React code, shared between all sites. -- `/packages/config`: All shared config -- `/packages/spec`: Generates documentation using spec files. -- `/packages/tsconfig`: Shared Typescript settings -- `/packages/ui`: Shared UI components (formerly @supabase/ui) - -To use these 'packages', or any of their components from a Next.JS app, you must use `next-transpile-modules` in the `next.config.js` file. This looks like: - -```tsx -// next.config.js -const withTM = require('next-transpile-modules')(['ui', 'common']) -module.exports = withTM({}) -``` - -### Installing packages - -Installing a package with NPM workspaces requires you to add the `-w` flag to tell NPM which workspace you want to install into. - -The format is: `npm install -w=`. - -For example: - -- `npm install @supabase/ui -w common`: installs into `./packages/common` -- `npm install @supabase/ui -w www`: installs into `./apps/www` - -You do not need to install `devDependencies` in each workspace. These can all be installed in the root package. - -### Development - -`npm run dev` - --- ## Community channels diff --git a/apps/reference/DEVELOPERS.md b/apps/reference/DEVELOPERS.md new file mode 100644 index 00000000000..c5fae76474f --- /dev/null +++ b/apps/reference/DEVELOPERS.md @@ -0,0 +1,105 @@ +# Developing Supabase Docs + +1. [Development setup](#development-setup) + - [Install dependencies](#install-dependencies) + - [Fork the repository](#fork-the-repository) +2. [Build Supabase](#build-supabase) + - [Run the docs locally](#run-the-docs-locally) + - [Editing files](#editing-files) +3. [Create a pull request](#create-a-pull-request) + +- [Monorepo](#monorepo) +- [Community channels](#community-channels) + +## Development setup + +Thanks for your interest in Supabase and for wanting to contribute! Before you begin, read the +[code of conduct](https://github.com/supabase/.github/blob/main/CODE_OF_CONDUCT.md) and check out the +[existing issues](https://github.com/supabase/supabase/issues). +This document describes how to set up your development environment to build and test Supabase. + +### Install dependencies + +You need to install and configure the following dependencies on your machine to build Supabase: + +- [Git](http://git-scm.com/) +- [Node.js v16.x (LTS)](http://nodejs.org) +- [npm](https://www.npmjs.com/) version 7+ or [Yarn](https://yarnpkg.com/) + +### Fork the repository + +To contribute code to Supabase, you must fork the [Supabase Repository](https://github.com/supabase/supabase). + +## Build Supabase + +1. Clone your GitHub forked repository: + + ```sh + git clone https://github.com//supabase.git + ``` + +1. Go to the Supabase directory: + ```sh + cd supabase + ``` + +### Run the docs locally + +1. Build the development server + + npm + + ```sh + npm run build + ``` + + or with yarn + + ```sh + yarn build + ``` + +1. Start the development server + + npm + + ```sh + npm run start + ``` + + or with yarn + + ```sh + yarn start + ``` + +1. Access the local server in your web browser at http://localhost:3010/docs. + +--- + +### Editing files + +Our docs site are comprised of guides, tutorials, quickstarts, and reference docs. Note that the [reference docs](https://supabase.com/docs/reference) are generated from spec files. + +If you go to any page in the [Supabase docs](https://supabase.com/docs), you'll see an **Edit this page** link at the bottom. This link indicates which file you need to edit. + +For example, the [NextJS Quickstart](https://supabase.com/docs/guides/with-nextjs) is a markdown file you can edit directly. However, this [signUp() reference doc](https://supabase.com/docs/reference/javascript/auth-signup) is generated from a [spec file](https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1_legacy.yml). + +## Create a pull request + +After making your changes, open a pull request (PR). Once you submit your pull request, others from the Supabase team/community will review it with you. + +Did you have an issue, like a merge conflict, or don't know how to open a pull request? Check out [GitHub's pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests) tutorial on how to resolve merge conflicts and other issues. Once your PR has been merged, you will be proudly listed as a contributor in the [contributor chart](https://github.com/supabase/supabase/graphs/contributors). + +--- + +## Monorepo + +We are in the process of migrating this repository to monorepo, using Turborepo. +This app is currently not in that workflow, but if you want to contribute to any of the other apps, please refer to [the developers readme](https://github.com/supabase/supabase/blob/master/DEVELOPERS.md). + +--- + +## Community channels + +Stuck somewhere? Have any questions? Join the [Discord Community Server](https://discord.supabase.com/) or the [Github Discussions](https://github.com/supabase/supabase/discussions). We are here to help!