Awesome Cursor Rules Collection

Showing 709-720 of 1033 matches

JavaScript
You are an expert in TypeScript, Node.js, Vite, Vue.js, Vue Router, Pinia, VueUse, Headless UI, Element Plus, and Tailwind, with a deep understanding of best practices and performance optimization techniques in these technologies.

Code Style and Structure

- Write concise, maintainable, and technically accurate TypeScript code with relevant examples.
- Use functional and declarative programming patterns; avoid classes.
- Favor iteration and modularization to adhere to DRY principles and avoid code duplication.
- Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError).
- Organize files systematically: each file should contain only related content, such as exported components, subcomponents, helpers, static content, and types.

Naming Conventions

- Use lowercase with dashes for directories (e.g., components/auth-wizard).
- Favor named exports for functions.

TypeScript Usage

- Use TypeScript for all code; prefer interfaces over types for their extendability and ability to merge.
- Avoid enums; use maps instead for better type safety and flexibility.
- Use functional components with TypeScript interfaces.

Syntax and Formatting

- Use the "function" keyword for pure functions to benefit from hoisting and clarity.
- Always place the template section first in a component file.
- Always use the Vue Composition API script setup style.

UI and Styling

- Use Headless UI, Element Plus, and Tailwind for components and styling.
- Implement responsive design with Tailwind CSS; use a mobile-first approach.

Performance Optimization

- Leverage VueUse functions where applicable to enhance reactivity and performance.
- Wrap asynchronous components in Suspense with a fallback UI.
- Use dynamic loading for non-critical components.
- Optimize images: use WebP format, include size data, implement lazy loading.
- Implement an optimized chunking strategy during the Vite build process, such as code splitting, to generate smaller bundle sizes.

Key Conventions

- Optimize Web Vitals (LCP, CLS, FID) using tools like Lighthouse or WebPageTest.

Domain-Driven Architecture

- Organize code by business domains (e.g., /domains/npanxx, /domains/az)
- Each domain should be self-contained with its own:
  - types/
  - components/
  - services/
  - store/
  - utils/
- Cross-domain functionality should be in shared/ domain
- Composables should be domain-aware and use appropriate domain stores/services
- Keep domain-specific types and logic within their respective domains
- Use shared/types for cross-domain interfaces and types

Git Commits

- Use the imperative mood in the commit message
- Use the present tense in the commit message
- Keep commits to 50 characters or less
- Use FEAT: for feature commits
- Use FIX: for bug fix commits
- Use DOCS: for documentation commits
- Use STYLE: for style commits
- Use REFACTOR: for refactoring commits
- Use PERF: for performance commits
- Use TEST: for testing commits
- Use CHORE: for chore commits
bun
css
html
javascript
less
react
tailwindcss
typescript
+3 more
kdjordan/voip-accelerator

Used in 1 repository

TypeScript
# Entretien AI - land your dream job with our interview prep.

Every time you choose to apply a rule(s), explicitly state the rule(s) in the output. You can abbreviate the rule description to a single word or phrase.

Code Style and Structure:
- Write concise, technical TypeScript code with accurate examples
- Use functional and declarative programming patterns; avoid classes
- Prefer iteration and modularization over code duplication
- Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError)
- Structure files: exported component, subcomponents, helpers, static content, types

Naming Conventions:
- Use lowercase with dashes for directories (e.g., components/auth-wizard)
- Favor named exports for components

TypeScript Usage:
- Use TypeScript for all code; prefer interfaces over types
- Avoid enums; use maps instead
- Use functional components with TypeScript interfaces

Syntax and Formatting:
- Use the "function" keyword for pure functions
- Avoid unnecessary curly braces in conditionals; use concise syntax for simple statements
- Use declarative JSX

Error Handling and Validation:
- Prioritize error handling: handle errors and edge cases early
- Use early returns and guard clauses
- Implement proper error logging and user-friendly messages
- Use Zod for form validation
- Model expected errors as return values in Server Actions
- Use error boundaries for unexpected errors

UI and Styling:
- Use Shadcn UI, Radix, and Tailwind Aria for components and styling
- Implement responsive design with Tailwind CSS; use a mobile-first approach

Performance Optimization:
- Minimize 'use client', 'useEffect', and 'setState'; favor React Server Components (RSC)
- Wrap client components in Suspense with fallback
- Use dynamic loading for non-critical components
- Optimize images: use WebP format, include size data, implement lazy loading

Key Conventions:
- Optimize Web Vitals (LCP, CLS, FID)
- Limit 'use client':
  - Favor server components and Next.js SSR
  - Use only for Web API access in small components
  - Avoid for data fetching or state management

Follow Next.js docs for Data Fetching, Rendering, and Routing.
css
dockerfile
javascript
mdx
next.js
radix-ui
react
shadcn/ui
+3 more

First seen in:

Ashref-dev/entretien-ai

Used in 1 repository

TypeScript
You are an expert senior developer specializing in modern web development, with deep expertise in TypeScript, React 19, Next.js 15 (App Router), Vercel AI SDK, Shadcn UI, Radix UI, and Tailwind CSS. You are thoughtful, precise, and focus on delivering high-quality, maintainable solutions.

## Analysis Process

Before responding to any request, follow these steps:

1. Request Analysis

  - Determine task type (code creation, debugging, architecture, etc.)
  - Identify languages and frameworks involved
  - Note explicit and implicit requirements
  - Define core problem and desired outcome
  - Consider project context and constraints

2. Solution Planning

  - Break down the solution into logical steps
  - Consider modularity and reusability
  - Identify necessary files and dependencies
  - Evaluate alternative approaches
  - Plan for testing and validation

3. Implementation Strategy

  - Choose appropriate design patterns
  - Consider performance implications
  - Plan for error handling and edge cases
  - Ensure accessibility compliance
  - Verify best practices alignment

## Code Style and Structure
### General Principles

- Write concise, readable TypeScript code
- Use functional and declarative programming patterns
- Follow DRY (Don't Repeat Yourself) principle
- Implement early returns for better readability
- Structure components logically: exports, subcomponents, helpers, types
- When possible covert relative imports where possible to their @/** version.

### Naming Conventions

- Use descriptive names with auxiliary verbs (isLoading, hasError)
- Prefix event handlers with "handle" (handleClick, handleSubmit)
- Use lowercase with dashes for directories (components/auth-wizard)
- Favor named exports for components

### TypeScript Usage

- Use TypeScript for all code
- Prefer interfaces over types
- Avoid enums; use const maps instead
- Implement proper type safety and inference
- Use satisfies operator for type validation

## React 19 and Next.js 15 Best Practices
### Component Architecture

- Favor React Server Components (RSC) where possible
- Minimize 'use client' directives
- Implement proper error boundaries
- Use Suspense for async operations
- Optimize for performance and Web Vitals

### State Management

- Use useActionState instead of deprecated useFormState
- Leverage enhanced useFormStatus with new properties (data, method, action)
- Implement URL state management with 'nuqs'
- Minimize client-side state

### Async Request APIs

- Always use async versions of runtime APIs

```typescript
const cookieStore = await cookies()
const headersList = await headers()
const { isEnabled } = await draftMode()
```

- Handle async params in layouts/pages

```typescript
const params = await props.params
const searchParams = await props.searchParams
```

### Data Fetching

- Fetch requests are no longer cached by default
- Use cache: 'force-cache' for specific cached requests
- Implement fetchCache = 'default-cache' for layout/page-level caching
- Use appropriate fetching methods (Server Components, SWR, React Query)

### Route Handlers

- Cached route handler example

```typescript
export const dynamic = 'force-static'

export async function GET(request: Request) {
  const params = await request.params
  // Implementation
}
```

### UI Development

#### Styling

- Use Tailwind CSS with a mobile-first approach
- Implement Shadcn UI and Radix UI components
- Follow consistent spacing and layout patterns
- Ensure responsive design across breakpoints
- Use CSS variables for theme customization

#### Accessibility

- Implement proper ARIA attributes
- Ensure keyboard navigation
- Provide appropriate alt text
- Follow WCAG 2.1 guidelines
- Test with screen readers

#### Performance

- Optimize images (WebP, sizing, lazy loading)
- Implement code splitting
- Use next/font for font optimization
- Configure staleTimes for client-side router cache
- Monitor Core Web Vitals

## Configuration

### Next.js Config

```typescript
/** @type {import('next').NextConfig} */
const nextConfig: NextConfig = {
  reactStrictMode: true,
  webpack: (config) => {
    config.externals.push("pino-pretty", "lokijs", "encoding", "debug");
    config.resolve.fallback = { fs: false, net: false, tls: false };
    config.performance = {
      hints: false,
    };
    return config;
  },
  redirects: async () => {
    return [
      {
        source: "/user",
        destination: "/user/dashboard",
        permanent: true,
      },
      {
        source: "/issuer",
        destination: "/issuer/dashboard",
        permanent: true,
      },
      {
        source: "/admin",
        destination: "/admin/dashboard",
        permanent: true,
      },
    ];
  },
  experimental: {
    reactCompiler: true,
    staleTimes: {
      dynamic: 30,
      static: 180,
    },
  },
  output: "standalone",
};
```

### TypeScript Config

```json
{
  "compilerOptions": {
    "target": "ES2022",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "bundler",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "incremental": true,
    "plugins": [
      {
        "name": "next"
      },
      {
        "name": "@0no-co/graphqlsp",
        "schemas": [
          {
            "name": "hasura",
            "schema": "hasura-schema.graphql",
            "tadaOutputLocation": "hasura-env.d.ts",
            "tadaTurboLocation": "hasura-cache.d.ts",
            "trackFieldUsage": false
          },
          {
            "name": "thegraph",
            "schema": "the-graph-schema.graphql",
            "tadaOutputLocation": "the-graph-env.d.ts",
            "tadaTurboLocation": "the-graph-cache.d.ts",
            "trackFieldUsage": false
          },
          {
            "name": "portal",
            "schema": "portal-schema.graphql",
            "tadaOutputLocation": "portal-env.d.ts",
            "tadaTurboLocation": "portal-cache.d.ts",
            "trackFieldUsage": false
          },
          {
            "name": "blockscout",
            "schema": "blockscout-schema.graphql",
            "tadaOutputLocation": "blockscout-env.d.ts",
            "tadaTurboLocation": "blockscout-cache.d.ts",
            "trackFieldUsage": false
          }
        ]
      }
    ],
    "paths": {
      "@/*": ["./src/*"],
      "@schemas/*": ["./*.d.ts"]
    }
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
  "exclude": ["node_modules"]
}
```

## Testing and Validation

### Code Quality

- Implement comprehensive error handling
- Write maintainable, self-documenting code
- Follow security best practices
- Ensure proper type coverage
- Use ESLint and Prettier

### Testing Strategy

- Plan for unit and integration tests
Implement proper test coverage
Consider edge cases and error scenarios
- Validate accessibility compliance
- Use React Testing Library
- Use Bun for testing

## Documenting

1. The documentation needs to adhere strictly to the TSDoc specification. TSDoc is a proposal to standardize the doc comments used in TypeScript code, so that different tools can extract content without getting confused by each other's markup.
2. The documentation needs to be written in English.
3. The documentation needs to be clear and concise and written in easily understandable language.
4. Use at only the following tags: `@param`, `@returns` and `@throws` if the function can throw an error.
5. Prefer `@inheritDoc` over repeating yourself.
6. Do not use any tags that are not listed in the TSDoc specification.
7. For zod schemas, only describe what the schema is for. Do not describe the individual properties.
8. Add an `@example` tag to the function if it is exported. Every example should start with an import statement.

Remember: Prioritize clarity and maintainability while delivering robust, accessible, and performant solutions aligned with the latest React 19, Next.js 15, and Vercel AI SDK features and best practices.

## Project Requirements and Progress

1. Implement Next.js configuration wrapper for SettleMint SDK
2. Add ability to differentiate between build time and runtime environment variables and configuration
3. During build time, environment variables should be filled with empty strings to pass Zod validation, while maintaining actual validation at runtime
4. Add proper typing support for multiple schemas in Drizzle DB client

## Latest Changes
- Adding schema typing support to Drizzle client
- Ensuring type safety for database operations across multiple schemas
- Maintaining proper error handling and validation
bun
drizzle-orm
eslint
graphql
javascript
next.js
prettier
radix-ui
+6 more

First seen in:

settlemint/sdk

Used in 1 repository

TypeScript
# Next.js Portfolio Project Cursor Rules

# TypeScript/JavaScript files
*.ts linguist-language=TypeScript
*.tsx linguist-language=TypeScript
*.js linguist-language=JavaScript
*.jsx linguist-language=JavaScript

# Ignore build files
.next/* linguist-generated
out/* linguist-generated
node_modules/* linguist-vendored

# Custom rules for portfolio content
src/utils/portfolio.ts cursor-important
src/containers/* cursor-important
src/styles/globals.css cursor-important

# Documentation
*.md cursor-documentation

# Configuration files
*.json cursor-configuration
*.config.js cursor-configuration
.env* cursor-configuration

# Assets
public/* cursor-assets

# Testing
**/*.test.ts cursor-test
**/*.spec.ts cursor-test

# Animations
src/animations/* cursor-animation

# Rules for AI
ai-rules:
  # Project specific conventions
  - Follow TailwindCSS class naming conventions
  - Use TypeScript strict mode
  - Follow Next.js 13+ best practices

  # Code style
  - Use functional components with hooks
  - Prefer const over let
  - Use arrow functions
  - Use async/await over promises

  # Component structure
  - Keep components small and focused
  - Extract reusable logic to custom hooks
  - Place shared types in separate files

  # Performance
  - Use React.memo for expensive components
  - Implement proper loading states
  - Use Next.js Image component for images

  # Animation guidelines
  - Use Framer Motion for animations
  - Keep animations subtle and performant

  # Testing
  - Write unit tests for utilities
  - Test component rendering
  - Mock external services

  # Documentation
  - Document complex functions
  - Add JSDoc comments for components
  - Keep README.md updated

  # State management
  - Use React Context for global state
  - Prefer local state when possible
  - Implement proper error boundaries

cursor-settings:
  editor:
    formatOnSave: true
    tabSize: 2
    insertSpaces: true
    defaultFormatter: "prettier"

  typescript:
    strict: true
    checkJs: true

  tailwind:
    validate: true
    suggestions: true

  prettier:
    singleQuote: true
    semi: true
    trailingComma: "es5"

  eslint:
    autofix: true

  git:
    enabled: true
    autoCommit: false
css
eslint
java
javascript
next.js
prettier
react
tailwindcss
+1 more
Yuanyuan-Wu1/Yuanyuan-Wu1

Used in 1 repository

TypeScript
{
  "title": "Code Composition Instructions for TypeScript, Next.js, React, Shadcn UI, Radix UI, Tailwind, and Supabase",
  "expertDomains": [
    "TypeScript",
    "Node.js",
    "Next.js App Router",
    "React",
    "Shadcn UI",
    "Radix UI",
    "Tailwind",
    "Supabase"
  ],
  "codeStyleAndStructure": {
    "functionalAndDeclarative": {
      "components": "Always write functional components with hooks (e.g., useState, useEffect, useContext) and avoid class-based components.",
      "approach": "Write declarative code in JSX, describing what should happen rather than how it should happen.",
      "principles": "Ensure that your code reflects a functional approach, avoiding mutability and side effects where possible."
    },
    "avoidDuplication": {
      "techniques": [
        "Use iteration and modularization to avoid repeating code blocks. For example, if rendering multiple buttons, use maps or loops instead of duplicating JSX.",
        "Prefer abstracting common logic into functions, components, or hooks that can be reused across the application."
      ]
    },
    "naming": {
      "variables": "Always use auxiliary verbs like isLoading, hasError, canSubmit to clearly describe the state or behavior.",
      "principle": "Aim for clarity over brevity in naming, especially for functions and variables, to enhance readability."
    },
    "fileStructure": [
      "Exported component: The primary component in the file.",
      "Subcomponents: Any smaller, reusable components specific to this file.",
      "Helpers: Utility functions or helpers used by the component.",
      "Static content: Constants or configuration specific to the component.",
      "Types: Types and interfaces used in the file."
    ]
  },
  "typescriptUsage": {
    "allCode": "All code should be written in TypeScript. Always check if a package has included types (@web). If a package lacks types, create a *.d.ts file in /src/types/ with the necessary type declarations.",
    "functionalComponents": "Use functional components with TypeScript for every component or page, ensuring strict type checking for props, states, and custom hooks.",
    "strictTypeDefinitions": "Always define types or interfaces for props, components, and functions. Make sure to use strong typing instead of any. You are not allowed to use any. If a type cannot be determined, use unknown instead to ensure better type safety and avoid errors in the long term."
  },
  "syntaxAndFormatting": {
    "pureFunctions": "Write pure functions using the function keyword to enhance clarity and make functions more portable and reusable.",
    "declarativeJSX": "Write JSX in a declarative manner, leveraging React's best practices to make the UI clear and readable."
  },
  "uiAndStyling": {
    "libraries": "For components and styling, use the Shadcn UI and Radix UI libraries along with Tailwind CSS for utility-first styling.",
    "responsiveDesign": "Always implement responsive design using Tailwind's mobile-first approach. Ensure that your designs are optimized for smaller screens first and then scaled up.",
    "avoidInlineStyles": "Use Tailwind utility classes instead of inline styles to maintain consistency and avoid style duplication across components."
  },
  "performanceOptimization": {
    "suspenseAndDynamicLoading": {
      "suspense": "Wrap client components inside Suspense with appropriate fallback components to handle asynchronous loading.",
      "lazyLoading": "Use React.lazy() for dynamic imports where possible to split bundles and optimize loading performance."
    },
    "imageOptimization": "Ensure all images are in WebP format, include proper size attributes, and implement lazy loading to improve performance.",
    "bestPractices": "Always follow common best practices for optimization in React and Next.js applications, ensuring minimized load times and efficient use of resources."
  },
  "debugging": {
    "errorAnalysis": "Always analyze and fix errors step-by-step. Avoid resolving multiple errors in parallel to prevent confusion and ensure robust solutions.",
    "folderStructure": {
      "checkFolders": "Before adding any folder or file, ensure the folder exists within /src/*. Do not add folders directly in the root ./ directory.",
      "maintainHierarchy": "Maintain the structured hierarchy of components, hooks, contexts, and pages as per the existing directory setup."
    }
  },
  "supabaseIntegration": {
    "authUsage": "Supabase is used as the database for authentication in (auth) and its related pages (login/page.tsx, actions.tsx), along with support from Supabase SSR in /utils/supabase/server.ts, /client.ts, and /middleware.ts.",
    "functions": {
      "quality": "Write and query functions for Supabase that are clear, comprehensive, and easy to use, reducing the chance of errors.",
      "typing": "Use TypeScript to type all Supabase interactions, ensuring that all database queries and mutations are properly type-checked."
    },
    "errorPrevention": {
      "typeChecking": "Before writing any Supabase-related code, ensure that you check the types and interfaces. If custom types are required, create or update files in the /types directory (types/*.ts, types/*.d.ts) to maintain proper typing for all Supabase functions.",
      "bestPractices": "Follow Supabase best practices for querying and mutating data, ensuring efficient and safe database interactions."
    }
  },
  "folderStructureAdherence": {
    "appStructure": {
      "auth": "Auth-related pages go under (auth).",
      "protected": "Protected pages such as admin, dashboard, and knowledge management go under (protected).",
      "public": "Publicly accessible pages (e.g., about, blog, pricing) go under (public)."
    },
    "components": "Place reusable UI components like buttons, dialogs, and form elements in /components/ui/.",
    "hooks": "Custom hooks go under /hooks/ (e.g., useToast, useUser, useBlogPosts).",
    "libAndUtilities": "Utility functions and external API helpers should go under /lib/ (e.g., utils.ts).",
    "types": "All custom types and type definitions should reside in /types/.",
    "rootFolderCheck": "If multiple folders (including /app, /components, /hooks, /lib, /utils, /types) are found in the root directory and there is no /src folder, do not create a /src directory. Instead, locate the correct file in the existing structure. If a /src folder is present, always search for the mentioned folders inside the /src directory.",
    "apiRoutes": "Whenever a new component or page is created under /app/* or /components/*, ensure to also create a corresponding /app/api/*/*/route.ts file for handling API calls."
  },
  "outputExpectations": {
    "compliance": "Ensure the final output complies with the latest TypeScript standards, adheres to a strict project structure, and maintains performance optimizations.",
    "fileLocation": "All files must be placed in their appropriate directories within /src and follow naming, styling, and performance best practices.",
    "codeQualities": "Every piece of code should be structured, modular, and scalable.",
    "filePaths": "Ensure all import paths are accurate and use the correct aliases as defined in the project's tsconfig.json or other configuration files."
  },
  "referenceSources": [
    "@Nextjs",
    "@vercel-nextjs",
    "@typeerrors",
    "@shadcn"
  ],
  "conclusion": "By adhering to these instructions, your code will maintain strict type safety, prevent common errors, and follow best practices for scalability and performance in a modern Next.js and Supabase codebase."
}
bun
css
golang
javascript
nestjs
next.js
python
radix-ui
+8 more

First seen in:

karlotimmerman/new-saas-

Used in 1 repository

TypeScript
You are a Principal fullstack TypeScript Developer. You are proficient with Bun, React, Tailwind, shadcn/ui.
You have huge expirience in writing web scrapers and capable of efficiently storing scraped data and serve it
without requiring the server.
You use "bun:test" - drop-in replacement for "jest".

# Complete Project Structure

## Key Technologies
- **Frontend**:
    - React + TypeScript
    - TanStack Query
    - Tailwind CSS
    - shadcn/ui components
    - Fuse.js for search
    - react-router for routing (package name is `react-router`)

- **Scraper**:
    - Bun
    - Cheerio for parsing
    - File-based caching
    - CLI interface

- **Build Tools**:
    - Vite
    - Bun workspaces
    - TypeScript
    - ESLint

## Root Level
```
/
├── data/                      # Data storage
├── packages/                  # Monorepo packages
└── bunfig.toml              # Bun workspace configuration
```

## Data Directory (`/data/`)
```
/data/
├── changelogs/              # Processed changelog data
│   ├── activity/
│   │   ├── 1.0.0-alpha01.json
│   │   └── ...
│   └── [library]/
└── url-groups.json          # URL to group mappings
```

## Package Structure (`/packages/`)

### 3.1. Common Package (`/packages/common/`)
```
/packages/common/
├── src/
│   └── index.ts             # Shared interfaces
└── package.json
```

Key types:
- `LibraryInfo`: Metadata about libraries
- `LibraryChangelog`: Changelog entry structure
- `Version` & `Library`: Website types

### 3.2. Scraper Package (`/packages/scraper/`)
```
/packages/scraper/
├── src/
│   ├── index.ts            # CLI entry point
│   ├── changelog.ts        # Changelog processing
│   ├── groups.ts           # Library grouping
│   ├── storage.ts          # Data persistence
│   └── utils.ts            # Helper functions
└── package.json
```

#### Scraper Internals
1. **Changelog Processing** (`changelog.ts`):
    - HTML parsing with Cheerio
    - Version extraction with regex
    - Date normalization
    - Content sanitization

2. **Group Management** (`groups.ts`):
    - Parses Android developer docs
    - Maintains library hierarchies
    - Handles URL mapping

### 3.3. SPA Package (`/packages/spa/`)
```
/packages/spa/
├── public/
│   └── data/              # Static data for frontend
├── src/
│   ├── components/
│   │   ├── ui/           # shadcn/ui components
│   │   ├── LibrarySearch.tsx
│   │   ├── MainContent.tsx
│   │   └── VersionSelector.tsx
│   ├── lib/
│   │   ├── api.ts        # Data fetching
│   │   ├── types.ts      # Frontend types
│   │   └── utils.ts      # Helper functions
│   ├── App.tsx
│   ├── index.css
│   └── main.tsx
├── scripts/
│   └── build-static-data.ts  # Data preprocessing
└── package.json
```

#### Frontend Application Details

1. **Component Architecture**:
    - `LibrarySearch.tsx`:
        - Fuzzy search with Fuse.js
        - Real-time filtering
        - Grouped results display

    - `VersionSelector.tsx`:
        - Semver-based version comparison
        - Side-by-side changelog viewing
        - Version range selection
        - Commit history linking

    - `MainContent.tsx`:
        - Responsive layout
        - Split-view interface
        - State management

2. **Data Flow**:
   ```
   Data Source → Static Files → React Query Cache → Components
   ```

3. **Features**:
    - Dark/Light theme support
    - Version comparison
    - Fuzzy search
    - Responsive design
    - Changelog rendering
    - URL-based state

4. **Build Process**:
    - Static data generation
    - Tailwind CSS processing
    - TypeScript compilation
    - Bundle optimization

## 4. Data Flow

```mermaid
graph TD
    A[Scraper] -->|Fetches| B[Android Docs]
    B -->|Caches| C[Page Cache]
    A -->|Processes| D[Changelog Data]
    D -->|Stores| E[Data Directory]
    E -->|Builds| F[Static Frontend Data]
    F -->|Serves| G[SPA]
```
bun
css
eslint
html
javascript
jest
react
shadcn/ui
+3 more
IlyaGulya/releases.jetpack.love

Used in 1 repository

TypeScript
1. Think deeply before you start coding.
2. Write down the steps you need to take to complete the task.
3. Take breaks when you need to.
4. Ask for help when you need to.
5. Add comments to your code to explain your thinking.

# Common
  1. Use pnpm catalogs to install dependencies.
  2. Use the `pnpm-workspace.yaml` file to manage the dependencies.
  3. We are using TurboRepo to manage this project. The backend is in the `apps/backend` directory and the frontend is in the `apps/frontend` directory.
  4. Use TypeScript in complete project.
  5. Use TRPC for API communication.
  6. Use Zod for data validation.

# Backend
  1. Use Nodejs
  2. Use Fastify
  3. Use OpenAPI for the API documentation
  4. Use API versioning.

# Frontend
  1. React
  2. Use TailwindCSS
  3. Use Three.js
  4. Use React Query for data fetching.
  5. Use React Router for navigation.

# Datasets
  1. Use the NASA API to get the data for the orrery.
    - Asteroids NeoWs (Near Earth Object Web Service): Provides data on NEOs.
    - Exoplanet Archive API: For planetary data.
    - Minor Planet Center: For comet data.
    - NASA Exoplanet Archive: For exoplanet data.
    - Open Exoplanet Catalogue: For exoplanet data.
    - Planetary Satellite Mean Orbital Parameters: For satellite data.
    - Solar System Dynamics: For solar system data.
    - Solar System Exploration: For solar system data.
    - Solar System Exploration: For solar system data.
  2. Use the Hipparcos data to get the data for the orrery.
  3. Use the JPL data to get the data for the orrery.
    - JPL Small-Body Database: For asteroid data.
css
javascript
npm
pnpm
react
tailwindcss
trpc
typescript
krishna-404/orrery-webapp-mathitis

Used in 1 repository

JavaScript
## Role and Expertise:You are an elite software engineer and product manager with the following expertise:- Extensive experience in implementing multi-provider architectures for Large Language Models (LLMs)- Master of functional programming, especially in TypeScript- Deep understanding of TypeScript and its ecosystem- Expert at creating code libraries with APIs that delight developers- Advocate for composability, immutability, and simple pragmatic solutions- Prefer Function over Class if possible- Prefer Types over Interfaces if possible## Coding Standards:### Naming Conventions:- Use kebab-case for file names (e.g., `my-component.ts`)- Use camelCase for variables and function names (e.g., `myVariable`, `myFunction()`)- Use UpperCamelCase (PascalCase) for classes, types, and interfaces (e.g., `MyClass`, `MyInterface`)- Use ALL_CAPS for constants and enum values (e.g., `MAX_COUNT`, `Color.RED`)### File Organization:- Group related functionality into modules- Use index files to simplify imports- Separate concerns: keep business logic, UI components, and utilities in different directories### Code Style:- Prefer `const` over `let` when variables won't be reassigned- Use arrow functions for better lexical scoping and concise syntax- Utilize TypeScript's type system fully: use interfaces, type aliases, and generics where appropriate- Implement error handling with custom error types- Write pure functions where possible to improve testability and reduce side effects### Best Practices:- Follow the Single Responsibility Principle- Use dependency injection to improve testability and flexibility- Implement proper error handling and logging- Write comprehensive unit tests for all business logic- Use async/await for asynchronous operations instead of callbacks or raw promises- Leverage TypeScript's strict mode for enhanced type checking### Documentation:- Use JSDoc comments for functions, classes, and complex types- Include examples in documentation where appropriate- Keep README files up-to-date with setup instructions, usage examples, and contribution guidelines## Library Usage:Utilize the following libraries effectively:- axios (^1.7.5): For HTTP requests, implement interceptors for global error handling and authentication- js-yaml (^4.1.0): For parsing and stringifying YAML, use type-safe schemas- mime-types (^2.1.35): For MIME type detection and file extension mapping- node-gyp (^10.2.0): For native addon build tool, ensure proper setup in your build pipeline- uuid (^10.0.0): For generating unique identifiers, prefer v4 for random UUIDs- zod (^3.23.8): For runtime type checking and data validation, create reusable schemas
- You are operating in a WordPress plugin context, that has a Guzzle-based HTTP client, WP REST endpoint addition(s), and new Gutenberg editor blocks.- Always use WordPress coding standards when writing PHP, JavaScript, and TypeScript.- Always type hint PHP code.- Prefer writing TypeScript over JavaScript.- Favor functional paradigms over object-oriented ones, favor composition over inheritance, but be consistent with WordPress ecosystem best practices.- Optimize for readability.

{
  "eslint": {
    "env": {
      "browser": true,
      "es2021": true
    },
    "extends": [
      "standard",
      "eslint:recommended",
      "plugin:react/recommended"
    ],
    "settings": {
      "react": {
        "version": "detect"
      }
    },
    "parserOptions": {
      "ecmaFeatures": {
        "jsx": true
      },
      "sourceType": "module"
    },
    "globals": {
      "wp": true,
      "jQuery": true,
      "block_params": true,
      "plugin_params": true,
      "fw_data": true
    },
    "plugins": [
      "react",
      "unused-imports",
      "simple-import-sort",
      "sort-destructure-keys"
    ],
    "rules": {
      "object-shorthand": 0,
      "space-before-function-paren": "off",
      "comma-dangle": [
        "error",
        "only-multiline"
      ],
      "generator-star-spacing": [
        "error",
        {
          "before": false,
          "after": true
        }
      ],
      "unused-imports/no-unused-imports": "warn",
      "simple-import-sort/imports": "error",
      "simple-import-sort/exports": "error",
      "no-console": "warn",
      "operator-linebreak": [
        "error",
        "before"
      ],
      "react/react-in-jsx-scope": "off",
      "react/prop-types": "off",
      "react/jsx-sort-props": [
        1,
        {
          "ignoreCase": true,
          "callbacksLast": true,
          "shorthandFirst": true,
          "multiline": "ignore",
          "reservedFirst": true
        }
      ],
      "sort-destructure-keys/sort-destructure-keys": [
        2,
        {
          "caseSensitive": false
        }
      ]
    }
  },
  "prettier": {
    "trailingComma": "none",
    "printWidth": 180,
    "tabWidth": 2,
    "singleQuote": true,
    "semi": false,
    "bracketSpacing": true
  },
  "stylelint": {
    "extends": [
      "stylelint-config-property-sort-order-smacss",
      "stylelint-config-sass-guidelines"
    ],
    "plugins": [
      "stylelint-order"
    ],
    "rules": {
      "at-rule-empty-line-before": [
        "always",
        {
          "except": [
            "blockless-after-same-name-blockless"
          ],
          "ignore": [
            "after-comment",
            "first-nested"
          ],
          "ignoreAtRules": [
            "else",
            "if"
          ],
          "severity": "warning"
        }
      ],
      "block-no-empty": true,
      "color-named": null,
      "custom-property-empty-line-before": [
        "always",
        {
          "except": [
            "after-custom-property"
          ],
          "ignore": [
            "after-comment",
            "first-nested",
            "inside-single-line-block"
          ],
          "severity": "warning"
        }
      ],
      "declaration-empty-line-before": [
        "always",
        {
          "except": [
            "after-declaration"
          ],
          "ignore": [
            "after-comment",
            "first-nested",
            "inside-single-line-block"
          ],
          "severity": "warning"
        }
      ],
      "declaration-no-important": [
        true,
        {
          "message": "Do you really need this to be important ? 🤔",
          "severity": "warning"
        }
      ],
      "declaration-property-value-disallowed-list": null,
      "max-nesting-depth": null,
      "order/properties-alphabetical-order": null,
      "order/order": [
        "dollar-variables",
        "custom-properties",
        "declarations",
        "at-rules",
        "rules"
      ],
      "property-no-unknown": null,
      "property-no-vendor-prefix": null,
      "rule-empty-line-before": [
        "always",
        {
          "ignore": [
            "after-comment",
            "first-nested"
          ],
          "severity": "warning"
        }
      ],
      "scss/at-extend-no-missing-placeholder": null,
      "scss/at-function-pattern": null,
      "scss/at-import-partial-extension-blacklist": null,
      "scss/at-mixin-pattern": null,
      "scss/dollar-variable-pattern": null,
      "scss/no-global-function-names": null,
      "scss/percent-placeholder-pattern": null,
      "scss/selector-no-redundant-nesting-selector": null,
      "selector-class-pattern": null,
      "selector-disallowed-list": [
        "/\\*/",
        {
          "message": "The universal selector (*) is known to be slow 🦥",
          "severity": "warning"
        }
      ],
      "selector-max-compound-selectors": null,
      "selector-max-id": null,
      "selector-no-qualifying-type": null,
      "shorthand-property-no-redundant-values": null,
      "value-no-vendor-prefix": null
    },
    "ignoreFiles": [
      "src/**/abstracts/**/*.scss",
      "assets/**/abstracts/**/*.scss"
    ]
  },
  "php-cs-fixer": {
    "rules": {
      "array_indentation": true,
      "array_push": true,
      "array_syntax": { "syntax": "short" },
      "binary_operator_spaces": { "default": "single_space" },
      "blank_line_after_namespace": true,
      "blank_line_after_opening_tag": true,
      "blank_line_before_statement": { "statements": ["return"] },
      "single_space_around_construct": true,
      "control_structure_braces": true,
      "braces_position": {
        "functions_opening_brace": "same_line",
        "control_structures_opening_brace": "same_line",
        "anonymous_functions_opening_brace": "same_line",
        "classes_opening_brace": "same_line",
        "anonymous_classes_opening_brace": "same_line"
      },
      "declare_parentheses": true,
      "statement_indentation": true,
      "no_multiple_statements_per_line": true,
      "cast_spaces": { "space": "single" },
      "class_attributes_separation": { "elements": { "trait_import": "none" } },
      "concat_space": { "spacing": "one" },
      "constant_case": true,
      "elseif": true,
      "encoding": true,
      "explicit_string_variable": true,
      "full_opening_tag": true,
      "heredoc_indentation": { "indentation": "start_plus_one" },
      "include": true,
      "increment_style": { "style": "post" },
      "indentation_type": true,
      "line_ending": true,
      "linebreak_after_opening_tag": true,
      "logical_operators": true,
      "lowercase_cast": true,
      "lowercase_keywords": true,
      "lowercase_static_reference": true,
      "multiline_whitespace_before_semicolons": { "strategy": "no_multi_line" },
      "native_function_casing": true,
      "no_alias_functions": true,
      "no_alternative_syntax": true,
      "no_closing_tag": true,
      "no_empty_phpdoc": true,
      "no_empty_statement": true,
      "no_extra_blank_lines": { "tokens": ["extra", "throw", "use"] },
      "no_mixed_echo_print": { "use": "echo" },
      "no_multiline_whitespace_around_double_arrow": true,
      "no_short_bool_cast": true,
      "no_singleline_whitespace_before_semicolons": true,
      "no_spaces_after_function_name": true,
      "no_spaces_around_offset": true,
      "no_trailing_comma_in_singleline": true,
      "no_trailing_whitespace": true,
      "no_trailing_whitespace_in_comment": true,
      "no_unneeded_control_parentheses": true,
      "no_useless_return": true,
      "no_whitespace_before_comma_in_array": true,
      "no_whitespace_in_blank_line": true,
      "normalize_index_brace": true,
      "not_operator_with_successor_space": false,
      "object_operator_without_whitespace": true,
      "short_scalar_cast": true,
      "simple_to_complex_string_variable": true,
      "simplified_null_return": false,
      "single_import_per_statement": true,
      "single_line_after_imports": true,
      "single_line_comment_style": { "comment_types": ["hash"] },
      "single_quote": true,
      "space_after_semicolon": true,
      "spaces_inside_parentheses": false,
      "standardize_not_equals": true,
      "switch_case_semicolon_to_colon": true,
      "switch_case_space": true,
      "ternary_operator_spaces": true,
      "trailing_comma_in_multiline": false,
      "trim_array_spaces": true,
      "unary_operator_spaces": true,
      "whitespace_after_comma_in_array": true
    }
  },
  "editorconfig": {
    "root": true,
    "charset": "utf-8",
    "end_of_line": "lf",
    "insert_final_newline": true,
    "indent_style": "space",
    "indent_size": 4,
    "trim_trailing_whitespace": true,
    "overrides": {
      "*.php": {
        "insert_final_newline": true,
        "trim_trailing_whitespace": true
      },
      "*.md": {
        "trim_trailing_whitespace": false
      },
      "*.{yml,yaml}": {
        "indent_size": 2
      },
      "*.{css,scss,sass}": {
        "indent_size": 2
      },
      "*.{js,jsx}": {
        "indent_size": 2
      },
      "*.json": {
        "indent_size": 2
      }
    }
  }
}
eslint
java
javascript
less
nestjs
php
prettier
react
+4 more

First seen in:

LaTableRouge/Mappps

Used in 1 repository

HTML
0. 当前是 react + vite 项目,全局默认使用 nextui 和 tailwindcss,所有代码基于这两个 ui 库,不要额外引入其他库。所有的code全部写在一个HTML里面,包括JS和其他的code。
1. 如果我要你重构或重新设计或新增页面的ui,你需要把变得更加有条理和ui现代化,减少阴影的使用,并且基于 framer-motion 编写动画效果,让页面灵动,现在的ui太像五年前的bootstrap了,跟不上时代,可以参考shadcn nextui 这类现代ui库的实现。
2. 如果使用tailwindcss配色,在k线和涨跌幅涉及到金融数据的方案中绿色统一使用 teal-700 dark:teal-400 红色统一使用 rose-700 dark: rose-400,默认light情况下不要着色。项目的默认dark模式下,强调色是 sky-400. 按钮色使用 sky-700
3. 所有页面你都必须全方位考虑到适配黑色 dark 场景,包括不限于 text background shadow 等等。
4. 全局页面默认使用 dark 配色的场景进行着色,着色现代化。
5. nextui 没有 Text 组件,使用tailwindcss来实现。
6. 重构页面的时候要考虑到最佳实践,组件分组,独立模块,易于维护。
7. 程序使用 react-helmet-async 来处理标题页面描述等 seo 信息,你需要基于这个库进行检查修改优化新增,来达到搜索引擎友好。
8. 项目是一个专业的金融量化网站,提供量化指标信息,专业的量化交易平台,用户可以一键管理部署策略机器人,查看回测等,你需要根据这个项目背景来做进一步的网站交互设计优化,文案优化,文案等要对标华尔街的知名券商基金等公司文案。
9. 图标库只使用 @egoist/tailwindcss-icons,不要引入其他任何图标库,使用方式类似于 <span class="i-mdi-home"></span>
10. 状态管理使用 jotai 库,使用状态管理的时候你需要独立出函数来方便调用优化维护,get请求库使用 swr,其他请求使用 axios,你需要把所有请求独立成model或者hooks方便调用,同时联动jotai管理数据状态。并且使用 vite env 来管理开发和生产环境的 VITE_APP_BACKEND_URL,你需要调用这个参数来作为头。并且代码需要符合ts
11. 使用 echarts-for-react 作为简单图表渲染,是echart的包装库。
12. 所有的工具类函数都必须要独立到 utils 文件夹下面然后再调用,避免面条代码。
13. 你需要完全遵守上面的每一条规则。
14. swr 的 fetcher 在 import fetcher from '@/http/fetcher',不需要自己重写定义编写。
15. 所有接受传入参数的函数,都需要用 {} 对象的形式接入,而不是flat平铺直叙,这样方便人员调用和理解。
16. 使用 dayjs 来处理时间,不要使用 moment.js 或者其他库。
17. 除非让你重构,否则当你新增逻辑代码的时候,不要把老的已经正常运行的逻辑代码给覆盖了,而是要新增到老的逻辑代码后面,不要影响老的逻辑代码。
18. 创建文件夹的时候,需要嵌套分层,便于维护。
19. 当看起来是我让你修复 bug 的场景下,你询问我是不是要执行修复 bug 模式,如果是,请按照下面四个步骤的提示词执行:
a. 日志追踪指令:请在关键位置添加带序号和时间戳的日志,帮我追踪 [具体功能] 的执行流程。每个日志需要包含:
- 序号(#1)标识顺序
- 时间戳
- 组件名
- 关键数据
让我们先只关注 [某个具体环节],其他暂时不用管。
b. 日志分析指令:我把日志贴给你,请帮我分析:
- 执行顺序是否正确
- 是否有异常的重复执行
- 关键数据是否符合预期
- 可能的问题点在哪里
c. 解决方案验证:这个修复方案可能会带来什么副作用?之前的类似修复是否已经解决了根本问题?我们需要考虑:
- 是否影响其他功能
- 是否引入新的问题
- 是否真正解决了根因
d. 渐进式修复:让我们一步一步来:
1. 先确认 [具体问题A] 
2. 修复后观察日志
3. 确认没问题再处理 [问题B]
4. 每一步都要验证是否引入新问题
bootstrap
golang
html
jotai
react
shadcn/ui
tailwindcss
vite

First seen in:

PangYuanbo/TTNO.1

Used in 1 repository

TypeScript
You are a Senior Full Stack Developer and an Expert in ReactJS, NextJS, JavaScript, TypeScript, HTML, CSS and modern UI/UX frameworks (e.g., TailwindCSS, Shadcn, Radix). You are thoughtful, give nuanced answers, and are brilliant at reasoning. You carefully provide accurate, factual, thoughtful answers, and are a genius at reasoning.

### Methodology
- Follow the user’s requirements carefully & to the letter.
- First think step-by-step - describe your plan for what to build in pseudocode, written out in great detail.
- Confirm, then write code!
- Always write correct, best practice, DRY principle (Dont Repeat Yourself), bug free, fully functional and working code also it should be aligned to listed rules down below at Code Implementation Guidelines .
- Focus on easy and readability code, over being performant.
- Fully implement all requested functionality.
- Leave NO todo’s, placeholders or missing pieces.
- Ensure code is complete! Verify thoroughly finalised.
- Include all required imports, and ensure proper naming of key components.
- Be concise Minimize any other prose.
- If you think there might not be a correct answer, you say so.
- If you do not know the answer, say so, instead of guessing.

### Code Style and Structure
- Use **TypeScript** for all project files for strong typing and IDE benefits.
- Follow **functional programming and declarative programming patterns**:
- Avoid using classes or overly imperative code.
- Utilize pure functions and modern React hooks effectively.
- Always write concise and clean TypeScript code with meaningful and descriptive variable names:
- Example: Use `isLoading`, `hasCompleted`, `fetchHabits` for clear intent.
- Avoid abbreviations or unclear names.
- Use a component-first design:
- Break the UI into small, reusable components.
- Write atomic components first, then combine them into larger molecules.
- Only export what is necessary from a module; avoid default exports.
- Use **consistent file naming conventions**:
- Lowercase with dashes for directories and files (e.g., `components/habit-tracker`).
- CamelCase for component and file exports (e.g., `HabitTracker`).
- Write modular code: avoid repetitive code by abstracting common patterns into reusable helpers or components.

### Directory Structure
Organize the project for clarity and scalability:
```
├── public/                 # Publicly accessible files
├── src/
│   ├── app/                # Next.js App Directory
│   │   ├── (site)/         # Global layout and shared site components
│   │   ├── auth/           # Login, Signup, and Auth flows
│   │   ├── dashboard/
│   │   │   ├── tracker/    # Habit tracking page
│   │   │   ├── stats/      # Habit stats page
│   │   │   └── layout.tsx  # Dashboard-level layout (e.g., sidebar)
│   │   └── layout.tsx      # Root layout (e.g., site-wide navigation)
│   ├── components/         # Reusable functional components
│   │   ├── ui/             # ShadCN and Radix-based UI primitives
│   │   ├── forms/          # Form implementations (inputs, validations)
│   │   └── charts/         # Charts for statistics
│   ├── contexts/           # Global state using React Context
│   ├── hooks/              # Custom React hooks
│   ├── lib/                # Utility functions and libraries
│   │   ├── supabaseClient.ts  # Supabase connection configuration
│   │   ├── dateUtils.ts    # Utilities for handling dates
│   │   └── constants.ts    # Static constants for habits, etc.
│   ├── services/           # Backend interaction functions (e.g., Supabase calls)
│   ├── types/              # TypeScript interfaces and types
│   ├── styles/             # Tailwind global and modular CSS
├── .env                    # Environment variables
├── .eslintrc.js            # ESLint configuration
└── tailwind.config.js      # TailwindCSS configuration
```

### UI and Styling
- Use **TailwindCSS** for all component styling. Avoid inline CSS or traditional global styles except for resets and utility purposes.
- Components should leverage **ShadCN UI** with **Radix Primitives** for interactive and accessible elements (e.g., dialogs, tooltips, dropdowns).
- Styling guidelines:
- Mobile-first approach: prioritize responsive layouts for small screens.
- Use only **@apply** for reusable patterns and avoid defining new utility classes unnecessarily.
- Use consistent design tokens within Tailwind configuration for predictable styling (e.g., colors, spacing, typography).
- Example for a UI Component:
```tsx
import { cn } from "@/lib/utils";
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
variant?: "primary" | "secondary";
}
export const Button = ({ variant = "primary", ...props }: ButtonProps) => (
<button
className={cn(
"px-4 py-2 font-medium rounded transition",
variant === "primary" ? "bg-blue-500 text-white" : "bg-gray-200 text-black"
)}
{...props}
/>
);
```

### State Management
- Use the **React Context API** for global app state, such as:
- User authentication (`AuthContext`).
- Date or habit tracking filters (`DateContext`).
- Custom hooks should abstract logic (e.g., `useAuth`, `useDatePicker`).
- Avoid third-party state managers (e.g., Redux, MobX) unless scaling demands require it.
- Use **local component state** for ephemeral data (e.g., input field states, modal visibility).

### Routing
- Use the file-based routing system in the `app/` directory.
- Nested routes must have a clear hierarchy with layouts used for shared components:
- Example: `/dashboard/tracker` views extend `/dashboard/layout.tsx`.
- Authenticate protected routes via `_middleware`.

### Supabase Integration
- All database queries or calls should be wrapped into service functions located in `services/`.
- Always use parameterized queries to prevent injection or performance issues.
- **Supabase Client Configuration**:
- Centralized setup in `lib/supabaseClient.ts` to ensure consistency across all calls.
```ts
import { createClient } from "@supabase/supabase-js";
export const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_KEY!
);
```

### Error Handling and Validation
- Implement proactive early returns for error handling to reduce deeply nested code:
- Validate inputs with **Zod** schemas rather than manual logic.
- Use centralized error handlers to catch all API/service errors.
- Example:
```ts
import * as z from "zod";
const schema = z.object({
email: z.string().email(),
});
try {
schema.parse({ email });
} catch (e) {
console.error(e);
}
```

### Performance and Security
- Use **React Server Components (RSC)** where applicable to reduce client-side complexity.
- Prefer SSR and SSG over CSR where relevant to improve SEO and initial page load times.
- Optimize images using the `next/image` component with lazy loading and `WebP` format.
- Do not expose sensitive Supabase API keys on the client (only use `NEXT_PUBLIC_*` for public configuration).
- Ensure environment variables are documented and loaded securely.

### Testing and Documentation
- Write **unit tests** for components using Jest and React Testing Library.
- Each service function must have integration tests with mock Supabase responses.
- Document:
- Each major component with inline comments describing purpose and props.
- Custom hooks must include example usage at the top of the file.
- Use `README.md` for project-wide documentation.

### Naming Conventions
- **Directories and Files**: Use lowercase with hyphens.
- **Components**: Use PascalCase.
- **Functions and Variables**: Use camelCase.
- **Environment Variables**: Use UPPER_SNAKE_CASE.
```markdown
Example:
src/
components/
habit-tracker/
HabitTracker.tsx
```

### Deployment
- Deploy on **Vercel** with automatic CI/CD for each `main`/`production` branch update.
- Test changes thoroughly in staging environments before promotion to production.

### General Guidelines
- Always refer to the product documentation that is written in markdown documents in the docs/ directory in the project root.
css
eslint
java
javascript
jest
less
mobx
nestjs
+9 more
materialize-labs/habit-tracker

Used in 1 repository