Expand description
§anyform
Any database. Any form. Zero hassle.
§Features
- Schema-driven forms: Define forms in the database, not code
- Multiple output formats: JSON, HTML, Tera templates
- Multi-step wizards: Progress tracking with conditional logic
- Survey & quiz support: Scoring, results, analytics
- Multi-database: SQLite, PostgreSQL, MySQL via SeaORM
§Quick Start
ⓘ
use axum::{Router, Extension};
use anyform::AnyFormRouter;
use sea_orm::Database;
#[tokio::main]
async fn main() {
let db = Database::connect("sqlite:forms.db").await.unwrap();
let app = Router::new()
.merge(AnyFormRouter::new(db.clone()))
.layer(Extension(db));
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
axum::serve(listener, app).await.unwrap();
}Re-exports§
pub use migration::Migrator;pub use init::init_schema;pub use entities::field::ActiveModel as FieldActiveModel;pub use entities::field::Entity as FieldEntity;pub use entities::field::Model as Field;pub use entities::field_option::ActiveModel as FieldOptionActiveModel;pub use entities::field_option::Entity as FieldOptionEntity;pub use entities::field_option::Model as FieldOption;pub use entities::form::ActiveModel as FormActiveModel;pub use entities::form::Entity as FormEntity;pub use entities::form::Model as Form;pub use entities::result::ActiveModel as ResultActiveModel;pub use entities::result::Entity as ResultEntity;pub use entities::result::Model as FormResult;pub use entities::step::ActiveModel as StepActiveModel;pub use entities::step::Entity as StepEntity;pub use entities::step::Model as Step;pub use entities::submission::ActiveModel as SubmissionActiveModel;pub use entities::submission::Entity as SubmissionEntity;pub use entities::submission::Model as Submission;pub use schema::FieldValue;pub use schema::FormSettings;pub use schema::ScaleLabels;pub use schema::UiOptions;pub use schema::ValidationRules;pub use schema::ValueType;pub use condition::ConditionOp;pub use condition::ConditionRule;pub use seed::clear_seeded_forms;pub use seed::seed_all;pub use seed::seed_contact_form;pub use seed::seed_feedback_form;pub use seed::seed_quiz_form;pub use error::FormError;pub use error::IntoApiError;pub use error::StepValidationErrors;pub use error::ValidationErrors;pub use validation::is_field_visible;pub use validation::is_step_visible;pub use validation::validate_field;pub use validation::validate_multi_step_submission;pub use validation::validate_step;pub use validation::validate_submission;pub use services::CreateFieldInput;pub use services::CreateFormInput;pub use services::CreateOptionInput;pub use services::CreateStepInput;pub use services::FormBuilder;pub use extractors::FormSubmission;pub use extractors::RequestId;pub use extractors::ValidatedSubmission;pub use response::ApiError;pub use response::ApiResponse;pub use response::PaginationInfo;pub use render::FormJson;pub use render::HtmlOptions;pub use render::HtmlRenderer;pub use render::JsonRenderer;pub use render::TeraRenderer;
Modules§
- condition
- Condition rules for dynamic step/field visibility.
- entities
- SeaORM entity definitions for anyform.
- error
- Error types for anyform.
- extractors
- Axum extractors for form handling.
- init
- Schema initialization for embedded use.
- migration
- render
- Form rendering to different output formats.
- response
- API response envelope types.
- schema
- Schema types for form definitions.
- seed
- Database seeding for example forms.
- services
- Service layer for anyform.
- validation
- Form validation engine.
Traits§
- Migrator
Trait - Performing migrations on a database