A zero cost wedding/event photos & videos upload web app
By utilizing GitHubs' free hosting & AWS free 1 year trial for the S3 service this application can run at zero cost for the special day.
- the app has already been used at 3 weddings with great success!
![]() |
![]() |
![]() |
- Go to project
Settings>Pages>Build and deployment- Set "Source" to "GitHub Actions"
- Go to project
Settings>Environments- If not already there, create an environment called
github-pages - Set "Deployment branches" to "All branches"
- If not already there, create an environment called
- Go to project
Settings>Secrets and variables>ActionsSecrets>Repository secrets> Set the secrets for the following:AWS_ACCOUNT_IDAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_S3_REGIONAWS_S3_BUCKET
Variables>Repository variables> Set the variables for the following:HEADERHEADER_DATESITE_TITLE
- Login to AWS console as admin/root
- Find the
S3service - Create a bucket with name
capture-love(make sure the region is the closest to you event location for best performance) - Inside the bucket go to
Permissions- Update the
Bucket Policyto below{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicListGet", "Effect": "Allow", "Principal": "*", "Action": [ "s3:List*", "s3:Get*" ], "Resource": [ "arn:aws:s3:::capture-love", "arn:aws:s3:::capture-love/*" ] } ] } - Update the
Cross-origin resource sharing (CORS)to below[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET", "PUT", "POST" ], "AllowedOrigins": [ "https://example.com", // <- your GitHub pages URL goes here ], "ExposeHeaders": [] } ]
- Update the
- Find the
IAMservice and create a new user with namecapture-love(make sure to select theProgrammatic accessoption & save the credentials) - Add the following permissions policy to the user using the
Add permissions>Create inline policyoption:{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicListGetPut", "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::capture-love", "arn:aws:s3:::capture-love/*" ] } ] }
Triggering the deploy job can be achieved in three ways:
Looking at the project main page on GitHub, on the right-hand side column, there is a section "Releases".
Click on the button "Create a new release".
Follow instructions, it is required to enter a tag such as "v1.0.0"
Using the script that lives in scripts/deploy.sh, you can call:
yarn deploy --{TYPE}
Where {TYPE} can be major, minor or patch
Go to the root of the project that was previously pulled from git. In the console (always increment in the next release):
git tag v1.0.0
git push origin --tagsRun the following commands to setup the project
cp .env.example .env.localExample:
- bucket name (same as ENV variable) =
capture-love - AWS CLI profile =
capture-love
aws s3 sync s3://capture-love . --profile capture-love

