Repository navigation
PANIC! v3.0.0 - Ash Framework Migration (October 2024)
Major architectural migration to the Ash Framework, representing a complete modernization of PANIC!'s codebase.
Architecture
- SQLite + Ash Framework + GenServer
- Declarative resource definitions with Ash
- Integrated authentication via AshAuthentication
Major Changes
- Ecto contexts → Ash domains: Business logic now organized in declarative domains
- Ecto schemas → Ash resources: Data modeling with powerful built-in querying
- Custom auth → AshAuthentication: Standardized authentication with multiple strategies
- Finitomata FSM → GenServer-based NetworkRunner: Simplified process architecture
- Terminology update: 'Prediction' → 'Invocation' for clearer semantics
Benefits of Ash Framework
- Declarative resource definitions: Attributes, relationships, and actions defined in one place
- Powerful query interface: Composable queries with filtering, sorting, and loading
- Built-in authorization: Policy-based access control integrated into resources
- Code interfaces: Type-safe functions generated from resource definitions
- Extensibility: Easy to add new capabilities through Ash's extension system
Technical Improvements
- Better separation of concerns with domain-driven design
- More maintainable codebase with less boilerplate
- Type-safe interfaces throughout the application
- Improved test architecture using Ash generators
This version brings PANIC! into the modern Elixir ecosystem while maintaining backward compatibility with SQLite data storage. The Ash Framework provides a solid foundation for future development and makes the codebase significantly more maintainable.