This project is based on Create React App. (For more information about Create react App, check their full documentation.)
The main addition is a new folder: src/lambda
. Each JavaScript file in there will automatically be prepared for Lambda function deployment.
This means that the src/lambda/create-comment.js
function will first be built for Lambda, and then deployed to the url /.netlify/functions/create-comment
.
When deployed to Netlify, both your front-end React app and back-end Lambda functions will automatically be built and deployed.
You can easily deploy this project yourself using this button:
All functions are compiled with webpack using the Babel Loader, so you can use modern JavaScript, import npm modules, etc., without any extra setup.
Note: This project is set up to use Docker and docker-compose
. To build and run with Docker, rename .env.local-sample
to .env.local
and fill out the necessary variables. Then, simply run docker-compose up
.
Notice that the CONTENTFUL_CONTENT_MANAGEMENT_ACCESS_TOKEN
environment variable is not prefixed with REACT_APP_
as the others are. This is on purpose, to prevent create-react-app
from exporting this variable to the front-end code.
When deploying to Netlify, remember to fill out the environment variables in Netlify's dashboard as well.
If you do not wish to use Docker, you must set the proxy.target
in package.json
back to http://localhost:9000
instead of http://back-end:9000
, and then follow the instructions below.
-
Clone the repository and run
yarn
from the root of the repo to install all dependencies. -
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.
- 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.