Subscribe to Elixir Mentor if you're interested in learning how to build scalable, production ready APIs in Elixir and some DevOps along the way, please subscribe to my channel Backend Stuff, and start your backend development journey.
This is a multi-tenant task management application built with Phoenix, Ash Framework, and LiveView. The project demonstrates production-ready patterns including:
- Multi-tenancy - Full organization-based multi-tenancy with isolated data
- User Authentication - Secure authentication with email/password, password reset, and email confirmation
- Organization Management - Create and manage organizations with member roles and permissions
- Ash Framework - Leverages Ash Framework 3.0 for powerful data modeling, authorization, and API generation
- Modern UI - Built with Phoenix LiveView and TailwindCSS for a reactive user experience
- Phoenix Framework 1.8 - Web framework
- Ash Framework 3.0 - Resource-based framework for data modeling and APIs
- AshAuthentication - Comprehensive authentication solution
- AshPostgres - PostgreSQL data layer for Ash
- Phoenix LiveView - Real-time, server-rendered UI
- TailwindCSS - Utility-first CSS framework
- PostgreSQL - Primary database
To start your Phoenix server:
- Run
mix setupto install and setup dependencies - Start Phoenix endpoint with
mix phx.serveror inside IEx withiex -S mix phx.server
Now you can visit localhost:4000 from your browser.
mix setup- Install dependencies, set up database, compile assetsmix phx.server- Start the Phoenix serveriex -S mix phx.server- Start the server in interactive modemix test- Run the test suitemix precommit- Run pre-commit checks (compile, format, test)
This application is organized into Ash Framework domains:
- Accounts - User authentication, registration, and password management
- Organizations - Multi-tenant organization and membership management
Each domain contains Ash Resources that define:
- Data attributes and relationships
- Actions (CRUD operations)
- Authorization policies
- Custom business logic
The application uses organization-based multi-tenancy where:
- Each user belongs to a primary organization
- Users can be members of multiple organizations through memberships
- Organizations have owners and configurable member limits
- Data is isolated by tenant using Ash's built-in multi-tenancy support
🌐🌐 My website Elixir Mentor
🎙🎙 Check out my podcast Elixir Mentor
🆘🆘 NEED HELP?? Join the Discord Server
Linktree: @jacob_luetzow
Join the Discord server
