Skip to content

Repository files navigation

just-us

This project was created with Better-T-Stack, a modern TypeScript stack that combines Next.js, Self, and more.

Features

  • TypeScript - For type safety and improved developer experience
  • Next.js - Full-stack React framework
  • TailwindCSS - Utility-first CSS for rapid UI development
  • Shared UI package - shadcn/ui primitives live in packages/ui
  • Prisma - TypeScript-first ORM
  • PostgreSQL - Database engine
  • Authentication - Better-Auth
  • Turborepo - Optimized monorepo build system
  • Biome - Linting and formatting

Getting Started

First, install the dependencies:

bun install

Database Setup

This project uses PostgreSQL with Prisma.

  1. Make sure you have a PostgreSQL database set up.

  2. Update your apps/web/.env file with your PostgreSQL connection details.

  3. Apply the schema to your database:

bun run db:push

Then, run the development server:

bun run dev

Open http://localhost:3001 in your browser to see the fullstack application.

UI Customization

React web apps in this stack share shadcn/ui primitives through packages/ui.

  • Change design tokens and global styles in packages/ui/src/styles/globals.css
  • Update shared primitives in packages/ui/src/components/*
  • Adjust shadcn aliases or style config in packages/ui/components.json and apps/web/components.json

Add more shared components

Run this from the project root to add more primitives to the shared UI package:

npx shadcn@latest add accordion dialog popover sheet table -c packages/ui

Import shared components like this:

import { Button } from "@just-us/ui/components/button";

Add app-specific blocks

If you want to add app-specific blocks instead of shared primitives, run the shadcn CLI from apps/web.

Deployment

Vercel Services

  • Target: web + server
  • Config: vercel.json
  • Link the project first: bun run deploy:setup
  • Local Vercel dev: bun run dev:vercel
  • Sync preview env: bun run env:preview
  • Sync production env: bun run env:production
  • Dry-run check (no upload): bun run deploy:check
  • Preview deploy: bun run deploy
  • Production deploy: bun run deploy:prod Vercel Services share project environment variables, but deploys do not upload local .env files automatically. Link the project with vercel link, then run the env sync command before your first deploy (otherwise the deployment starts with no env vars), or pass one-off envs with vercel deploy -e KEY=value. Pass Vercel CLI flags to the env sync command directly, for example: bun run env:production --scope your-team.

For more details, see the guide on Deploying to Vercel.

Git Hooks and Formatting

  • Run checks: bun run check

Project Structure

just-us/
├── apps/
│   └── web/         # Fullstack application (Next.js)
├── packages/
│   ├── ui/          # Shared shadcn/ui components and styles
│   ├── auth/        # Authentication configuration & logic
│   └── db/          # Database schema & queries

Available Scripts

  • bun run dev: Start all applications in development mode
  • bun run build: Build all applications
  • bun run dev:web: Start only the web application
  • bun run check-types: Check TypeScript types across all apps
  • bun run db:push: Push schema changes to database
  • bun run db:generate: Generate database client/types
  • bun run db:migrate: Run database migrations
  • bun run db:studio: Open database studio UI
  • bun run check: Run Biome formatting and linting
  • bun run deploy:setup: Link this repo to a Vercel project (first-time setup)
  • bun run dev:vercel: Run the Vercel Services dev environment locally
  • bun run env:preview: Sync local env files to the Vercel preview environment
  • bun run env:production: Sync local env files to the Vercel production environment
  • bun run deploy: Create a Vercel preview deployment
  • bun run deploy:prod: Deploy to Vercel production
  • bun run deploy:check: Dry-run a deploy to preview framework detection and included files without uploading

Releases

Packages

Contributors

Languages