ivanminutillo

ivanminutillo

Elixir/phoenix llm code rules

i found this llm code rules to be fed as context to LLMs for improving answers on elixir/phoenix codebases, what do you think about it? I think there’s room to improve it quite much…


You are an expert in Elixir, Phoenix, Postgres, LiveView, 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, hooks, 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

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.
  • 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.
  • Use ExMachina for test data generation.

Security

  • 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.

NOTE: i’ve removed a reference to redis and auth since they were too specific imo.

Where Next?

Popular in Discussions Top

rower687
Hi all, I’ve been reading a lot about the “let it crash” term and how supervising processes and the whole messaging passing make an elixi...
New
pillaiindu
In django there is a cache framework backed by memcached. Rails also puts a lot of emphasis on caching, and even the idea of russian-doll...
New
jer
I’ve been using umbrellas for a while, and generally started off (on greenfield projects at least) by isolating subapps based on clearly ...
New
PragTob
Hello everyone, I know we had quite some threads (read through lots of them) about background job processing but it remains a hotly deba...
New
Nvim
Anybody knows a comprehensive comparison of Django and Phoenix, thanks for the help. Where are they similar? Where do they differ the m...
New
nunobernardes99
Hi there Elixir friends :vulcan_salute: In a recent task I was on, I needed to check in two dates which of them is the maximum and which...
New
AstonJ
Can you believe the first professionally published Elixir book was published just 8 years ago? Since then I think we’ve seen more books f...
New

Other popular topics Top

electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 49084 226
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New

We're in Beta

About us Mission Statement