The Remix Stack for deploying to AWS with DynamoDB, authentication, testing, linting, formatting, etc.

Overview

Remix Grunge Stack

The Remix Grunge Stack

Learn more about Remix Stacks.

npx create-remix --template remix-run/grunge-stack

What's in the stack

Not a fan of bits of the stack? Fork it, change it, and use npx create-remix --template your/repo! Make it your own.

Development

  • Validate the app has been set up properly (optional):

    npm run validate
  • Start dev server:

    npm run dev

This starts your app in development mode, rebuilding assets on file changes.

Relevant code:

This is a pretty simple note-taking app, but it's a good example of how you can build a full stack app with Architect and Remix. The main functionality is creating users, logging in and out, and creating and deleting notes.

The database that comes with arc sandbox is an in memory database, so if you restart the server, you'll lose your data. The Staging and Production environments won't behave this way, instead they'll persist the data in DynamoDB between deployments and Lambda executions.

Deployment

This Remix Stack comes with two GitHub Actions that handle automatically deploying your app to production and staging environments. By default, Arc will deploy to the us-west-2 region, if you wish to deploy to a different region, you'll need to change your app.arc

Prior to your first deployment, you'll need to do a few things:

  • Create a new GitHub repo

  • Sign up and login to your AWS account

  • Add AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to your GitHub repo's secrets. Go to your AWS security credentials and click on the "Access keys" tab, and then click "Create New Access Key", then you can copy those and add them to your repo's secrets.

  • Along with your AWS credentials, you'll also need to give your CloudFormation a SESSION_SECRET variable of its own for both staging and production environments, as well as an ARC_APP_SECRET for Arc itself.

    npx arc env --add --env staging ARC_APP_SECRET $(openssl rand -hex 32)
    npx arc env --add --env staging SESSION_SECRET $(openssl rand -hex 32)
    npx arc env --add --env production ARC_APP_SECRET $(openssl rand -hex 32)
    npx arc env --add --env production SESSION_SECRET $(openssl rand -hex 32)

    If you don't have openssl installed, you can also use 1password to generate a random secret, just replace $(openssl rand -hex 32) with the generated secret.

Where do I find my CloudFormation?

You can find the CloudFormation template that Architect generated for you in the sam.yaml file.

To find it on AWS, you can search for CloudFormation (make sure you're looking at the correct region!) and find the name of your stack (the name is a PascalCased version of what you have in app.arc, so by default it's RemixGrungeStackStaging and RemixGrungeStackProduction) that matches what's in app.arc, you can find all of your app's resources under the "Resources" tab.

GitHub Actions

We use GitHub Actions for continuous integration and deployment. Anything that gets into the main branch will be deployed to production after running tests/build/etc. Anything in the dev branch will be deployed to staging.

Testing

Cypress

We use Cypress for our End-to-End tests in this project. You'll find those in the cypress directory. As you make changes, add to an existing file or create a new file in the cypress/e2e directory to test your changes.

We use @testing-library/cypress for selecting elements on the page semantically.

To run these tests in development, run npm run test:e2e:dev which will start the dev server for the app as well as the Cypress client. Make sure the database is running in docker as described above.

We have a utility for testing authenticated features without having to go through the login flow:

cy.login();
// you are now logged in as a new user

We also have a utility to auto-delete the user at the end of your test. Just make sure to add this in each test file:

afterEach(() => {
  cy.cleanupUser();
});

That way, we can keep your local db clean and keep your tests isolated from one another.

Vitest

For lower level tests of utilities and individual components, we use vitest. We have DOM-specific assertion helpers via @testing-library/jest-dom.

Type Checking

This project uses TypeScript. It's recommended to get TypeScript set up for your editor to get a really great in-editor experience with type checking and auto-complete. To run type checking across the whole project, run npm run typecheck.

Linting

This project uses ESLint for linting. That is configured in .eslintrc.js.

Formatting

We use Prettier for auto-formatting in this project. It's recommended to install an editor plugin (like the VSCode Prettier plugin) to get auto-formatting on save. There's also a npm run format script you can run to format all files in the project.

Comments
  • Error: Invariant failed: SESSION_SECRET must be set

    Error: Invariant failed: SESSION_SECRET must be set

    What version of Remix are you using?

    1.5.1

    Steps to Reproduce

    npx create-remix gave it a name chose "a pre-configured stack ready for prod..." chose "Grunge" stack chose "Typescript" do you want me to run npm install? no cd into new project directory yarn yarn dev visit localhost:3000 see error


    "dependencies": { "@architect/architect": "^10.3.3", "@architect/functions": "^5.1.0", "@remix-run/architect": "^1.5.1", "@remix-run/node": "^1.5.1", "@remix-run/react": "^1.5.1", "@remix-run/server-runtime": "^1.5.1", "bcryptjs": "2.4.3", "cuid": "^2.1.8", "react": "^17.0.2", "react-dom": "^17.0.2", "tiny-invariant": "^1.2.0"

    Expected Behavior

    run dev should load the initial page

    Actual Behavior

    getting this error:

    Error
    
    Process exited with 1
    
    /home/user/MyProjects/remix-samples-rn/node_modules/tiny-invariant/dist/tiny-invariant.cjs.js:14
        throw new Error(value);
              ^
    /home/user/MyProjects/remix-samples-rn/node_modules/tiny-invariant/dist/tiny-invariant.cjs.js:14
        throw new Error(value);
        ^
    
    Error: Invariant failed: SESSION_SECRET must be set
        at invariant (/home/user/MyProjects/remix-samples-rn/node_modules/tiny-invariant/dist/tiny-invariant.cjs.js:14:11)
        at Object. (/home/user/MyProjects/remix-samples-rn/app/session.server.ts:7:1)
        at Module._compile (node:internal/modules/cjs/loader:1109:14)
        at Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
        at Module.load (node:internal/modules/cjs/loader:989:32)
        at Function.Module._load (node:internal/modules/cjs/loader:829:14)
        at Module.require (node:internal/modules/cjs/loader:1013:19)
        at require (node:internal/modules/cjs/helpers:93:18)
        at [eval]:1:336
        at Script.runInThisContext (node:vm:131:12)
    
    bug:unverified 
    opened by MiguelNiblock 9
  • Tests not passing

    Tests not passing

    Hi, I'm really excited about Stacks

    But I tried to deploy the grunge Stack as it says in the README itself and after installing the tests idoesn't pass.

    Tests that not pass 1) should allow you to register and login 2) should allow you to make a note

    Gist with the errors https://gist.github.com/JoaoGomes5/7cfa976ae9672ab5e7bd4c255ec7677a

    I followed the tutorial video and it gives me an error right at the beginning, I don't understand why.

    I already tried to create new projects and all of them did not pass the tests.

    Thanks and have a great day!

    opened by joaogomesdev 8
  • cypress smoke tests fail out of the box

    cypress smoke tests fail out of the box

    Have you experienced this bug with the latest version of the template?

    yes

    Steps to Reproduce

    • I created a new project using the grunge-stack template by running npx create-remix --template remix-run/grunge-stack
    • I ran npx run validate
    • The smoke tests fail both locally and in github actions
    ====================================================================================================
    
      (Run Starting)
    
      ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
      │ Cypress:        10.3.0                                                                         │
      │ Browser:        Electron 100 (headless)                                                        │
      │ Node Version:   v14.19.3 (/<redacted>/.nvm/versions/node/v14.19.3/bin/node)              │
      │ Specs:          1 found (smoke.cy.ts)                                                          │
      │ Searched:       cypress/e2e/**/*.cy.{js,jsx,ts,tsx}                                            │
      └────────────────────────────────────────────────────────────────────────────────────────────────┘
    
    
    ────────────────────────────────────────────────────────────────────────────────────────────────────
                                                                                                        
      Running:  smoke.cy.ts                                                                     (1 of 1)
    
    
      smoke tests
        1) should allow you to register and login
        2) should allow you to make a note
    
    
      0 passing (3s)
      2 failing
    
      1) smoke tests
           should allow you to register and login:
         Error: The following error originated from your application code, not from Cypress.
    
      > Hydration failed because the initial UI does not match what was rendered on the server.
    
    When Cypress detects uncaught errors originating from your application it will automatically fail the current test.
    
    This behavior is configurable, and you can choose to turn this off by listening to the `uncaught:exception` event.
    
    https://on.cypress.io/uncaught-exception-from-application
          at throwOnHydrationMismatch (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:8993:17)
          at tryToClaimNextHydratableInstance (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:9014:15)
          at updateHostComponent (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:14184:13)
          at beginWork (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:15256:22)
          at HTMLUnknownElement.callCallback2 (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:3458:22)
          at Object.invokeGuardedCallbackDev (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:3483:24)
          at invokeGuardedCallback (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:3517:39)
          at beginWork$1 (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:19039:15)
          at performUnitOfWork (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:18475:20)
          at workLoopSync (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:18411:13)
    
      2) smoke tests
           should allow you to make a note:
         Error: The following error originated from your application code, not from Cypress.
    
      > Hydration failed because the initial UI does not match what was rendered on the server.
    
    When Cypress detects uncaught errors originating from your application it will automatically fail the current test.
    
    This behavior is configurable, and you can choose to turn this off by listening to the `uncaught:exception` event.
    
    https://on.cypress.io/uncaught-exception-from-application
          at throwOnHydrationMismatch (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:8993:17)
          at tryToClaimNextHydratableInstance (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:9014:15)
          at updateHostComponent (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:14184:13)
          at beginWork (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:15256:22)
          at HTMLUnknownElement.callCallback2 (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:3458:22)
          at Object.invokeGuardedCallbackDev (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:3483:24)
          at invokeGuardedCallback (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:3517:39)
          at beginWork$1 (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:19039:15)
          at performUnitOfWork (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:18475:20)
          at workLoopSync (http://localhost:8811/_static/build/entry.client-TUK4SINB.js:18411:13)
    

    Expected Behavior

    The cypress smoke tests should pass out of the box on a newly created project using the grunge-stack template

    Actual Behavior

    The cypress smoke tests fail out of the box

    opened by sfatzinger 6
  • Integrate esbuild with Arc deploy

    Integrate esbuild with Arc deploy

    This stack works very nicely and is a huge step forward. I do note that the deployed lambda is pretty large (7MB zip) and it's because it contains the entire node_modules directory (unpacked 29MB).

    It would be really nice for server.js to be in TypeScript and to integrate esbuild into the Arc deploy process, not just the app compilation step, so only the needed code is deployed.

    opened by gitblit 6
  • msw doesn't seem to actually work with this setup

    msw doesn't seem to actually work with this setup

    Not sure if I'm doing something wrong but when I run npm run dev I see that the mocks are being started and loaded with this log console.info("🔶 Mock server running");

    However, if I change onUnhandledRequest to "error" like this server.listen({ onUnhandledRequest: "error" }); I never see any errors or logs about unhandled requests even though I'm definitely making requests to Stripe.

    I've tried all sorts of things to debug but can't make progress.

    Any ideas?

    edit: seems like the sanbox is likely starting separate node processes to run the lambdas which MSW won't see.

    opened by johncantrell97 6
  • Fresh Grunge-Stack results in many browser console errors

    Fresh Grunge-Stack results in many browser console errors

    Have you experienced this bug with the latest version of the template?

    Yes

    Steps to Reproduce

    1. npx create-remix --template remix-run/grunge-stack
    2. npx remix init
    3. npm run dev

    NOTE: This is completely fresh first run, no changes made at all.

    Expected Behavior

    No errors in console.

    Actual Behavior

    Screenshot 2022-07-18 093535
    opened by JasonWeiseUnreal 5
  • Fix: Remix dev asset server web socket error

    Fix: Remix dev asset server web socket error

    Further description about the bug in https://github.com/remix-run/remix/issues/2958. I had this very issue today and the workaround was to add devServerPort: 8002 here.

    opened by tkovis 4
  • Error: expected <NPM script name that starts server> <url or port> <NPM script name that runs tests>

    Error: expected

    I'm getting the following error when running npm run validate

    Steps to reproduce:

    1. run npx create-remix --template remix-run/grunge-stack
    2. run cd <your-app-name>
    3. run npm run validate

    Extra info:

    • SO: windows 10
    • Node version: 14.18.1
    • npm version: 6.14.1

    Also, I noticed this warning in the installation step: npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.json was generated for lockfileVersion@2. I'll try to do my best with it! (which is expected because I have npm v6)

    Looks like the error doesn't block the development server so I can live with it but I thought it would be good to report it so you guys can be aware of it.

    Error: expected <NPM script name that starts server> <url or port> <NPM script name that runs tests>
    example: start-test start 8080 test
    see https://github.com/bahmutov/start-server-and-test#use
    
        at lazyAssLogic (D:\frontend-projects\experiments\my-remix-app\node_modules\lazy-ass\index.js:110:14)
        at lazyAss (D:\frontend-projects\experiments\my-remix-app\node_modules\lazy-ass\index.js:115:28)
        at Object.getArguments (D:\frontend-projects\experiments\my-remix-app\node_modules\start-server-and-test\src\utils.js:91:5)
        at Object.<anonymous> (D:\frontend-projects\experiments\my-remix-app\node_modules\start-server-and-test\src\bin\start.js:10:22)
        at Module._compile (internal/modules/cjs/loader.js:1085:14)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
        at Module.load (internal/modules/cjs/loader.js:950:32)
        at Function.Module._load (internal/modules/cjs/loader.js:790:12)
        at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
        at internal/main/run_main_module.js:17:47
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! my-remix-app-87b1@ test:e2e:run: `cross-env PORT=8811 start-server-and-test dev http://localhost:8811 'cypress run'`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the my-remix-app-87b1@ test:e2e:run script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    opened by GiancarlosIO 4
  • Cannot read file '../tsconfig.json'

    Cannot read file '../tsconfig.json'

    Have you experienced this bug with the latest version of the template?

    Yes

    Steps to Reproduce

    npx create-remix --template remix-run/grunge-stack

    Where would you like to create your app? remix-blog Do you want me to run npm install? (Y/n) Y TypeScript or JavaScript? JavaScript Do you want to run the build/tests/etc to verify things are setup properly? Yes

    error TS5083: Cannot read file '/Users/Siarhei_Liubimau/Documents/remix/remix-blog/tsconfig.json'.

    Expected Behavior

    The template should work out of the box.

    Actual Behavior

    The template is broken and unusable.

    opened by slubimav 3
  • feat(models): add User and Note type references

    feat(models): add User and Note type references

    tldr: This PR includes semantic TS only changes

    • Add type references between models - 470c91be42847daeba7eadd17806f560da841faf

    Reasoning: As Dynamo models grow, the ability to add relations between models can be illustrated and documented with TS. This is especially true for single table design patterns as seen below where we can see that a note record's pk is a reference to the user's id, which is of type: note#${string}. The note's id on the other hand is a cuid which is documented with type ReturnType<typeof cuid>

    Screen Shot 2022-03-18 at 11 06 17 Screen Shot 2022-03-18 at 11 06 45

    opened by joematune 3
  • 🚀 Fresh Stack Deployment Not Working As Expected

    🚀 Fresh Stack Deployment Not Working As Expected

    Have you experienced this bug with the latest version of the template?

    yes

    Steps to Reproduce

    Steps

    1. Create fresh grunge stack using npx.
    2. Connect it to AWS via Github Secrets.
    3. Generate Session and Arc App variables.
    4. Trigger deployment via dev branch.
    5. Access the entry point via the S3 Static Website Hosting URL.

    Reference remix.config.js assetsBuildDirectory: "public/build", publicPath: "/_static/build/", serverBuildTarget: "arc", server: "./server.ts",

    Expected Behavior

    🤔 Deployment works, but I'm not seeing the app at the expected URL.

    Actual Behavior

    The result is a 404 on every route.

    404 Not Found

    - Code: NoSuchKey
    - Message: The specified key does not exist.
    - Key: index.html
    - RequestId: 164GEDTF7M8N85P2
    - HostId: eG7ra0vK8XxFS9FrsYCCttfYBIdIyD0NywlVaKaVmrKmxDyBWXAO7SQW91VIuDUzsBxnn7AVdwo=
    

    An Error Occurred While Attempting to Retrieve a Custom Error Document

    - Code: NoSuchKey
    - Message: The specified key does not exist.
    - Key: 404.html
    
    opened by therealsiege 2
  • Setup fails

    Setup fails

    Have you experienced this bug with the latest version of the template?

    yes

    Steps to Reproduce

    $ npx create-remix@latest --template remix-run/grunge-stack
    ? Where would you like to create your app? ./my-remix-app
    ? TypeScript or JavaScript? TypeScript
    ? Do you want me to run `npm install`? Yes
    

    ...

    failed to load config from /Users/agonzalezjr/code/bluejay/my-remix-app/vitest.config.ts
    
    ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Unhandled Error ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
    Error: Cannot find module 'node:path'
    Require stack:
    - /Users/agonzalezjr/code/bluejay/my-remix-app/node_modules/@vitejs/plugin-react/dist/index.cjs
    - /Users/agonzalezjr/code/bluejay/my-remix-app/vitest.config.ts
    - /Users/agonzalezjr/code/bluejay/my-remix-app/node_modules/vite/dist/node/chunks/dep-d29b4e33.js
        at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15)
        at Function.Module._load (internal/modules/cjs/loader.js:730:27)
        at Module.require (internal/modules/cjs/loader.js:957:19)
        at require (internal/modules/cjs/helpers.js:88:18)
        at Object.<anonymous> (/Users/agonzalezjr/code/bluejay/my-remix-app/node_modules/@vitejs/plugin-react/dist/index.cjs:3:14)
        at Module._compile (internal/modules/cjs/loader.js:1068:30)
        at Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
        at Object._require.extensions.<computed> [as .js] (file:///Users/agonzalezjr/code/bluejay/my-remix-app/node_modules/vite/dist/node/chunks/dep-d29b4e33.js:64030:17)
        at Module.load (internal/modules/cjs/loader.js:933:32)
        at Function.Module._load (internal/modules/cjs/loader.js:774:14) {
      code: 'MODULE_NOT_FOUND',
      requireStack: [
        '/Users/agonzalezjr/code/bluejay/my-remix-app/node_modules/@vitejs/plugin-react/dist/index.cjs',
        '/Users/agonzalezjr/code/bluejay/my-remix-app/vitest.config.ts',
        '/Users/agonzalezjr/code/bluejay/my-remix-app/node_modules/vite/dist/node/chunks/dep-d29b4e33.js'
      ]
    }
    
    
    
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! my-remix-app-2d72@ test: `vitest "--run"`
    npm ERR! Exit status 1
    npm ERR! 
    npm ERR! Failed at the my-remix-app-2d72@ test script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /Users/agonzalezjr/.npm/_logs/2022-10-29T19_47_48_046Z-debug.log
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! my-remix-app-2d72@ test:e2e:run: `cross-env PORT=8811 start-server-and-test dev http://localhost:8811 "npx cypress run"`
    npm ERR! Exit status 1
    npm ERR! 
    npm ERR! Failed at the my-remix-app-2d72@ test:e2e:run script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /Users/agonzalezjr/.npm/_logs/2022-10-29T19_47_48_168Z-debug.log
    ERROR: "test -- --run" exited with 1.
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! my-remix-app-2d72@ validate: `run-p "test -- --run" lint typecheck test:e2e:run`
    npm ERR! Exit status 1
    npm ERR! 
    npm ERR! Failed at the my-remix-app-2d72@ validate script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /Users/agonzalezjr/.npm/_logs/2022-10-29T19_47_48_215Z-debug.log
    🚨 Oops, remix.init failed
    
    Command failed: npm run validate 
    

    Expected Behavior

    Setup finishes without errors.

    Actual Behavior

    Setup fails.

    opened by agonzalezjr 0
  • "Lambda handler not found" error due to change in `@architect/architect` v10.6.0

    Have you experienced this bug with the latest version of the template?

    Yes

    Steps to Reproduce

    1. Upgrade @architect/architect to >=10.6
    2. npm run dev
    3. See error (occasionally)

    Expected Behavior

    Arc sandbox should detect the server file and run without issue.

    Actual Behavior

    There is a race condition between remix watch and void arc() that results in arc intermittently not being able to find the server build artifact. This happens pretty consistently on first boot or if the server/ directory is deleted before the build.

    opened by LukeAskew 1
  • Replace `run-p` with `npm-run-all -p-` because the former doesn't kill all process when pressing CTRL+C in windows

    Replace `run-p` with `npm-run-all -p-` because the former doesn't kill all process when pressing CTRL+C in windows

    Have you experienced this bug with the latest version of the template?

    yes

    Steps to Reproduce

    1. run npx create-remix my-app --template remix-run/grunge-stack
    2. cd my-app
    3. run pnpm dev
    4. Try to kill the process pressing CTRL+C

    Expected Behavior

    On windows, pressing CTRL+C should kill all the processes of the "dev" npm script.

    Actual Behavior

    On windows, pressing CTRL+C DOESN'T kill all the processes of the "dev" npm script. It works if I replace the run-p with npm-run-all -p

    opened by GiancarlosIO 0
  • Try creating new Remix project using grunge stack but the cli freeze after asking me want to run verify build/tests/etc script

    Try creating new Remix project using grunge stack but the cli freeze after asking me want to run verify build/tests/etc script

    Have you experienced this bug with the latest version of the template?

    yes

    Steps to Reproduce

    1./ Open PowerShell 2./ Run npx create-remix@latest 3./ Select options as the image below Step to reproduce

    Expected Behavior

    The cli should proceed to the next step after I type 'N' and hit enter for Do you want to run the build/tests/etc to verify things are setup properly?

    Actual Behavior

    The cli freezed

    opened by Senbonzakura1234 6
  • Deploy Error

    Deploy Error

    Have you experienced this bug with the latest version of the template?

    yes

    Steps to Reproduce

    Deploy new application on aws with github actions.

    Expected Behavior

    Deploy with Success

    Actual Behavior

    Run arc deploy --production --prune
      arc deploy --production --prune
      shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
      env:
        npm_config_cache: /home/runner/.npm
        CI: true
        AWS_ACCESS_KEY_ID: ***
        AWS_SECRET_ACCESS_KEY: ***
             App ⌁ remix-aws-451b
          Region ⌁ us-west-[2](https://github.com/robsonkades/remix-run-aws/runs/7683794292?check_suite_focus=true#step:10:2)
         Profile ⌁ Set via environment
         Version ⌁ Architect 10.4.0
             cwd ⌁ /home/runner/work/remix-run-aws/remix-run-aws
    
    ⚬ Hydrate Finding dependencies
    ⚬ Hydrate Hydrating dependencies in 1 path
    ⚬ Hydrate Hydrating server/
    ✓ Hydrate Hydrated server/
      | npm i --production: added 97 packages from 165 contributors and audited 98 packages in [3](https://github.com/robsonkades/remix-run-aws/runs/7683794292?check_suite_focus=true#step:10:3).92[4](https://github.com/robsonkades/remix-run-aws/runs/7683794292?check_suite_focus=true#step:10:4)s
      | npm i --production: 41 packages are looking for funding
      | npm i --production: run `npm fund` for details
      | npm i --production: found 0 vulnerabilities
      | npm i --production: npm notice created a lockfile as package-lock.json. You should commit this file.
    ✓ Hydrate Successfully hydrated dependencies
    ⚬ Deploy This Lambda should ideally be under [5](https://github.com/robsonkades/remix-run-aws/runs/7683794292?check_suite_focus=true#step:10:5)MB for optimal performance:
      | server (29,535KB)
    ⚬ Deploy Creating new private deployment bucket: ****
    ⚬ Deploy Initializing deployment
      | Stack ... RemixAws451bProduction
      | Bucket .. ****
    ⚬ Deploy Created deployment templates
    ⚬ Deploy Generating CloudFormation deployment...
    ✓ Deploy Generated CloudFormation deployment
    ⚬ Deploy Deploying & building infrastructure...
    deploy failed! 
    Uploading to 8eb4[6](https://github.com/robsonkades/remix-run-aws/runs/7683794292?check_suite_focus=true#step:10:6)d[7](https://github.com/robsonkades/remix-run-aws/runs/7683794292?check_suite_focus=true#step:10:7)e0bc6041699a44022[8](https://github.com/robsonkades/remix-run-aws/runs/7683794292?check_suite_focus=true#step:10:8)4d7df[9](https://github.com/robsonkades/remix-run-aws/runs/7683794292?check_suite_focus=true#step:10:10)d.template  8892 / 8892.0  ([10](https://github.com/robsonkades/remix-run-aws/runs/7683794292?check_suite_focus=true#step:10:11)0.00%)
    Waiting for changeset to be created..
    Waiting for stack create/update to complete
    
    Failed to create/update the stack. Run the following command
    to fetch the list of events leading up to the failure
    aws cloudformation describe-stack-events --stack-name RemixAws451bProduction
    
    Error: 
    Uploading to 8eb46d7e0bc6041699a4402284d7df9d.template  8892 / 8892.0  (100.00%)
    Waiting for changeset to be created..
    Waiting for stack create/update to complete
    
    Failed to create/update the stack. Run the following command
    to fetch the list of events leading up to the failure
    aws cloudformation describe-stack-events --stack-name RemixAws451bProduction
    
        at ChildProcess.<anonymous> (/opt/hostedtoolcache/node/14.20.0/x64/lib/node_modules/@architect/architect/node_modules/@architect/deploy/src/sam/utils/spawn.js:23:16)
        at ChildProcess.emit (events.js:400:28)
        at ChildProcess.emit (domain.js:475:[12](https://github.com/robsonkades/remix-run-aws/runs/7683794292?check_suite_focus=true#step:10:13))
        at maybeClose (internal/child_process.js:1088:[16](https://github.com/robsonkades/remix-run-aws/runs/7683794292?check_suite_focus=true#step:10:17))
        at Process.ChildProcess._handle.onexit (internal/child_process.js:[29](https://github.com/robsonkades/remix-run-aws/runs/7683794292?check_suite_focus=true#step:10:30)6:5)
    Error: Process completed with exit code 1.
    
    opened by robsonkades 0
The Remix Stack for deploying to Fly with Supabase, authentication, testing, linting, formatting, etc.

Remix Supa Fly Stack Learn more about Remix Stacks. npx create-remix --template rphlmr/supa-fly-stack What's in the stack Fly app deployment with Doc

Raphaël Moreau 157 Jan 7, 2023
The Remix Stack for deploying to Fly with SQLite, authentication, testing, linting, formatting, etc.

Remix Indie Stack Learn more about Remix Stacks. npx create-remix --template remix-run/indie-stack What's in the stack Fly app deployment with Docker

Remix 688 Dec 30, 2022
The Remix Stack for deploying to Fly with PostgreSQL, authentication, testing, linting, formatting, etc.

The Remix Stack for deploying to Fly with PostgreSQL, authentication, testing, linting, formatting, etc.

Remix 677 Jan 2, 2023
Remix Stack for deploying to Vercel with remix-auth, Planetscale, Radix UI, TailwindCSS, formatting, linting etc. Written in Typescript.

Remix Synthwave Stack Learn more about Remix Stacks. npx create-remix --template ilangorajagopal/synthwave-stack What's in the stack Vercel deploymen

Ilango 56 Dec 25, 2022
The Remix Blog Stack for deploying to Fly with MDX, SQLite, testing, linting, formatting, etc.

Remix Speed Metal Stack Learn more about Remix Stacks. npx create-remix --template Girish21/speed-metal-stack Remix Blog ?? This blog starter template

Girish 141 Jan 2, 2023
The Remix Stack for Web2 apps and Web3 DApps with authentication with Magic, testing, linting, formatting, etc.

Remix French House Stack Learn more about Remix Stacks. npx create-remix --template janhesters/french-house-stack What's in the Stack? The French Hou

Jan Hesters 26 Dec 26, 2022
The Remix Stack for deploying to Vercel with testing, linting, formatting, structure and mock for 3rd party API integration.

Remix DnB Stack See it live: https://dnb-stack.vercel.app/ Learn more about Remix Stacks. npx create-remix --template robipop22/dnb-stack What's in th

Robert Pop 61 Dec 13, 2022
The Remix Stack with Clerk authentication, Supabase database, Chakra UI, testing, linting, and more.

Remix Bossa Nova Stack Learn more about Remix Stacks. What's in the stack User management with Clerk Database with Supabase Styling with Chakra UI Dep

Clerk 32 Jan 2, 2023
A testing focused Remix Stack, that integrates E2E & Unit testing with Playwright, Vitest, MSW and Testing Library. Driven by Prisma ORM. Deploys to Fly.io

Live Demo · Twitter A testing focused Remix Stack, that integrates E2E & Unit testing with Playwright, Vitest, MSW and Testing Library. Driven by Pris

Remix Stacks 18 Oct 31, 2022
A serverless AWS expense tracker API. AWS Lambda functions, API gateway, and Dynamodb are among the ingredients.

AWS-Serverless-API A serverless AWS expense tracker API. AWS Lambda functions API gateway Dynamodb Endpoints Create a new expense: Method: POST Body f

Ondiek Elijah Ochieng 1 Jul 16, 2022
Under the Sea is an official AWS workshop delivered by AWS SAs and AWS Partners to help customers and partners to learn about AIOps with serverless architectures on AWS.

Under the Sea - AIOps with Serverless Workshop Under the Sea is an exciting MMORPG developed by the famous entrepreneur behind Wild Rydes, the most po

AWS Samples 4 Nov 16, 2022
Example Serverless DynamoDB integration tests using Jest, TypeScript and the AWS CDK

serverless dynamodb integration tests ?? Example Serverless DynamoDB integration tests using Jest, TypeScript and the AWS CDK Introduction How to inte

Lee Gilmore 8 Nov 4, 2022
Functionless-based mini-framework for DynamoDB migrations in AWS CDK.

dynamodb-migrations This repo is heavily in progress! Readme describes desired contract and functionality. Please do not try using it yet!. I'm not ev

Rafal Wilinski 23 Dec 20, 2022
Visual Studio Code extension for formatting and linting Django/Jinja HTML templates using djLint

Visual Studio Code extension for formatting and linting Django/Jinja HTML templates using djLint

Almaz 25 Dec 15, 2022
Learn Web 2.0 and Web 3.0 Development using Next.js, Typescript, AWS CDK, AWS Serverless, Ethereum and AWS Aurora Serverless

Learn Web 2.0 Cloud and Web 3.0 Development in Baby Steps In this course repo we will learn Web 2.0 cloud development using the latest state of the ar

Panacloud Multi-Cloud Internet-Scale Modern Global Apps 89 Jan 3, 2023
MerLoc is a live AWS Lambda function development and debugging tool. MerLoc allows you to run AWS Lambda functions on your local while they are still part of a flow in the AWS cloud remote.

MerLoc MerLoc is a live AWS Lambda function development and debugging tool. MerLoc allows you to run AWS Lambda functions on your local while they are

Thundra 165 Dec 21, 2022
AWS Lambda & Serverless - Developer Guide with Hands-on Labs. Develop thousands line of aws lambda functions interact to aws serverless services with real-world hands-on labs

AWS Lambda & Serverless - Developer Guide with Hands-on Labs UDEMY COURSE WITH DISCOUNTED - Step by Step Development of this Repository -> https://www

awsrun 35 Dec 17, 2022
An Amazon Kendra REST API CDK example with an API Gateway, including authentication with AWS Cognito and AWS X-Ray Tracing

Amazon Kendra Web Service CDK Sample Amazon Kendra has a robust JSON API for use with the AWS SDK (software development kit), but does not expose endp

AWS Samples 8 Nov 28, 2022