Skip to content

jojo8356/setupCleanCodeTS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Setup Clean Code TypeScript

Template de projet TypeScript / Next.js avec les meilleures pratiques de clean code, pret a cloner pour demarrer un projet pro.

Ce qui est inclus

TypeScript Strict

  • strict: true + noUncheckedIndexedAccess + noFallthroughCasesInSwitch
  • Zero tolerance pour any — utiliser unknown, generics, ou types specifiques

ESLint Rules

Regle Niveau Description
no-var error Jamais var, toujours let/const
prefer-const error const si jamais reassigne
no-nested-ternary error Pas de ternaires imbriquees
no-console warn Pas de console.log (warn/error OK)
eqeqeq error Toujours ===, jamais ==
no-eval error Jamais eval()
no-explicit-any error Jamais any explicite

Knip (Dead Code Detection)

  • Fichiers non utilises
  • Exports non utilises
  • Dependances fantomes dans package.json

Claude Code Integration

  • .claude/ avec settings et memoire
  • CLAUDE.md avec toutes les regles du projet
  • Notes memoire pour les patterns recurrents

Pipeline de qualite

pnpm analyze

Execute dans l'ordre :

  1. tsc — verification des types
  2. eslint — qualite du code
  3. knip — code mort et deps inutiles

Installation

# Cloner le template
git clone https://github.com/ton-user/setupCleanCodeTS.git mon-projet
cd mon-projet

# Installer les deps de base
pnpm add -D typescript eslint @eslint/eslintrc eslint-config-next knip
pnpm add date-fns

# Copier les fichiers de config dans ton projet existant
cp tsconfig.json eslint.config.mjs knip.json CLAUDE.md /chemin/vers/ton-projet/
cp -r .claude/ /chemin/vers/ton-projet/

Structure

.
├── .claude/
│   ├── settings.json          # Permissions Claude Code
│   └── memory/
│       ├── MEMORY.md           # Index des notes
│       ├── feedback_no_nested_ternary.md
│       ├── feedback_use_date_fns.md
│       └── feedback_strict_typescript.md
├── .env.example               # Variables d'environnement template
├── .gitignore
├── CLAUDE.md                  # Regles du projet pour Claude
├── eslint.config.mjs          # Config ESLint (flat config)
├── knip.json                  # Config Knip (dead code)
├── tsconfig.json              # TypeScript strict
└── README.md

Patterns de code

Pas de ternaires imbriquees

// Helper avec early returns
function getStatus(user: User) {
  if (user.isAdmin) return "admin";
  if (user.org) return "organizer";
  return "user";
}

// Lookup map
const LABELS: Record<string, string> = { VALID: "Valide", USED: "Utilise" };
const label = LABELS[status] ?? "Inconnu";

Toujours date-fns

import { addDays, subHours, format } from "date-fns";

const nextWeek = addDays(new Date(), 7);
const oneHourAgo = subHours(new Date(), 1);
const formatted = format(date, "yyyy-MM-dd");

Types stricts pour les API

// Typer les reponses API
const data = await api.get("endpoint").json<{ id: string; name: string }>();

// Index access toujours verifie
const first = items[0]; // type: T | undefined
if (first) use(first);  // type: T (narrowed)

About

Template Clean Code TypeScript / Next.js — tsconfig strict, ESLint, Knip, Claude Code integration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors