# Magic documentation > Magic brings Laravel's facades, Eloquent-style models, service providers and routing to Flutter, so Laravel developers feel at home. ## Getting Started - [Installation](https://anilcancakir.com/magic/docs/v0.0/getting-started/installation.md): Magic is a Laravel-inspired Flutter framework: add the package, call Magic.init(), and your app gains an IoC container, 18 facades, Eloquent ORM, routing… - [Configuration](https://anilcancakir.com/magic/docs/v0.0/getting-started/configuration.md): Magic's configuration system lets you load, read, write, and inspect application settings at runtime using the Config facade with dot-notation keys. - [Directory Structure](https://anilcancakir.com/magic/docs/v0.0/getting-started/directory-structure.md): The default Magic project layout organizes your app into folders that mirror Laravel's conventions, making it easy to locate controllers, models, routes… - [Service Providers](https://anilcancakir.com/magic/docs/v0.0/getting-started/service-providers.md): Service providers are the central bootstrapping point for Magic applications: each provider's register method binds services into the IoC container, and boot… ## Architecture - [Application Structure](https://anilcancakir.com/magic/docs/v0.0/architecture/application-structure.md): Six primitives divide a magic app's write-heavy screens the way Laravel divides a controller-heavy one: each owns exactly one kind of state, and none of them… - [Request Lifecycle](https://anilcancakir.com/magic/docs/v0.0/architecture/request-lifecycle.md): Understanding the Magic request lifecycle helps you know exactly where your service providers, middleware, and controllers run relative to each bootstrap step. - [Service Container](https://anilcancakir.com/magic/docs/v0.0/architecture/service-container.md): The Magic service container is a string-keyed IoC container for registering factory closures and resolving singletons across your application without relying… - [Facades](https://anilcancakir.com/magic/docs/v0.0/architecture/facades.md): Facades provide a clean, static interface to the services bound in Magic's IoC container, giving you expressive one-liners without sacrificing testability or… ## The Basics - [Routing](https://anilcancakir.com/magic/docs/v0.0/basics/routing.md): Magic's routing wraps go_router with a Laravel-style fluent API: define routes with MagicRoute.page(), group them with middleware and layouts, and navigate… - [Middleware](https://anilcancakir.com/magic/docs/v0.0/basics/middleware.md): Middleware lets you inspect and filter navigation requests before they reach a route, making it the right place for authentication guards, permission checks… - [Controllers](https://anilcancakir.com/magic/docs/v0.0/basics/controllers.md): Controllers extend MagicController (a ChangeNotifier) to hold reactive state, run validation, and dispatch navigation, keeping business logic out of the widget… - [Views](https://anilcancakir.com/magic/docs/v0.0/basics/views.md): Views extend MagicView or MagicStatefulView to give each screen a typed controller reference, async-state rendering helpers, and a clean MVC separation between… - [Forms](https://anilcancakir.com/magic/docs/v0.0/basics/forms.md): Magic provides a complete form handling system: MagicFormData for centralized form state, Wind form widgets for UI, FormRequest classes for structured… - [Actions](https://anilcancakir.com/magic/docs/v0.0/basics/actions.md): MagicAction is a stateless, single-purpose write unit, Fortify's Actions\* ported: a subclass takes one input, does one write, and throws on failure… - [HTTP Client](https://anilcancakir.com/magic/docs/v0.0/basics/http-client.md): Magic provides a powerful HTTP client through the Http facade, built on top of Dio, with a clean API for making requests and handling responses. - [UI Helpers](https://anilcancakir.com/magic/docs/v0.0/basics/ui-helpers.md): Magic provides context-free UI feedback utilities, reactive widget builders, declarative page-title management, responsive layouts, form-processing helpers… ## Eloquent ORM - [Eloquent: Getting Started](https://anilcancakir.com/magic/docs/v0.0/eloquent/getting-started.md): Eloquent is Magic's active-record ORM: define models as Dart classes, run queries with a fluent builder, and persist to SQLite or a remote REST backend using… - [Eloquent: Mutators](https://anilcancakir.com/magic/docs/v0.0/eloquent/mutators.md): Accessors, mutators, and attribute casts let you transform Eloquent model values automatically as they are read from or written to the database, without… - [Repositories](https://anilcancakir.com/magic/docs/v0.0/eloquent/repositories.md): Repository is an id-keyed cache of one remote resource's rows, Eloquent's identity map for a client with no query builder; RepositoryQuery is one… - [Eloquent: Serialization](https://anilcancakir.com/magic/docs/v0.0/eloquent/serialization.md): Eloquent models can be serialized to maps and JSON strings with a single call, with support for hiding sensitive attributes and appending computed values to… ## Security - [Authentication](https://anilcancakir.com/magic/docs/v0.0/security/authentication.md): Magic provides a frontend-focused authentication system with secure token storage, user caching, automatic token refresh, and support for multiple configurable… - [Authorization](https://anilcancakir.com/magic/docs/v0.0/security/authorization.md): Magic's authorization system lets you define and check user abilities via the Gate facade, with support for policies, super-admin bypasses, and declarative UI… - [Security: Vault](https://anilcancakir.com/magic/docs/v0.0/security/vault.md): The Vault facade provides a simple interface for reading and writing sensitive data to the platform's native secure storage, with a fake implementation for… - [Security: Encryption](https://anilcancakir.com/magic/docs/v0.0/security/encryption.md): The Crypt facade encrypts and decrypts text using AES-256-CBC, emitting a compact base64(iv):base64(ciphertext) payload so calling code never handles the… ## Digging Deeper - [Helpers](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/helpers.md): Str, Number, and Arr are static namespace helpers modelled on Laravel's Support layer, and Cast is magic's own, together covering locale-aware casing… - [Validation](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/validation.md): Magic provides a client-side validation system that integrates with Flutter forms, resolves error messages through the Lang facade, and extends to async rules… - [Localization](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/localization.md): Magic provides a Laravel-style localization system that lets you retrieve and switch translation strings at runtime without needing BuildContext. - [Logging](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/logging.md): The Log facade provides a Laravel-style logging API with configurable channels, minimum log levels, and a stack channel for fanning output to multiple drivers… - [Cache](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/cache.md): Magic provides an expressive, unified API for various caching backends, with built-in event dispatching so you can react to cache reads, writes, and removals. - [Session & Flash Data](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/session.md): The Session facade provides flash data that survives exactly one navigation hop, letting you pass form input and validation errors across a back-navigation… - [Session Scope](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/session-scope.md): SessionScope keeps every cached controller and repository pointed at the identity that is authenticated right now, so a login after a logout, or a team switch… - [Events](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/events.md): Magic's event system provides a simple observer implementation, letting you decouple side effects from application actions by dispatching named events and… - [File Storage](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/file-storage.md): The Storage facade provides a unified API for reading, writing, and deleting files across multiple named disks, with built-in support for remote downloads and… - [Carbon (Date/Time)](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/carbon.md): Carbon is Magic's date and time utility, inspired by PHP's Carbon library, offering a fluent API for creating, formatting, manipulating, and comparing date… - [Launch](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/launch.md): The Launch facade provides a context-free static API for opening URLs, composing emails, initiating phone calls, and sending SMS messages, returning false on… - [Perf Hooks](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/perf-hooks.md): MagicPerfHooks.sink is the one seam a diagnostic reads magic's runtime activity through: which controller repainted and why, what a repository merged, how long… - [Broadcasting](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/broadcasting.md): Magic provides a Laravel Echo-equivalent broadcasting system for real-time WebSocket communication in Flutter apps. - [Encryption](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/encryption.md): Magic's Crypt facade wraps AES-256-CBC encryption and decryption behind a simple API, while the Vault facade stores sensitive values in the platform's native… - [File Picker](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/file-picker.md): The Pick facade provides a unified interface for accessing the device camera, media gallery, and file system, returning a consistent MagicFile object… - [Sync](https://anilcancakir.com/magic/docs/v0.0/digging-deeper/sync.md): The sync skeleton is a push-then-pull loop over one resource, for an app that keeps a local store consistent with a server across many devices. ## Testing - [Testing: Getting Started](https://anilcancakir.com/magic/docs/v0.0/testing/getting-started.md): Magic is built with testing in mind: it integrates with Dart's test package and provides helpers for resetting the IoC container, faking facades, and asserting… - [HTTP Tests](https://anilcancakir.com/magic/docs/v0.0/testing/http-tests.md): Http.fake() lets you stub HTTP responses by URL or callback so controller and service tests run without a live server, with assertions to verify which requests… - [Facade Testing](https://anilcancakir.com/magic/docs/v0.0/testing/facades.md): Magic ships in-memory fakes for every stateful facade so tests never touch real storage, network, or platform channels. - [Database Testing](https://anilcancakir.com/magic/docs/v0.0/testing/database-testing.md): Magic's database testing utilities run every test against an in-memory SQLite instance, giving you fast and isolated model and query tests without touching the… ## Packages - [Magic CLI](https://anilcancakir.com/magic/docs/v0.0/packages/magic-cli.md): The Magic CLI is an fluttersdk_artisan plugin that ships as part of the magic package, providing magic:install, key:generate, and 20 make:* scaffold commands… - [Magic DevTools](https://anilcancakir.com/magic/docs/v0.0/packages/magic-devtools.md): Magic DevTools wires a magic app into the FlutterSDK dev-tooling ecosystem (dusk and telescope), and is loaded only under kDebugMode so release builds… ## Contributing - [Contribution Guide](https://anilcancakir.com/magic/docs/v0.0/contributing/contribution-guide.md): This guide covers everything you need to contribute to the Magic framework: local setup, coding style, testing requirements, and the pull-request process. - [Documentation Authoring Guide](https://anilcancakir.com/magic/docs/v0.0/contributing/documentation.md): This guide explains how to write, update, and maintain documentation pages in Magic's doc/ directory so they stay accurate, consistently formatted, and… ## Database - [Database: Getting Started](https://anilcancakir.com/magic/docs/v0.0/database/getting-started.md): Magic provides a simple, fluent abstraction over SQLite for running raw queries, using the query builder, and managing transactions. - [Migrations](https://anilcancakir.com/magic/docs/v0.0/database/migrations.md): Migrations are version-controlled schema definitions that let you create, modify, and inspect your SQLite tables using the Schema facade. - [Seeding](https://anilcancakir.com/magic/docs/v0.0/database/seeding.md): Database seeders let you populate your SQLite tables with test or default data using simple seeder classes and expressive model factories. ## Optional - [Magic](https://anilcancakir.com/magic): the package landing page - [Full documentation](https://anilcancakir.com/magic/docs/v0.0/llms-full.txt): every page in one file