{"id":27210888,"url":"https://github.com/sylphlab/typescript","last_synced_at":"2025-04-10T01:27:52.091Z","repository":{"id":287084866,"uuid":"962955498","full_name":"sylphlab/typescript","owner":"sylphlab","description":"Monorepo for SylphLab's TypeScript configurations (ESLint, Prettier, tsconfig) and development guidelines.","archived":false,"fork":false,"pushed_at":"2025-04-09T21:54:48.000Z","size":346,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T22:26:25.732Z","etag":null,"topics":["airbnb","eslint","eslint-config","eslintconfig","flat-config","guidelines","monorepo","prettier","react","react-native","strict","styleguide","sylphlab","tsconfig","turborepo","typescript","typescript-eslint","unicorn","vue"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sylphlab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-08T23:52:38.000Z","updated_at":"2025-04-09T21:54:52.000Z","dependencies_parsed_at":"2025-04-09T22:38:17.307Z","dependency_job_id":null,"html_url":"https://github.com/sylphlab/typescript","commit_stats":null,"previous_names":["sylphlab/typescript"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sylphlab%2Ftypescript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sylphlab%2Ftypescript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sylphlab%2Ftypescript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sylphlab%2Ftypescript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sylphlab","download_url":"https://codeload.github.com/sylphlab/typescript/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248139779,"owners_count":21054179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airbnb","eslint","eslint-config","eslintconfig","flat-config","guidelines","monorepo","prettier","react","react-native","strict","styleguide","sylphlab","tsconfig","turborepo","typescript","typescript-eslint","unicorn","vue"],"created_at":"2025-04-10T01:27:51.646Z","updated_at":"2025-04-10T01:27:52.072Z","avatar_url":"https://github.com/sylphlab.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SylphLab TypeScript Ecosystem: Configurations \u0026 Guidelines\n\n[![CI Status](https://github.com/sylphlab/typescript/actions/workflows/ci-release.yml/badge.svg)](https://github.com/sylphlab/typescript/actions/workflows/ci-release.yml)\n[![npm version](https://img.shields.io/npm/v/@sylphlab/eslint-config-sylph?label=%40sylphlab%2Feslint-config-sylph)](https://www.npmjs.com/package/@sylphlab/eslint-config-sylph)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nWelcome to the central hub for SylphLab's TypeScript development standards! This monorepo, managed with **Turborepo** and **pnpm workspaces**, houses our meticulously crafted ESLint configurations, shared `tsconfig` bases, Prettier setup, and comprehensive development guidelines.\n\n**Why This Project Exists:**\n\nWe believe in building high-quality, maintainable, and efficient software. This repository serves multiple purposes:\n\n1.  **Internal Standard:** Provides a single source of truth for SylphLab's TypeScript practices, ensuring consistency across all our projects.\n2.  **Open Source Contribution:** Offers the wider community a set of strict, modern, and opinionated configurations based on industry best practices.\n3.  **Technical Showcase:** Demonstrates SylphLab's commitment to quality engineering, modern tooling, and clear documentation.\n\n## Core Philosophy\n\nOur approach is built upon these pillars:\n\n*   **Extreme Strictness:** We enforce most linting rules as errors to catch issues at the earliest possible stage. Quality is non-negotiable.\n*   **Modern Tooling:** Leveraging ESLint Flat Config (`eslint.config.ts`), TypeScript 5+, pnpm, Turborepo, and modern JS features (`\"type\": \"module\"`).\n*   **Best Practices:** Incorporating standards from Airbnb, TypeScript Strict, Unicorn, Prettier, and framework-specific recommendations (React, Vue, React Native).\n*   **Developer \u0026 AI Ergonomics:** Prioritizing explicit typing, clear naming, and consistent formatting makes code easier for both humans and AI assistants to understand, refactor, and maintain.\n*   **Automation:** Utilizing automated formatting (Prettier), Git hooks (Husky), CI/CD (GitHub Actions), and dependency management (Dependabot) to streamline development.\n*   **Performance \u0026 Bug Prevention:** Maximizing static analysis and encouraging efficient patterns to build robust and performant applications.\n\n## Packages within this Monorepo\n\n*   **ESLint Configurations (`packages/eslint-config-*`)**\n    *   `@sylphlab/eslint-config-sylph`: Foundational config for all TS projects.\n    *   `@sylphlab/eslint-config-sylph-react`: Extends base with React/JSX/Hooks/A11y rules.\n    *   `@sylphlab/eslint-config-sylph-vue`: Extends base with Vue 3 rules.\n    *   `@sylphlab/eslint-config-sylph-rn`: Extends React config with React Native rules.\n*   **TypeScript Configuration (`packages/typescript-config`)** *(Planned)*\n    *   Reusable `tsconfig.base.json` files for different environments (Node, DOM, etc.).\n*   **Prettier Configuration (`packages/prettier-config`)** *(Planned)*\n    *   A shared Prettier configuration package.\n*   **Examples (`examples/*`)** *(Planned)*\n    *   Simple projects demonstrating the usage of the configurations.\n\n## Documentation (`docs/`)\n\nThis repository also contains comprehensive documentation covering:\n\n*   **Best Practices:** Core principles, project structure.\n*   **Style Guide:** ESLint, Prettier, Git hooks, quality metrics.\n*   **Tooling:** Project setup, `tsconfig`, Dependabot, CI/CD, Docker.\n*   **TypeScript Specifics:** Testing (Vitest), documentation (VitePress, TypeDoc).\n\nExplore the [`docs/typescript/index.md`](./docs/typescript/index.md) for a detailed breakdown.\n\n## Getting Started\n\n1.  **Clone the repository (if contributing):**\n    ```bash\n    git clone https://github.com/sylphlab/typescript.git\n    cd typescript\n    ```\n2.  **Install dependencies:**\n    ```bash\n    pnpm install\n    ```\n3.  **Explore Packages:** Navigate to individual packages in the `packages/` directory. Each package has its own README detailing specific installation and usage instructions (e.g., [`packages/eslint-config-sylph/README.md`](./packages/eslint-config-sylph/README.md)).\n4.  **Run Commands:** Use `turbo run \u003cscript\u003e` from the root (e.g., `turbo run build`, `turbo run lint`).\n\n## Using the ESLint Configurations in Your Project\n\nRefer to the README file of the specific configuration package you need (e.g., `@sylphlab/eslint-config-sylph-react`) for detailed installation and setup instructions. The general process involves:\n\n1.  Installing `eslint` and `typescript`.\n2.  Installing the desired `@sylphlab/eslint-config-sylph-*` package.\n3.  Using `npx install-peerdeps --dev @sylphlab/eslint-config-sylph-\u003cyour-choice\u003e -p pnpm` to install all required peer dependencies.\n4.  Creating an `eslint.config.js` (or `.ts`) in your project root and importing the configuration.\n\nExample (`eslint.config.js` for a React project):\n```javascript\nimport sylphReactConfig from '@sylphlab/eslint-config-sylph-react';\n\nexport default [\n  ...sylphReactConfig,\n  // Your project-specific overrides\n  {\n    languageOptions: { parserOptions: { project: './tsconfig.json' } },\n    rules: { 'no-console': 'warn' }\n  }\n];\n```\n\n## Contributing\n\nContributions are welcome! Please refer to the contribution guidelines (TODO: Create CONTRIBUTING.md) for details on reporting issues, proposing changes, and submitting pull requests. Ensure adherence to the established code style and quality standards.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsylphlab%2Ftypescript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsylphlab%2Ftypescript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsylphlab%2Ftypescript/lists"}