- Email/Password Authentication with cookie-based sessions
- Database ORM with Prisma
- End-to-end testing with Cypress
- Local third party request mocking with MSW
- Unit testing with Vitest and Testing Library
- Code formatting with Prettier
- Linting with ESLint
- Static Types with TypeScript
Not a fan of bits of the stack? Fork it, change it, and use
npx create-remix --template your/repo
! Make it your own.
Click this button to create a Gitpod workspace with the project set up
- first run
npx prisma generate
https://stackoverflow.com/a/67796697
-
Connect to database with PlanetScale TODO: ADD INSTRUCTIONS
-
Start dev server:
npm run dev
docker compose up -d
psql -h localhost -U postgres
This Remix Stack comes with two GitHub Actions that handle automatically deploying your app to production and staging environments.
Prior to your first deployment, you'll need to do a few things:
TODO: ADD INSTRUCTIONS
TODO: ADD INSTRUCTIONS
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.
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.
For lower level tests of utilities and individual components, we use vitest
.
We have DOM-specific assertion helpers via
@testing-library/jest-dom
.
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
.
This project uses ESLint for linting. That is configured in .eslintrc.js
.
TODO: ADD INSTRUCTIONS FOR TRUNK
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.
TODO: ADD INSTRUCTIONS FOR TRUNK