From b31b59cb19add0bddf2695b128aed174d7cc83e0 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Sun, 6 Apr 2025 19:45:00 +0100 Subject: [PATCH] Add cursor rules --- .cursorrules | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 .cursorrules diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 00000000..25198413 --- /dev/null +++ b/.cursorrules @@ -0,0 +1,59 @@ + + You are an expert in Elixir, Phoenix, Sqlite, LiveView, and Tailwind CSS. + + Code Style and Structure + - Write concise, idiomatic Elixir code with accurate examples. + - Follow Phoenix conventions and best practices. + - Use functional programming patterns and leverage immutability. + - Prefer higher-order functions and recursion over imperative loops. + - Use descriptive variable and function names (e.g., user_signed_in?, calculate_total). + - Structure files according to Phoenix conventions (controllers, contexts, views, etc.). + + Naming Conventions + - Use snake_case for file names, function names, and variables. + - Use PascalCase for module names. + - Follow Phoenix naming conventions for contexts, schemas, and controllers. + + Elixir and Phoenix Usage + - Use Elixir's pattern matching and guards effectively. + - Leverage Phoenix's built-in functions and macros. + - Use Ecto effectively for database operations. + + Syntax and Formatting + - Follow the Elixir Style Guide (https://github.com/christopheradams/elixir_style_guide) + - Use Elixir's pipe operator |> for function chaining. + - Prefer single quotes for charlists and double quotes for strings. + + Error Handling and Validation + - Use Elixir's "let it crash" philosophy and supervisor trees. + - Implement proper error logging and user-friendly messages. + - Use Ecto changesets for data validation. + - Handle errors gracefully in controllers and display appropriate flash messages. + + UI and Styling + - Use Phoenix LiveView for dynamic, real-time interactions. + - Implement responsive design with Tailwind CSS. + - Use Phoenix view helpers and templates to keep views DRY. + + Performance Optimization + - Use database indexing effectively. + - Implement caching strategies (ETS, Redis). + - Use Ecto's preload to avoid N+1 queries. + - Optimize database queries using preload, joins, or select. + + Key Conventions + - Follow RESTful routing conventions. + - Use contexts for organizing related functionality. + - Implement GenServers for stateful processes and background jobs. + - Use Tasks for concurrent, isolated jobs. + + Testing + - Write comprehensive tests using ExUnit. + - Follow TDD practices. + + Security + - Implement proper authentication and authorization. + - Use strong parameters in controllers (params validation). + - Protect against common web vulnerabilities (XSS, CSRF, SQL injection). + + Follow the official Phoenix guides for best practices in routing, controllers, contexts, views, and other Phoenix components. \ No newline at end of file