]> Untitled Git - lemmy.git/blobdiff - docs/src/contributing_local_development.md
Isomorphic docker (#1124)
[lemmy.git] / docs / src / contributing_local_development.md
index 066386f50747eac553368c0ec998e7e7ca77a98f..5f53d3374a126d99059a224ba78ffcf1a3fcbe50 100644 (file)
@@ -1,67 +1,85 @@
-### Ubuntu
-
-
-#### Build requirements:
+### Install build requirements
+#### Ubuntu
 ```
-sudo apt install git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 git
+sudo apt install git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak
 # install yarn
 curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
 echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
 sudo apt update && sudo apt install yarn
 ```
 
-#### Get the source code
+#### macOS
+
+Install Rust using [the recommended option on rust-lang.org](https://www.rust-lang.org/tools/install) (rustup).
+
+Then, install [Homebrew](https://brew.sh/) if you don't already have it installed.
+
+Finally, install Node and Yarn.
+
+```
+brew install node yarn
+```
+
+### Get the back end source code
 ```
 git clone https://github.com/LemmyNet/lemmy.git
 # or alternatively from gitea
 # git clone https://yerbamate.dev/LemmyNet/lemmy.git
 ```
 
-All the following commands need to be run either in `lemmy/server` or `lemmy/ui`, as indicated
-by the `cd` command.
-
-#### Build the backend (Rust)
+### Build the backend (Rust)
 ```
-cd server
 cargo build
 # for development, use `cargo check` instead)
 ```
 
-#### Build the frontend (Typescript)
+### Get the front end source code
 ```
-cd ui
-yarn
-yarn build
+git clone https://github.com/LemmyNet/lemmy-ui.git
 ```
 
-#### Setup postgresql
+### Setup postgresql
+#### Ubuntu
 ```
 sudo apt install postgresql
 sudo systemctl start postgresql
-# initialize postgres database
+
+# Either execute db-init.sh, or manually initialize the postgres database:
 sudo -u postgres psql -c "create user lemmy with password 'password' superuser;" -U postgres
 sudo -u postgres psql -c 'create database lemmy with owner lemmy;' -U postgres
 export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
-# or execute server/db-init.sh
 ```
 
-#### Run a local development instance
+#### macOS
+```
+brew install postgresql
+brew services start postgresql
+/usr/local/opt/postgres/bin/createuser -s postgres
+
+# Either execute db-init.sh, or manually initialize the postgres database:
+psql -c "create user lemmy with password 'password' superuser;" -U postgres
+psql -c 'create database lemmy with owner lemmy;' -U postgres
+export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
+```
+
+### Run a local development instance
 ```
-# run each of these in a seperate terminal
-cd server && cargo run
-ui & yarn start
+cd lemmy
+cargo run
 ```
 
-Then open [localhost:4444](http://localhost:4444) in your browser. It will auto-refresh if you edit
-any frontend files. For backend coding, you will have to rerun `cargo run`. You can use
-`cargo check` as a faster way to find compilation errors.
+Then open [localhost:1235](http://localhost:1235) in your browser. To reload back-end changes, you will have to rerun `cargo run`. You can use `cargo check` as a faster way to find compilation errors.
+
+To do front end development:
 
-To speed up incremental builds, you can add the following to `~/.cargo/config`:
 ```
-[target.x86_64-unknown-linux-gnu]
-rustflags = ["-Clink-arg=-fuse-ld=lld"]
+cd lemmy-ui
+yarn
+yarn dev
 ```
 
+and goto [localhost:1234](http://localhost:1234). Front end saves should rebuild the project.
+
 Note that this setup doesn't include image uploads or link previews (provided by pict-rs and
 iframely respectively). If you want to test those, you should use the
 [Docker development](contributing_docker_development.md).