- Install modules for client and server: `cd client && npm i && cd ../server && npm i`
- Create .env file from .env.example in server: `cp ./server/.env.example ./server/.env`
- Build client: `cd client && npm run build`
- Start development backend server: `cd server && npm run dev`
- Run
```
npm run dev
```
This method supports hot-reload for the server but not for the client because the server serves the production build of React.
To develop with hot-reload on both client and server, do this:
```
npm run start
```
- Start development backend server on port 4000: `cd server && npm run dev`
- In a second terminal, start development client server on port 3000: `cd client && npm start`
- Open the client on `localhost:3000`. API requests from the client now get proxied to the backend dev server as specified in the client's package.json under "proxy".