Engineering

Our engineering is underpinned by principles that celebrate both the integrity of code and the ambition to innovate. This manifesto champions excellence, advocates for the adoption of cutting-edge technologies, and fosters an environment of continuous intellectual growth.

Mashup Elixir Practices

Here are our best practices when it comes to Elixir.

Pattern matching

Prefer to pattern match rather than use if conditionals.

def hashpassword(%{ changes: { password: password }, valid?: true } = changeset) do # hash the password and add it to the changeset end def hashpassword(%{ changes: { password: password }, valid?: false } = changeset) do # add error to changeset because it is not valid end def hashpassword(changeset), do: changeset*

Prefer GenServer over Agents

Avoid using Agents. Use GenServer instead, since Agent is simply a thin wrapper around GenServer.

Pipe operator

Prefer to only pipe functions when chaining 2 functions or more.

# Avoid: this can easily be written without pipnig some_value |> some_function()

# Good some_function(some_value)

# Also good some_value |> some_function() |> some_other_function()

Linting

Our preferred code health and formatting checker is Credo, used along with the Built in Format Checker. These are integrated to our CI Pipeline.

mix credo --strict mix format --check-formatted
Next: Design Playbook

Connect.

Mashup Garage, a premier software development team, specialises in crafting exceptional products for startups and enterprises. With expertise in React, Elixir/Phoenix, and Ruby on Rails, we deliver solutions that meet your unique needs. Our mission is to bring value backed by decades of technical expertise and global co-founding experience.

What do you need help with?

Build a project

Build a team

Consult

Speak to someone

Expect a guaranteed response from us in 1-2 business days.

United Kingdom

London

Islington, London

+44 738 777 3405

LDN

Philippines

Manila

3F Topy IV Building, 3 Economia Road, Bagumbayan, Quezon City, 1110

+63 917 3084089

MNL