# phoenixframework/phoenix

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/phoenixframework-phoenix).**

22,881 stars · 3,049 forks · Elixir · mit

## Links

- GitHub: https://github.com/phoenixframework/phoenix
- Homepage: https://www.phoenixframework.org
- awesome-repositories: https://awesome-repositories.com/repository/phoenixframework-phoenix.md

## Topics

`api-server` `distributed` `elixir` `realtime` `web-framework`

## Description

Phoenix is a server-side web framework built for the Elixir programming language and the Erlang virtual machine. It provides a structured environment for developing applications using the model-view-controller pattern, enabling developers to manage data, render user interfaces, and handle incoming requests within a scalable, process-based architecture.

The framework distinguishes itself as a platform for real-time web communication, utilizing persistent bidirectional connections to broadcast live updates to clients. It incorporates a dedicated abstraction layer for relational database integration, which maps application data structures to storage systems while simplifying query and schema management.

Beyond its core identity, the framework includes tools for project scaffolding, automated development workflows with hot-reloading, and optimized template rendering. It supports the construction of server-side applications through a comprehensive set of utilities for managing state, handling messaging, and integrating external data sources.

## Tags

### Web Development

- [Elixir Frameworks](https://awesome-repositories.com/f/web-development/web-frameworks/elixir-frameworks.md) — Provides a server-side web framework built for the Elixir programming language and the Erlang virtual machine.
- [Server-Side Application Platforms](https://awesome-repositories.com/f/web-development/server-side-application-platforms.md) — Implements the model-view-controller pattern to structure web applications that handle incoming requests and render responses directly on the server. ([source](https://phoenix.hexdocs.pm/))
- [Server-Side Application Toolkits](https://awesome-repositories.com/f/web-development/server-side-application-toolkits.md) — Builds robust web applications using the model-view-controller pattern to process requests and render dynamic content directly on the server.
- [Real-Time Frameworks](https://awesome-repositories.com/f/web-development/web-applications/real-time-frameworks.md) — Provides a platform for real-time web communication using persistent bidirectional connections to broadcast live updates to clients.

### Networking & Communication

- [Real-Time Web Communication](https://awesome-repositories.com/f/networking-communication/real-time-web-communication.md) — Maintains persistent bidirectional connections between servers and clients to push live data updates instantly.
- [Real-time Notification Broadcasters](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/real-time-notification-broadcasters.md) — Sends data changes to connected clients immediately through persistent channels to ensure users always see the most current information. ([source](https://phoenix.hexdocs.pm/))
- [Server-to-Client Event Emissions](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-paradigms/server-to-client-event-emissions.md) — Maintains persistent bidirectional links to servers to exchange messages and receive live updates instantly. ([source](https://phoenix.hexdocs.pm/js))
- [Pub-Sub Messaging](https://awesome-repositories.com/f/networking-communication/pub-sub-messaging.md) — Routes real-time events through a distributed message bus that broadcasts updates to specific client groups connected via persistent sockets.

### Software Engineering & Architecture

- [Model-View-Controller Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/model-view-controller-frameworks.md) — Provides a structured environment for developing web applications that separates data management, user interface rendering, and request handling logic.
- [Database Abstraction Layers](https://awesome-repositories.com/f/software-engineering-architecture/database-abstraction-layers.md) — Provides a unified interface to interact with relational databases while decoupling business logic from specific storage backends.
- [Actor-Based Concurrency](https://awesome-repositories.com/f/software-engineering-architecture/actor-based-concurrency.md) — Uses lightweight isolated processes to handle individual user connections and tasks, ensuring high scalability and fault tolerance.
- [State Reconciliation](https://awesome-repositories.com/f/software-engineering-architecture/state-reconciliation.md) — Maintains primary application state on the server and synchronizes incremental UI changes to clients to ensure consistent view rendering.

### Data & Databases

- [Relational Persistence Layers](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/data-persistence-storage/data-storage-layers/relational-persistence-layers.md) — Maps application data structures to relational database systems while simplifying query and schema management.
- [Relational Database Connectors](https://awesome-repositories.com/f/data-databases/relational-database-connectors.md) — Manages persistent application data through a structured abstraction layer that simplifies reading and writing information across relational database systems.

### Development Tools & Productivity

- [Hot-Reloading Systems](https://awesome-repositories.com/f/development-tools-productivity/hot-reloading-systems.md) — Monitors source code changes during development to trigger automatic recompilation and browser updates without requiring a full application restart.
- [Template Compilation Tools](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/template-compilation-tools/template-compilation-tools.md) — Transforms dynamic view files into optimized functional code during the build process to minimize runtime overhead.
