Live Demo
·
Twitter
A starter focused Remix Stack that integrates User Authentication, Forms validation and Testing. Driven by Prisma ORM. Deploys to Fly.io
- Fly app Deployment with Docker.
- Database ORM with Prisma.
- Production Ready with SQLite and PostgreSQL.
- GitHub Actions for Deploy on merge to Production and Staging environments.
- Healthcheck Endpoint for Fly backups Region Fallbacks.
- Styling with Tailwind.css + Tailwind Prettier-Plugin.
- End-to-End testing with Cypress.
- Linting with ESLint.
- Code formatting with Prettier.
- Static Types with TypeScript.
- Authentication Ready with Remix-Auth that includes: Form Strategy.
- Flat Routes from Remix Flat Routes.
- Forms validation for Client and Server side with Conform.
- Support for Javascript developers with continuous updates over time based on
remix.init
.
Learn more about Remix Stacks.
Barebones Stack has support for multiple databases based on Prisma. The installer will prompt a selector allowing you to choose the database your project will run on. Deployment files will be updated matching the required criteria to successfully deploy to Fly.io
To get started, run the following commands in your console:
# Initializes template in your workspace:
npx create-remix@latest --template dev-xo/barebones-stack
# Select the database your project will run on:
# > SQLite or PostgreSQL
# Starts dev server:
npm run dev
Important❗️: Cloning the repository instead of initializing it with the above commands, will result in a inappropriate experience. This template uses
remix.init
to configure itself and prepare your environment.
Understanding our development workspace will keep us productive.
Template can be used in the way you like. Feel free to remove all the HTML code you don't need, keeping just the loaders
and actions
from Remix.
If your database choice was PostgreSQL, you will need to run Prisma migrations with your Postgres client running on the background. In order to accomplish this, remove the folder inside /prisma
called /migrations
, and run npx prisma migrate dev --name init
to properly setup them.
If you are using PNPM
Package Manager, probably you will have to deal with some Prisma
module imports issues. Feel free to have a search on google about this topic.
We strongly recommend using npm
or yarn
instead.
Using Form authentication is pretty straightforward. The only thing you have to know is that, in order to allow the user recover its password, we'll need to use an Email Service.
This template uses Sendinviolet, a free email service that does not require Credit Card for registration, either use. It's limited to 300 emails per day, but it's good enough for development propouses.
Let's see how we can set up this service:
- Create an account at Sendinviolet.
- Go to navigation menu and click on
SMTP & API
. - Create and Copy the provided API Key.
- Paste the provided API Key into template
.env
file asEMAIL_PROVIDER_API_KEY
.
Barebones Stack has support for SQLite and PostgreSQL databases. In order to keep a better track and an easier maintenance of each deployment documentation, we moved each one to its own file.
Check SQLite DEPLOYMENT or PostgreSQL DEPLOYMENT to get your app to production.
GitHub Actions are used 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 Playwright for our End-to-End tests. You'll find those in tests/e2e
directory. To run your tests in development use npm run test:e2e:dev
.
This template 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 use npm run typecheck
.
This project uses ESLint for linting. That is configured in .eslintrc.js
.
We use Prettier for auto-formatting. It's recommended to install an editor 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.
This template has pre-configured prettier settings on .package-json
. Feel free to update each value with your preferred work style.
If you found the template useful, support it with a Star ⭐
It helps the repository grow and gives me motivation to keep working on it. Thanks you!
Licensed under the MIT license.