0%
balqalam Logo
balqalam
FeaturesCommunityPricingDocumentation
Login
  • Introduction
  • Pitch
  • Hogwarts
  • Live Demo
  • MVP
  • Roadmap
  • Launch Sprint
  • PRD
  • Get Started
  • Localhost
  • Architecture
  • Structure
  • Pattern
  • Page
  • Layout
  • Content
  • Types
  • Config
  • Actions
  • Queries
  • Authorization
  • Validation
  • Form
  • Table
  • Detail
  • Card
  • Util
  • Hooks
  • List Params
  • Views
  • README.md
  • ISSUE.md
  • Technology Stack
  • Database
  • File
  • CDN Assets
  • Entry Points
  • Dashboard
  • Authentication
  • Credentials
  • OAuth
  • Flow Diagrams
  • Multi-Tenancy
  • Offline
  • Onboarding
  • Onboarding Videos
  • Add Values
  • Admission
  • Application
  • Attendance
  • Compliance
  • Profile
  • Exams
  • Exam Wizard
  • Timetable
  • Classrooms
  • Notifications
  • Conference
  • LMS (Lumos)
Finance
  • Finance
  • Fee Management
  • Invoice
  • Wallet
  • Salary
  • Payroll
  • Timesheet
  • Expenses
  • Budget
  • Receipt
  • Accounts
  • Banking
  • Reports
  • Dashboard
  • Permissions
  • Messages
  • Integration Flow
  • Provision
  • AI Document Processing
  • Document Intelligence
  • Internationalization
  • Translation
  • Translation Guide
  • Icons
  • Docs Factory
  • Inspiration
  • Listings
  • Teachers
  • Students
  • Catalog
  • Library
  • Contributing
  • Code of conduct
  • GitHub Workflow
  • Database Seeds
  • Database Safety
  • Test Accounts
  • Playwright
  • Prettier
  • Block Rebound
Sales & GTM
  • Marketing Brief
  • Sales
  • Go-to-market
  • Marketing
  • Admission — Feature Spotlight
  • Pilot Program
  • Leads
  • Proposal
  • Outreach Templates
  • Case Study
  • Competitors
  • Landing-page teardown
  • Competitor FAQ
  • Business model
  • Shared economy
  • Traction
Fundraising & Ecosystem
  • Get Support
  • Investor Deck
  • Data Room
  • Investors
  • Accelerators
  • Incubators
  • Grants
  • Sponsors
  • Partners
  • Competitions & Hackathons
  • Universities & Training Centers

Prettier

PreviousNext

Code formatting with shadcn/ui patterns — import ordering and Tailwind class sorting.

We use Prettier with shadcn/ui's official patterns: no semicolons, double quotes, ES5 trailing commas, and automatic import + Tailwind class sorting.

Configuration

prettier.config.js mirrors shadcn/ui's prettier.config.cjs:

/** @type {import('prettier').Config} */
module.exports = {
  semi: false,
  singleQuote: false,
  trailingComma: "es5",
  tabWidth: 2,
  printWidth: 80,
  bracketSpacing: true,
  endOfLine: "lf",
  importOrder: [
    "^(react/(.*)$)|^(react$)",
    "^(next/(.*)$)|^(next$)",
    "<THIRD_PARTY_MODULES>",
    "",
    "^types$",
    "^@/env(.*)$",
    "^@/types/(.*)$",
    "^@/config/(.*)$",
    "^@/lib/(.*)$",
    "^@/hooks/(.*)$",
    "^@/components/ui/(.*)$",
    "^@/components/(.*)$",
    "^@/styles/(.*)$",
    "^@/app/(.*)$",
    "",
    "^[./]",
  ],
  importOrderParserPlugins: ["typescript", "jsx", "decorators-legacy"],
  plugins: [
    "@ianvs/prettier-plugin-sort-imports",
    "prettier-plugin-tailwindcss",
  ],
}

Differences from defaults

Optionshadcn/uiDefaultWhy
semifalsetrueCleaner code, matches shadcn/ui components
trailingComma"es5""all"Better compatibility, smaller diffs

Commands

pnpm format            # Format entire project
pnpm format:check      # CI check
pnpm format:staged     # Staged files only
pnpm format:cache      # With caching (faster)

Import groups

Imports auto-sort into logical groups: React/Next → third-party → internal (env, types, config, lib, hooks, ui, components, styles, app) → relative.

// 1. React + Next
import * as React from "react"
import Link from "next/link"
// 2. Third-party
import { useForm } from "react-hook-form"
import { z } from "zod"
 
// 3. Internal
import { env } from "@/env"
import type { Student } from "@/types/student"
import { db } from "@/lib/db"
import { Button } from "@/components/ui/button"
 
// 4. Relative
import { localHelper } from "./helpers"

Tailwind class sorting

// Before
<div className="p-4 flex bg-blue-500 items-center text-white">
 
// After
<div className="flex items-center bg-blue-500 p-4 text-white">

Plugins

PluginPurpose
@ianvs/prettier-plugin-sort-importsIntelligent import sorting via regex groups
prettier-plugin-tailwindcssSorts Tailwind classes

The Tailwind plugin must be last in the plugins array.

ESLint integration

ESLint runs alongside Prettier with conflict rules disabled via eslint-config-prettier.

// eslint.config.mjs
import { dirname } from "path"
import { fileURLToPath } from "url"
import { FlatCompat } from "@eslint/eslintrc"
import eslintConfigPrettier from "eslint-config-prettier"
 
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
const compat = new FlatCompat({ baseDirectory: __dirname })
 
export default [
  ...compat.extends("next/core-web-vitals", "next/typescript"),
  eslintConfigPrettier, // must be last
]
pnpm lint
pnpm lint --fix

Conventions: TypeScript-first (no any), server components by default, absolute aliases (@/components/ui/button).

IDE setup

VS Code

Install Prettier - Code formatter, then add to .vscode/settings.json:

{
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.formatOnSave": true,
  "prettier.requireConfig": true
}

WebStorm

Settings → Languages & Frameworks → JavaScript → Prettier. Enable "On save" and "On 'Reformat Code' action". Set Prettier package to node_modules/prettier.

Pre-commit hook

# .husky/pre-commit
npx pretty-quick --staged

Ignored

# .prettierignore
dist
node_modules
.next
build
.contentlayer
pnpm-lock.yaml

Troubleshooting

Import sorting not working — verify plugin order: sort-imports first, tailwindcss last.

VS Code not formatting — check Prettier extension installed, editor.defaultFormatter set, prettier.config.js exists in root.

Different formatting locally vs CI — pin Prettier version in package.json:

{
  "devDependencies": {
    "prettier": "3.7.4"
  }
}

See also

  • GitHub workflow
  • Pattern
PlaywrightBlock Rebound

On This Page

ConfigurationDifferences from defaultsCommandsImport groupsTailwind class sortingPluginsESLint integrationIDE setupVS CodeWebStormPre-commit hookIgnoredTroubleshootingSee also

Built by Databayt ·

Welcome to balqalam.

A great journey is about to begin.