Skip to content

Latest commit

 

History

History
267 lines (185 loc) · 8.24 KB

GUIDE_STACK.md

File metadata and controls

267 lines (185 loc) · 8.24 KB

Guide: Stack

Aim to prioritize open source option, free-tier, or freemium.

Legends:

  • 🧰 = primary, required, or should not be changed
  • 🎉 = 3rd party service or platform
  • 🧩 = optional or interchangeable
  • 💠 = available as open source
  • 🚧 = still in development or not available

Table of Contents:

Core

  • HTML: Markup language 🧰
  • CSS: Styling language 🧰
  • JavaScript: Programming language 🧰
  • Node.js: JavaScript runtime 🧰💠
    • pnpm: Package manager 🧩💠
  • TypeScript: Typed language 🧰💠

Library and Framework

  • React: UI library 🧰💠
  • Remix: Full stack web framework 🧰💠

Styling and Components

Form Handling and Data Validation

  • Conform: Form handling 🧰💠
  • Zod: Data validation 🧰💠
    • znv: Type-safe env parsing and validation 🧰💠
    • Zodix: Zod utilities for Remix loaders and actions 🧩💠
    • zod-form-data 🧩💠

Database and ORM

  • Prisma ORM: Database ORM (Object Relational Mapping) 🧰💠
  • MySQL: Database management system (DBMS) 🧩
  • PlanetScale: MySQL-compatible serverless database platform 🧩🎉

Auth Provider

Code Quality


Starting here are mostly dominated by 3rd Party Tools, open source or not.

Deployment

Alternatives:

Domain and DNS and SSL/TLS

Image

Placeholders:

  • Dicebear: Avatar placeholder 🧩🎉💠

Stock Photos:

  • Unsplash: Image placeholder 🚧🧩🎉

Asset Storage and Upload:

Maps:

Video

  • Mux: video streaming and management 🚧🧩🎉

Environment Variable/Secret

Analytics

  • Vercel Analytics 🧩🎉
    • Enable it on Vercel projects dashboard
  • Posthog: Product platform and data tools 🧩🎉💠
  • Jitsu: Data pipeline and ingestion 🚧🧩🎉💠

Transactional Email

Alternatives:

Marketing Email

Uptime Monitoring

Error Monitoring and Tracking

Background Jobs

Cache and Rate Limiter

Payment Gateway

Testing

Container

Credentials

If work as a team, it's recommended to use either of these as secrets management platform to share the environment variables. So can optionally use .env file.

If need to share quickly, EnvShare is good enough.

Code Review

  • Graphite: Stacking tool to ship code faster
  • Vercel Pro: to make code review with preview deployments easier.

Don't Use These Stack

  • CSS-in-JS solutions such as styled-components, @emotion, Stitches, Chakra UI, MUI, etc because already using Tailwind CSS.
  • Data fetching and caching library such as TanStack/React Query, SWR, Axios, etc because already using Remix loader/action, unless very necessary.
  • Redux, Zustand, Jotai, XState, etc because the app is still mostly having a server-side state.
  • Firebase, Supabase, Auth0, etc because the app is already handling the auth with Remix Auth, unless very necessary

Extra Stack

Although these are not included, if need a separate backend/server/service, here are the recommendations:

REST API

WebSocket

GraphQL

tRPC