Awesome Cursor Rules Collection

Showing 1465-1476 of 2626 matches

JavaScript
# Rubik's Cube Project Rules
This is a browser-based Rubik's Cube implementation using modern web technologies.

## Project Context
- This is a 3D Rubik's Cube visualization using CSS transforms
- Built with vanilla JavaScript, SCSS, and HTML
- Uses Vite as the build tool
- Focuses on modern browser compatibility

## Code Style & Architecture
- Use SCSS with organized partials (_variables.scss, _mixins.scss, _cube.scss)
- Follow BEM naming convention for CSS classes
- Maintain separation of concerns between styling and logic
- Use CSS Grid for square layouts
- Leverage CSS transforms for 3D effects

## SCSS Guidelines
- Use the established color variables from _variables.scss
- Implement mixins for reusable styles
- Maintain the nested structure for .cube and .face components
- Use the $cube-colors map for consistent color management
- Keep transitions smooth with 0.3s duration

## JavaScript Guidelines
- Use ES6+ features
- Implement proper type checking
- Handle cube rotation and face movements efficiently
- Maintain clear separation between UI updates and cube logic
- Document complex algorithms and transformations

## Build & Development
- Use Vite for development and building
- Maintain source maps for debugging
- Follow the established folder structure
- Keep bundle size optimized

## Accessibility
- Ensure proper color contrast
- Maintain keyboard navigation support
- Include ARIA labels where appropriate
- Support reduced motion preferences

## Performance
- Optimize CSS transforms
- Use will-change for better performance
- Minimize repaints and reflows
- Implement efficient state management

## Documentation
- Document complex CSS transforms
- Maintain clear comments for cube movement logic
- Include JSDoc comments for key functions
- Keep README updated with setup instructions

## Testing
- Test across modern browsers
- Verify mobile compatibility
- Ensure smooth animations
- Validate cube state management

## Dependencies
- Minimize external dependencies
- Use Vite for bundling
- Leverage SCSS features
- Maintain browser compatibility

## Version Control
- Follow conventional commits
- Keep modular changes
- Document significant style updates
- Track breaking changes
bun
golang
html
java
javascript
nestjs
scss
vite

First seen in:

jonesrussell/rubiks-cube

Used in 1 repository

Python
# Cursor Rules Configuration

# Rule: benchperf
# Description: Performs a comparative performance analysis between current and develop branches
# Usage: Type 'benchperf' in the conversation
benchperf:
  steps:
    # First test on current branch
    - name: "Current Branch Test"
      commands:
        - "time ./run.sh > /tmp/current_branch_output_1 && time ./run.sh > /tmp/current_branch_output_2 && time ./run.sh > /tmp/current_branch_output_3"
        - "git stash && git checkout develop"
      
    # Test on develop branch
    - name: "Develop Branch Test"
      commands:
        - "git checkout develop"
        - "time ./run.sh > /tmp/develop_branch_output_1 && time ./run.sh > /tmp/develop_branch_output_2 && time ./run.sh > /tmp/develop_branch_output_3"
        
    # Return to original branch
    - name: "Restore State"
      commands:
        - "git checkout $(cat /tmp/current_branch)"
        - "git stash pop"
        
    # Analysis template
    - name: "Analysis Template"
      template: |
        1. Branche `${current_branch}` :
            ```
           Test 1 :

              Temps total : ${current_output_1_total}s
              - User CPU time : ${current_output_1_user}s
              - System CPU time : ${current_output_1_system}s
              - CPU utilization : ${current_output_1_cpu}%

              Étapes :
                ${current_output_1_times_by_step}

           Test 2 :
              Temps total : ${current_output_2_total}s
              - User CPU time : ${current_output_2_user}s
              - System CPU time : ${current_output_2_system}s
              - CPU utilization : ${current_output_2_cpu}%

              Étapes :
                ${current_output_2_times_by_step}

           Test 3 :
              Temps total : ${current_output_3_total}s
              - User CPU time : ${current_output_3_user}s
              - System CPU time : ${current_output_3_system}s
              - CPU utilization : ${current_output_3_cpu}%

              Étapes :
                ${current_output_3_times_by_step}
            ```

            Meilleur test : 
              Temps total : ${best_test_current_total}s
              - User CPU time : ${best_test_current_user}s
              - System CPU time : ${best_test_current_system}s
              - CPU utilization : ${best_test_current_cpu}%

        2. Branche develop :
            ```
           Test 1 :
              Temps total : ${develop_output_1_total}s
              - User CPU time : ${develop_output_1_user}s
              - System CPU time : ${develop_output_1_system}s
              - CPU utilization : ${develop_output_1_cpu}%

              Étapes :
                ${develop_output_1_times_by_step}

           Test 2 :
              Temps total : ${current_output_2_total}s
              - User CPU time : ${develop_output_2_user}s
              - System CPU time : ${develop_output_2_system}s
              - CPU utilization : ${develop_output_2_cpu}%

              Étapes :
                ${develop_output_2_times_by_step}

           Test 3 :
              Temps total : ${current_output_3_total}s
              - User CPU time : ${develop_output_3_user}s
              - System CPU time : ${develop_output_3_system}s
              - CPU utilization : ${develop_output_3_cpu}%

              Étapes :
              ${develop_output_3_times_by_step}
            ```

            Meilleur test : 
              Temps total : ${best_test_develop_total}s
              - User CPU time : ${best_test_develop_user}s
              - System CPU time : ${best_test_develop_system}s
              - CPU utilization : ${best_test_develop_cpu}%

        1. Différences:

           ```
           Différences moyennes : (${current_branch} vs ${develop_branch}): ${ecart_moyen} en faveur de ${best_branch_result}
           Meilleures differences : (${current_branch} vs ${develop_branch}): ${meilleur_ecart} en faveur de ${best_branch_result}
           ```

        2. Explications détaillées:

          ```
          ${detailed_explanation}
          ```

        3. Conclusions:

          ```
          ${conclusions}
          ```

# Rule: prtemplate
# Description: Template standard pour les Pull Requests
# Usage: Automatically applied when creating a Pull Request with GitHub CLI
prtemplate:
  template: |
    # ${pr_title}

    ${pr_short_description}

    ## Changes

    ### ${change_category_1}
    ${changes_list_1}

    ### ${change_category_2}
    ${changes_list_2}

    ### Code Organization
    - ${code_organization_changes}

    ${testing_section}

    ## Impact
    ${impact_short_description}
    1. ${impact_point_1}
    2. ${impact_point_2}
    3. ${impact_point_3}

  variables:
    testing_section:
      optional: true
      template: |
        ## Testing
        - ${test_point_1}
        - ${test_point_2}
        - ${test_point_3}
batchfile
golang
python
rest-api
shell

First seen in:

benjGam/KtasExporter

Used in 1 repository

TypeScript
Answer questions in Korean only.
css
html
javascript
scss
typescript

First seen in:

freechird2/scrollmeter

Used in 1 repository

JavaScript
# Rules to follow

my name is Tom Cranstoun

As an expert developer specializing in NodeJS. Your primary role is to guide developers in creating, explaining, and optimizing EDS projects. Here’s a medium-detail guide for your development needs, with best practices to follow.

## Core Concepts

1. **GitHub integration:** Code is stored and synced via GitHub repositories.
2. **Modern web technologies:** Use vanilla JavaScript and CSS3; external libraries are avoided unless necessary.
3. **Responsive design:** Prioritize a mobile-first approach.
4. **Accessibility and SEO:** Make these a priority in every development phase.
5. **E-L-D loading pattern:** Apply Eager, Lazy, and Delayed loading for optimal performance.
6. **Use css-variables:** Apply CSS-Variables to minimize maintenance
7. **Do not use inline css in javascript filer** always create css in css files

---

**JavaScript (`name.js`):**

When writing, or modifying Javascript code, promote configuration variables, and filenames to the top of the Code in a config object

when creating inline prompts or text fragments, create them as config object variables

Create a config object containing these items, and use it throughout the code

const NAME_CONFIG = {
  BOOK_TITLE: 'Code',
  ERROR_MESSAGE: 'Error loading content. Please try again.',
  COPY_BUTTON_RESET_DELAY: 2000,
  LONG_DOCUMENT_THRESHOLD: 40,
  // Add other configuration options here
};

unique text strings in the javascript should be promoted to the top of the file as const and all text strings grouped together to ensure ease of translation.
Favour named exports for functions
Favour iteration and modularization to adhere to DRY principles, avoid code duplication
use the "function" keyword for pure functions to add  clarity

structure the javascript code with components, sub-components, helpers
use custom error types for consistent error handling
leave no todo's or placeholders in the code

**CSS (`blockname.css`):**
  
  Define block-specific styles and ensure **responsive design**

  Ensure that css3 variables are used, configuration should be through CSS3 variables

     .blockname {
       /* Base styles */
     }

     @media (max-width: 768px) {
       /* Responsive styles */
     }
    

Use CSS variables for theming and consistency.

## Example file guidelines

1. Title:
2. Introduction
3. Sample table
4. Explanation of how the block works

## Demo File guidelines

1. Title:
2. Introduction
3. Sample table
4. Explanation of how the block works
5. Information on customization options
6. Potential use cases
7. Metadata section

When adding code examples in a markdown file, demo, readme, example or review:
Use single backticks to enclose code snippets.
**Do not use triple backticks or`<pre>` tags.**
Place the code inside single backticks, like this:
`Hello World Example`
`console.log("Hello, World!");`

## Best Practices for NodeJS Development

1. **Modularity:** Ensure blocks are self-contained and reusable.
2. **Semantic HTML:** Use the right HTML elements for proper structure.
3. **Accessibility:** Use ARIA attributes, keyboard navigation, and ensure all content is screen-reader friendly.
4. **Performance:** Optimize for speed:
   - Lazy load images and non-critical content.
   - Minimize excessive DOM manipulation.
   - Target 100 in Lighthouse scores for performance, SEO, and accessibility.
5. **Consistent naming conventions:** Use descriptive, meaningful class and ID names.
6. **Files named in code should be created at the top of the function in a const {var} = {filename} logic. where {var} is replaced byy a meaningful unique variable name describing the use of the file and {filename} is the full path to the file, relative to the root folder
7. Configuration const should be create for configuration variables and created at the top of the function
8. **Responsive design:** Test components across various screen sizes.
9. **Error handling:** Gracefully manage errors and fallbacks in both JavaScript and server-side logic.
10. **Code style:** Adhere to **Airbnb’s JavaScript Style Guide** to ensure clean, maintainable code, if writing code that uses console output, remember to precede it with  // eslint-disable-next-line no-console
11. **Async operations:** Use `async/await` for all asynchronous tasks to handle data fetching and avoid callback hell.
12. be Consistent in naming conventions
Optimize repeated styles
ensure that there are Accessibility enhancements

Consistency in naming conventions for css:  use kebab-case (e.g., `.code-expander-copy`). Stick to one convention, preferably kebab-case for CSS classes.
Optimization of repeated styles: Consider creating a shared class for common styles.
Accessibility enhancements: Consider adding :focus-visible styles for better keyboard navigation.
Add comments to explain the purpose of different sections in the CSS file. Consider grouping related styles together with comments to improve readability.

Used shorthand properties where applicable (e.g., margin: 5px 0 0;).
Added focus styles for better accessibility.

## Advanced Features

1. **Lazy loading:** Apply lazy loading for images or heavy content to improve load times.
2. **Infinite scrolling:** Useful for content-heavy sections or when dynamic loading is needed.
3. **External APIs:** Integrate with external services while ensuring performance isn't compromised.
4. **Animations and transitions:** Implement them with caution, ensuring they don't hurt performance.
5. **State management:** For interactive blocks, handle state efficiently without overloading the client.

## When Assisting Developers

1. Provide **complete, functional code snippets** that adhere to best practices.
2. **Explain code functions clearly** and ensure developers understand each critical section.
3. Suggest performance optimizations when needed, always considering SEO, accessibility, and efficiency.
4. Balance between creating **high-performance websites** and maintaining an **intuitive content authoring** experience for non-developers.
5. Be adaptable; offer alternatives and variations as per project requirements.

### Final Notes

All js, cs and md files should obey the air-bnb linting style guide

use await rather than .then() for async code

only use imports when the functionality of the import will be used

Your goal is to help developers build **efficient, accessible, and high-performing websites**. Always explain your suggestions, showing the reasoning behind them, and help developers follow the best practices for development, including performance optimization, modularity, and responsiveness. You are to create code that’s as clean, maintainable, and scalable as possible.

Add comments to code you create to make it more understandable for AI systems or human developers.

To add comments to this code, follow these steps:

1. Analyze the code to understand its structure and functionality.
2. Identify key components, functions, loops, conditionals, and any complex logic.
3. Add comments that explain:
   - The purpose of functions or code blocks
   - How complex algorithms or logic work
   - Any assumptions or limitations in the code
   - The meaning of important variables or data structures
   - Any potential edge cases or error handling

When adding comments, follow these guidelines:

- Use clear and concise language
- Avoid stating the obvious (e.g., don't just restate what the code does)
- Focus on the "why" and "how" rather than just the "what"
- Use single-line comments for brief explanations
- Use multi-line comments for longer explanations or function/class descriptions

comments are not allowed in json files

Your output should be the original code with your added comments. Make sure to preserve the original code's formatting and structure.

Remember, the goal is to make the code more understandable without changing its functionality. Your comments should provide insight into the code's purpose, logic, and any important considerations for future developers or AI systems working with this code.
eslint
golang
java
javascript
less
rest-api

First seen in:

ddttom/block-ai

Used in 1 repository

Python
You are an expert in **Python, FastAPI, scalable API development, TypeScript, React.

### Key Principles
- Write concise, technical responses with accurate examples in both Python and TypeScript.
- Use **functional and declarative programming patterns**; avoid classes unless absolutely necessary.
- Prefer **iteration and modularization** over code duplication.
- Use descriptive variable names with auxiliary verbs (e.g., `is_active`, `has_permission`, `isLoading`, `hasError`).
- Follow proper **naming conventions**: 
  - For Python: Use `snake_case` for both files and directories (e.g., `routers/user_routes.py`, `utils/response_handler.py`).

### Project Structure
- **Backend**:
  - **Language**: Python@3.10
  - **Framework**: FastAPI
  - **Database**: Firebase
  - **Directory Structure**: 
    - `kusis-kr-be/src/`: Main source code
    - `kusis-kr-be/tests/`: Tests
    - `kusis-kr-be/document-processor/`: Document processing utilities
    - `src/database.py`: Handles database API and connections using Firebase or SQLAlchemy.
    - `src/config.py`: Reads `.env` files and defines configurations as a `class` for easy use.
    - `src/dependency.py`: Collects reusable functions for `Depends()` in FastAPI, such as common dependencies.
    - `src/exception.py`: Stores reusable custom exceptions that appear at least three times across the codebase.
    - `src/domain/schema/`: Pydantic models for data validation.
      - Example: For `auth` functionality, use `src/domain/schema/auth_schemas.py`.
    - `src/domain/service/`: Business logic layer.
      - Example: For `auth` functionality, use `src/domain/service/auth_services.py`.
    - `src/route/`: API route definitions.
      - Example: For `auth` functionality, use `src/route/auth_route.py`.
    - `src/utils/crud_utils.py`: Common CRUD utilities for database interactions.
    - `src/utils/shared_utils.py`: Shared utilities not specific to CRUD.

  - Environment Configuration: 
    - `.env` / `.env.example`: Use `.env` for local development and `.env.production` for production. Ensure sensitive keys are managed securely.
  - **Docker Files**: 
    - `Dockerfile` 
    - `Dockerfile.dev`

### Code Style and Structure
- **Backend (Python/FastAPI)**:
  - Use `def` for pure functions and `async def` for asynchronous operations.
  - **Type Hints**: Use Python type hints for all function signatures. Prefer Pydantic models for input validation.
  - **RORO Pattern**: Use the "Receive an Object, Return an Object" pattern.
  - **Error Handling**:
    - Validate inputs at the function's start using FastAPI's dependency injection or Pydantic validators.
    - Use guard clauses to exit early when invalid states are encountered:
      ```python
      async def process_data(data: dict) -> dict:
          if not data.get("required_field"):
              raise ValueError("Missing required_field")
          return {"success": True}
      ```

### Performance Optimization
- **Asynchronous Operations**: Minimize blocking I/O operations using async functions.
- **Caching**: Implement caching strategies for frequently accessed data using Redis or in-memory stores.
- **Lazy Loading**: Use lazy loading techniques for large datasets and API responses.

### Firebase Configuration
- Centralize Firebase configuration in `database.py`.
- Use async operations for Firebase interactions:
  ```python
  from firebase_admin import firestore_async

  async def fetch_user_data(user_id: str) -> dict:
      db = firestore_async.client()
      user_doc = await db.collection("users").document(user_id).get()
      if not user_doc.exists:
          raise ValueError(f"User {user_id} not found.")
      return user_doc.to_dict()
docker
fastapi
firebase
less
python
react
redis
rest-api
+1 more

First seen in:

sounmu/kusis-kr-be

Used in 1 repository

Python
# Instructions

During you interaction with the user, if you find anything reusable in this project (e.g. version of a library, model name), especially about a fix to a mistake you made or a correction you received, you should take note in the `Lessons` section in the `.cursorrules` file so you will not make the same mistake again. 

You should also use the `.cursorrules` file as a scratchpad to organize your thoughts. Especially when you receive a new task, you should first review the content of the scratchpad, clear old different task if necessary, first explain the task, and plan the steps you need to take to complete the task. You can use todo markers to indicate the progress, e.g.
[X] Task 1
[ ] Task 2
Also update the progress of the task in the Scratchpad when you finish a subtask.
Especially when you finished a milestone, it will help to improve your depth of task accomplishment to use the scratchpad to reflect and plan.
The goal is to help you maintain a big picture as well as the progress of the task. Always refer to the Scratchpad when you plan the next step.

# Lessons

## User Specified Lessons

- You have a python venv in ./venv.
- Include info useful for debugging in the program output.
- Read the file before you try to edit it.
- Use LLM to perform flexible text understanding tasks. First test on a few files. After success, make it parallel.

## Cursor learned

- For website image paths, always use the correct relative path (e.g., 'images/filename.png') and ensure the images directory exists
- For search results, ensure proper handling of different character encodings (UTF-8) for international queries
- Add debug information to stderr while keeping the main output clean in stdout for better pipeline integration
- When using seaborn styles in matplotlib, use 'seaborn-v0_8' instead of 'seaborn' as the style name due to recent seaborn version changes
- For token-based authentication, use short tokens (8 chars) for better user experience when manual input is needed
- Always implement rate limiting and usage tracking from the beginning for API services
- Use dataclasses for structured data passing between components
- Keep database session handling close to the API endpoints for better control
- Store user IP and usage patterns for monitoring and debugging purposes
- Use proper HTTP status codes (401 for auth, 429 for rate limit) in API responses
- Mount static files after API routes in FastAPI to ensure proper route handling
- Track detailed token usage (input, reasoning, output) for better cost monitoring
- Use permanent request tracking instead of daily limits for simpler implementation

## Management Commands

When managing users and monitoring usage, use the following commands:

1. Create a new user:
```bash
python manage.py create "User Name" --limit 1000.0
```
This creates a new user with the specified name and usage limit (in USD).

2. List all users and their statistics:
```bash
python manage.py list
```
This shows user names, tokens, costs, request counts, and status.

3. Toggle user active status:
```bash
python manage.py toggle <token>
```
This enables/disables a user's access.

4. Reset user's request limits:
```bash
python manage.py reset <token>
```
This resets a user's request count to 0.

# Scratchpad

## Project: O1 Chat Web App

### Current Tasks
[X] Backend Implementation
    [X] Basic O1 client
    [X] User management
    [X] Rate limiting
    [X] Usage tracking
[X] Management Tools
    [X] User creation
    [X] Usage statistics
    [X] User control
[X] Frontend Implementation
    [X] Token input
    [X] Chat interface
    [X] Usage display
    [X] O1 Pro mode toggle
[X] UI/UX Improvements
    [X] Remove daily request limits
    [X] Add detailed token usage display
    [X] Add thinking time display
    [X] Simplify reasoning effort to Pro/Normal mode
[X] Documentation
    [X] Basic README
    [X] Management commands
    [X] Lessons learned
css
fastapi
golang
html
javascript
less
python
shell

First seen in:

grapeot/o1_pro_client

Used in 1 repository

JavaScript
You are an expert in React, Vite, Tailwind CSS, three.js, GASP, Next UI and React three fiber.
  
Key Principles
  - Write concise, technical responses with accurate React examples.
  - Use functional, declarative programming. Avoid classes.
  - Prefer iteration and modularization over duplication.
  - Use descriptive variable names with auxiliary verbs (e.g., isLoading).
  - Use lowercase with dashes for directories (e.g., components/auth-wizard).
  - Favor named exports for components.
  - Use the Receive an Object, Return an Object (RORO) pattern.
  
JavaScript
  - Use "function" keyword for pure functions. Omit semicolons.
  - Use TypeScript for all code. Prefer interfaces over types. Avoid enums, use maps.
  - File structure: Exported component, subcomponents, helpers, static content, types.
  - Avoid unnecessary curly braces in conditional statements.
  - For single-line statements in conditionals, omit curly braces.
  - Use concise, one-line syntax for simple conditional statements (e.g., if (condition) doSomething()).
  
Error Handling and Validation
    - Prioritize error handling and edge cases:
    - Handle errors and edge cases at the beginning of functions.
    - Use early returns for error conditions to avoid deeply nested if statements.
    - Place the happy path last in the function for improved readability.
    - Avoid unnecessary else statements; use if-return pattern instead.
    - Use guard clauses to handle preconditions and invalid states early.
    - Implement proper error logging and user-friendly error messages.
    - Consider using custom error types or error factories for consistent error handling.
  
React
  - Use functional components and interfaces.
  - Use declarative JSX.
  - Use function, not const, for components.
  - Use Next UI, and Tailwind CSS for components and styling.
  - Implement responsive design with Tailwind CSS.
  - Implement responsive design.
  - Place static content and interfaces at file end.
  - Use content variables for static content outside render functions.
  - Wrap client components in Suspense with fallback.
  - Use dynamic loading for non-critical components.
  - Optimize images: WebP format, size data, lazy loading.
  - Model expected errors as return values: Avoid using try/catch for expected errors in Server Actions. Use useActionState to manage these errors and return them to the client.
  - Use error boundaries for unexpected errors: Implement error boundaries using error.tsx and global-error.tsx files to handle unexpected errors and provide a fallback UI.
  - Use useActionState with react-hook-form for form validation.
  - Always throw user-friendly errors that tanStackQuery can catch and show to the user.


In the provided 3JS scene, we can observe a 3D grid of boxes, each of which appears to animate and morph based on the progress parameter, as follows:

    - Initial Scene (Progress = 0):
        - At the start, the scene consists of a grid of blue, block-like cubes arranged neatly in rows.
        - The color of the boxes shifts subtly from dark blue to lighter blue, suggesting a gradient or lighting effect applied across the grid.
        - The center of the grid features a single, different element: a black rectangle with a green square in its middle. This may be part of an object or entity being animated.
        - Lighting seems basic, likely ambient and possibly directional, with light sources emphasizing the color variations on the cubes.
    
    - Mid-Point (Progress = 0.5):
        - As the progress value increases to 0.5, the scene shows significant changes.
        - The boxes have begun to morph. Some have disappeared or appear sunken into the grid, while others form new shapes.
        - The central black rectangle with the green element is now a green abstract shape, possibly a silhouette or map-like shape. This could signify the morphing or transformation in progress.
        - The lighting continues to emphasize the depth and gradient of the cubes, making them visually stand out more as the scene evolves. A more pronounced shadow effect suggests the light source’s angle has either shifted or been altered during the animation.
    
    - Final Scene (Progress = 1):
        - At this stage, the scene shows a significant transformation. The cubes are more scattered, some having morphed into a larger, irregular shape.
        - The abstract green shape remains central, and the grid itself has dramatically changed, as cubes have repositioned themselves or disappeared altogether.
        - The zoomed-out perspective reveals more of the environment, suggesting the cubes are not constrained to a strict grid anymore.
        - Lighting plays an even more critical role here in illuminating the edges of the cubes and the transformed shapes, giving depth to the newly morphed object. There seems to be a directional light that highlights the boxes’ edges and shadows on the unlit sides.

Key Details for Prompt Engineering:

    - Cubes: Uniform cubes that are animated to morph over time, likely using vertex shaders to alter their position and size, with dynamic control via a progress parameter.
    - Central Object: An abstract green shape that evolves as the progress increases, likely driven by a fragment shader to control its color and opacity.
    - Lighting: There’s directional lighting creating gradients and shadows across the cubes, enhancing the sense of depth. There is likely an ambient light to maintain base visibility across the scene.
    - Shaders: Vertex shaders control the positions and deformation of the cubes, while fragment shaders handle color transitions (blue to light blue) and the material of the objects. The black rectangle with the green element suggests some use of texture or mapping techniques.
glsl
html
java
javascript
nestjs
react
tailwindcss
typescript
+1 more
flight505/threejs_boxes_notion

Used in 1 repository