PocketStarter Docs

PocketStarter Tech Stack Documentation

Overview

PocketStarter is built with a bunch of modern web tools to make your life easier. Here's a quick look at the tech stack so you know exactly what's under the hood.

Frontend

Next.js

Next.js is one of the most popular React frameworks. We use it for the PocketStarter frontend and utilize its App Router architecture with route groups, server-side rendering (SSR), static site generation (SSG), and built-in API routes. The development server runs with Turbopack for faster builds.

TypeScript

TypeScript adds type checking to the code, which means it helps spot errors before you even run the app. It also gives us better code suggestions and makes the development process smoother and more reliable.

Zustand

Zustand is a lightweight state management library used for authentication state management and client-side state synchronization with PocketBase. It provides a simple API and is super scalable.

Tailwind CSS 4

Tailwind CSS 4 is a utility-first CSS framework used for easy styling. The v4 version includes CSS variables and OKLCH color space, along with a custom design system that supports dark mode and a few basic key utilities (PostCSS for processing, clsx, tailwind-merge, and tw-animate-css).

Radix UI (shadcn/ui)

shadcn/ui is a component library built on top of Radix UI, which provides headless UI primitives used as the foundation for all components. We utilize various Radix components including alert dialogs, avatars, modals, dropdown menus, labels, separators, slots for component composition, and toggle switches.

Lucide Icons

Lucide is a great icon library, providing beautiful and customizable icons that are configured as the default icon library

class-variance-authority 0.7.1

class-variance-authority 0.7.1 helps us manage component variants in a type-safe way.

Backend / Database

PocketBase

PocketBase is the open-source backend-as-a-service that is used. It provides a built-in authentication system, real-time subscriptions, RESTful API, admin dashboard, file storage, and database migrations all in one package.

pocketbase-typegen

pocketbase-typegen automatically generates TypeScript types from the PocketBase schema, ensuring type safety across the entire application and providing excellent developer experience.

Payment processing

Stripe

Stripe is the integrated payment processing platform, handling subscription management, checkout sessions, customer portal access, webhook processing, and trial period support. It is integrated with custom hooks in PocketBase for seamless payment processing and user management.

Email & Marketing

Brevo

Brevo (formerly Sendinblue) is the optional email marketing platform, providing contact management, marketing automation, and email blacklisting based on user preferences. It's integrated with PocketBase hooks for automatic user management and contact synchronization.

Development Tools

pnpm

pnpm is the package manager of choice, providing fast installations and efficient disk space usage.

ESLint 9

ESLint 9 handles code quality with Next.js-specific configurations, TypeScript support, and a modern flat config format that ensures consistent code style across the project. It goes without saying PocketStarter comes without any linting errors.

SEO & Analytics

next-sitemap

next-sitemap automatically generates XML sitemaps and robots.txt files for better SEO, with configurable exclusions to control which pages are indexed by search engines.

Google Analytics

Google Analytics provides web analytics through a custom component. After adding your account ID to the environment variables, Google Analytics automatically loads on production servers only.