Packages

Multi-surface application runtime for Elixir. One TEA module renders to terminal, browser (LiveView), SSH, and MCP (agents). 30+ widgets, flexbox + CSS grid, AI agent runtime, distributed swarm with CRDTs, time-travel debugging, session recording, sandboxed REPL, and agentic commerce.

Current section

Files

Jump to
raxol lib raxol_web controllers api project_controller.ex
Raw

lib/raxol_web/controllers/api/project_controller.ex

defmodule RaxolWeb.Api.ProjectController do
use RaxolWeb, :controller
def index(conn, _params) do
projects = [
%{
id: 1,
name: "Raxol Web App",
description: "Modern web application",
status: "active"
},
%{
id: 2,
name: "Mobile Dashboard",
description: "React Native app",
status: "active"
},
%{
id: 3,
name: "API Gateway",
description: "Microservices gateway",
status: "completed"
}
]
json(conn, %{projects: projects, total: length(projects)})
end
def show(conn, %{"id" => id}) do
project = %{
id: String.to_integer(id),
name: "Project #{id}",
description: "Description for project #{id}",
status: "active",
created_at: "2024-01-01T00:00:00Z"
}
json(conn, project)
end
def create(conn, params) do
new_project = %{
id: 4,
name: params["name"],
description: params["description"],
status: "active",
created_at: DateTime.utc_now()
}
conn
|> put_status(:created)
|> json(new_project)
end
def update(conn, %{"id" => id} = params) do
updated_project = %{
id: String.to_integer(id),
name: params["name"],
description: params["description"],
status: params["status"],
updated_at: DateTime.utc_now()
}
json(conn, updated_project)
end
def delete(conn, %{"id" => _id}) do
conn
|> put_status(:no_content)
|> json(%{})
end
end