Build modern web apps using Remix and built-in browser APIs without relying too much on deprecated dependencies.
This repository serves as a comprehensive guide to building Backend for Frontend (BFF) web applications using Remix, to help create high-performance and maintainable apps. It will cover a wide range of topics, from project setup and routing to data fetching, authentication, and deployment.
- Home:
app/routes/_index.jsx - Set Session:
app/routes/session-set.jsx - Delete Session:
app/routes/session-delete.jsx - Set Cookie:
app/routes/cookie-set.jsx - Delete Cookie:
app/routes/cookie-delete.jsx - Remote API Status [HTTP GET]:
app/routes/status/index.jsx - Login [HTTP POST]:
app/routes/login/index.jsx - Logout [HTTP POST]:
app/routes/logout/index.jsx - Test JWT [HTTP GET]:
app/routes/protected/index.jsx
- Password handling in this repo code:
user pass->sha2 (client-side)->sha3 (remix server-side)->argon2id (in the database)
Link: remixjs.pilinux.me
- Email:
apidev-no-reply@pilinux.me - Password:
1234.Abc!
From your terminal:
npm run devThis starts your app in development mode, rebuilding assets on file changes.
First, build your app for production:
npm run buildThen run the app in production mode:
npm startNow you'll need to pick a host to deploy it to.
If you're familiar with deploying node applications, the built-in Remix app server is production-ready.
Make sure to deploy the output of remix build
build/public/build/
When you ran npx create-remix@latest there were a few choices for hosting. You can run that again to create a new project, then copy over relevant code/assets from your current app to the new project that's pre-configured for your target server.
Most importantly, this means everything in the app/ directory, but if you've further customized your current application outside of there it may also include:
- Any assets you've added/updated in
public/ - Any updated versions of root files such as
.eslintrc.js, etc.
cd ..
# create a new project, and pick a pre-configured host
npx create-remix@latest
cd my-new-remix-app
# remove the new project's app (not the old one!)
rm -rf app
# copy your app over
cp -R ../my-old-remix-app/app appdocker-compose.yml
# syntax=docker/dockerfile:1
version: '3.9'
name: remix
services:
myapp:
image: node:20.5.1-bookworm
container_name: myapp
working_dir: /app
restart: unless-stopped:10s
command: sh -c "npm ci && npm run build && npm run start"
ports:
- '127.0.0.1:3000:3000'
volumes:
- ./myapp:/app
.env
HOST=0.0.0.0
NODE_ENV=production