Learn PHOENIX with Real Code Examples
Updated Nov 27, 2025
Code Sample Descriptions
1
Phoenix Simple Todo App
# lib/my_app_web/controllers/todo_controller.ex
defmodule MyAppWeb.TodoController do
use MyAppWeb, :controller
alias MyApp.Todos
def index(conn, _params) do
todos = Todos.list_todos()
json(conn, todos)
end
def create(conn, %{"todo" => todo_params}) do
{:ok, todo} = Todos.create_todo(todo_params)
json(conn, todo)
end
end
# lib/my_app/todos/todos.ex
defmodule MyApp.Todos do
alias MyApp.Repo
alias MyApp.Todos.Todo
def list_todos do
Repo.all(Todo)
end
def create_todo(attrs) do
%Todo{}
|> Todo.changeset(attrs)
|> Repo.insert()
end
end
# lib/my_app/todos/todo.ex
defmodule MyApp.Todos.Todo do
use Ecto.Schema
import Ecto.Changeset
schema "todos" do
field :title, :string
field :completed, :boolean, default: false
timestamps()
end
def changeset(todo, attrs) do
todo
|> cast(attrs, [:title, :completed])
|> validate_required([:title])
end
end
Demonstrates a Phoenix controller and view for managing Todo items with a simple JSON API.