{"id":26763909,"url":"https://github.com/conermurphy/nextjs-s3-file-upload","last_synced_at":"2026-03-09T18:04:03.830Z","repository":{"id":198278769,"uuid":"699698396","full_name":"conermurphy/nextjs-s3-file-upload","owner":"conermurphy","description":null,"archived":false,"fork":false,"pushed_at":"2023-10-05T07:35:04.000Z","size":107,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-28T19:42:14.245Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/conermurphy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-03T06:51:35.000Z","updated_at":"2024-04-20T13:26:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"ef0bb21c-1c3c-442c-b900-f7eaad46e381","html_url":"https://github.com/conermurphy/nextjs-s3-file-upload","commit_stats":null,"previous_names":["conermurphy/nextjs-s3-file-upload"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conermurphy%2Fnextjs-s3-file-upload","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conermurphy%2Fnextjs-s3-file-upload/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conermurphy%2Fnextjs-s3-file-upload/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conermurphy%2Fnextjs-s3-file-upload/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/conermurphy","download_url":"https://codeload.github.com/conermurphy/nextjs-s3-file-upload/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249066478,"owners_count":21207392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-28T19:35:27.177Z","updated_at":"2026-03-09T18:03:58.809Z","avatar_url":"https://github.com/conermurphy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Next.js App Router, AWS S3 Bucket Presigned URLs\n\nIn this repository, is an example Next.js App Router project and AWS CDK stack that shows how to upload files (image in this example) to an AWS S3 bucket via presigned URLs generated on a router handler and display them on the browser.\n\n## Packages Used\n\nBelow are the packages used in the project to generaete the presigned URLs as well as handle the form logic and submission. Alongside these, we use Next.js 13 and React 18.\n\n- [`@aws-sdk/client-s3`](https://www.npmjs.com/package/@aws-sdk/client-s3)\n- [`@aws-sdk/s3-request-presigner`](https://www.npmjs.com/package/@aws-sdk/s3-request-presigner)\n- [`react-hook-form`](https://www.npmjs.com/package/react-hook-form)\n\n## Getting Started\n\nIf you would like to run the project for yourself, you can clone the repository and run the following commands:\n\n- `npm install` (performed in both the root directory and `cdk` directory)\n- `cdk deploy` (performed in the `cdk` directory)\n- `npm run dev` (performed in the root directory)\n\nYou'll also need to configure the `.env.local` file which you can do by copying the `.env.local.example` file and renaming it to `.env.local` and filling in the values using the values outputted from the `cdk deploy` command.\n\n## Guide\n\nIf you would like to [see the full written tutorial for this project, you can check out my blog post here.](https://conermurphy.com/blog/presigned-urls-nextjs-s3-upload)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconermurphy%2Fnextjs-s3-file-upload","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconermurphy%2Fnextjs-s3-file-upload","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconermurphy%2Fnextjs-s3-file-upload/lists"}