Skip to content

M0nica/greys-anatomy-lorem-ipsum-generator

Repository files navigation

greys-anatomy-lorem-ipsum-generator is a website that generates lorem ipsum text inspired by Grey's Anatomy and medical terms. Lorem ipsum is nonsense text that can be used as place holder copy in designs. Additional terms can be added in the /lambda/words.js file

screenshot of lorem ipsum generator

This project's infra boilerplate wascreate-react-app-lambda which was created from latest versions of Create React App v3 and netlify-lambda v1.

The main addition to base Create-React-App is a new folder: src/lambda. Each JavaScript file in there will be built for Lambda function deployment in /built-lambda, specified in netlify.toml.

Local Development

Before developing, fork the repository and run yarn from the root of the repo to install all dependencies.

Start each server individually

Both need to be run at the same time, in separate windows, in order for the application to properly run locally

Run the functions dev server

From inside the project folder, run:

yarn start:lambda

This will open a local server running at http://localhost:9000 serving your Lambda functions, updating as you make changes in the src/lambda folder.

You can then access your functions directly at http://localhost:9000/{function_name}, but to access them with the app, you'll need to start the app dev server. Under the hood, this uses react-scripts' advanced proxy feature with the setupProxy.js file.

Run the app dev server

While the functions server is still running, open a new terminal tab and run:

yarn start

This will start the normal create-react-app dev server and open your app at http://localhost:3000.

Local in-app requests to the relative path /.netlify/functions/* will automatically be proxied to the local functions dev server.

Note: You can also use npm-run-all to run the functions dev server and app dev server concurrently. Note that you don't need this if you use netlify dev as function builder detection does that for you.

Service Worker

The service worker does not work with lambda functions out of the box. It prevents calling the function and returns the app itself instead (Read more). To solve this you have to eject and enhance the service worker configuration in the webpack config. Whitelist the path of your lambda function and you are good to go.