# Adminix is an [à la django admin](https://docs.djangoproject.com/en/4.0/ref/contrib/admin/#) for [actix](https://actix.rs/) - [sqlx](https://github.com/launchbadge/sqlx) ## Getting started see example/ ## Strategy / Tradeoffs Adminix is implemented with [procedural macros](https://doc.rust-lang.org/reference/procedural-macros.html). A compile type, it introspects the database and builds routes and handlers for the actix server. These handler are simple crud route implemented with SSR, using the [Maud](https://maud.lambda.xyz/) templating library. It use the sqlx query! macro to confirm at compilation time that the queries generated by the macro are compatible with the datase. Pros : - Adminix is quite simple by itself : only hundreds lines of code - Adminix is quite robust : compilation give lot of assurence of correct behavior - It's really easy to add to existing actix / sqlx project where the database is the source of thruth Cons : - adminix is not an rest API so if you want a now classical back/front architecture, you are on your own - some ## ⚠ Very very alpha A lot of assumption where made : - actix "3" and sqlx "4" - Sqlite only - Every table must have an INTEGER "id" primary key - Foreign key only target "id" Also, i'm not a proficient rust developper. ## ⚠ No embeded security It's up to the application to ensure authentification. Use gards ! ## Support / Roadmap | | | :---:| --- |☑|Basic CRUD |☑|sqlite |☐|postgres |☐|mysql ? |☑|foreign key link |☐|save nullable (option) |☐|foreign key edit |☑|reverse foreign key link |☑|filter on back |☑|smart table in front (sort, filter) |☑|home page / template |☐|pagination |☐|image blob support (readonly) |☐|multiple blob file type |☐|testing (proc macro + async = 🤔) |☐|support non id primary key ? |☐|support non id foreign key target ? ## Help welcome ! Please, fill issues ! I'm also accepting merge requests, ping me if I'm not reactive enough : ( f"julienfr{ meaning_of_life + 70 }@gmail.com" )