Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion versions/3.x/api-presenter.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ meta:

## API Presenter

### Introduction
The API Presenter provides a clean, consistent way to transform your application’s data models into structured API responses.

Instead of returning raw Entity models or arrays directly from your controllers, the Presenter layer allows you to:
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Authentication
### Introduction
Authentication is a fundamental part of most web applications. It ensures that users can securely log in, access protected resources, and maintain session integrity. Doppar simplifies this process by providing built-in tools and scaffolding to help you implement user authentication quickly and securely.

With a single command, you can generate the routes, controllers, and views necessary for user `login`, `registration`, and `logout`. Doppar's authentication system is built on top of robust components like session handling and secure password hashing, ensuring your users' data remains protected.
Expand Down
2 changes: 0 additions & 2 deletions versions/3.x/caching.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ meta:

## Caching

### Introduction

Every production application reaches a point where the same data gets
fetched repeatedly: the same database query, the same API response, the
same computed payload. Caching breaks that cycle. Instead of running the
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/collections.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Collections
### Introduction
Doppar provides a convenient and fluent Collection class built on top of the powerful `ramsey/collection` package. Collections are an elegant and flexible way to work with arrays of data, especially when you want to perform transformations, filtering, grouping, and other operations in a chainable and expressive syntax.

In Doppar, the Collection class enhances `Ramsey\Collection\Collection` with additional utility methods and integrations tailored for Doppar's ecosystem, including Entity model support and developer-friendly features like memory usage tracking and deep flattening. To make it easy to work with collections, Doppar provides the global `collect()` helper function:
Expand Down
2 changes: 0 additions & 2 deletions versions/3.x/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ meta:

## Configuration

### Introduction

All configuration files for the Doppar framework are located in the `config` directory. These files define various options and settings that control how different parts of your application behave. Each configuration file is self-documented, so you are encouraged to explore and familiarize yourself with the available options.

Doppar stores the compiled configuration cache in the following path `storage/framework/cache/*`. Doppar usage this config data where needed from this complied cache file.
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/controllers.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Controllers
### Introduction
Rather than defining all request-handling logic as closures in route files, you can use controller classes to organize related functionality. Controllers centralize request handling, making your code more structured and maintainable. For example, a UserController can manage user-related actions like displaying, creating, updating, and deleting users. By default, controllers are stored in the `app/Http/Controllers` directory.

## Controller Auto-Discovery
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/datetime.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Datetime
### Introduction
Doppar provides a robust and flexible system for working with dates and times, thanks to its integration with the Carbon library. However, understanding how timezones are managed—especially when using functions like `now()` or `Carbon::now()`—can be important when building applications that rely on accurate time data.

By default, Doppar uses UTC as the base timezone for datetime functions such as `now()` and `Carbon::now()`.
Expand Down
2 changes: 0 additions & 2 deletions versions/3.x/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ meta:
---

## Deployment
### Introduction

Deploying a Doppar application is straightforward and optimized for both development and production environments. This guide outlines the essential steps to get your Doppar app running on a live server.

## Server Requirements
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/directory-structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Directory Structure
### Introduction
Doppar aims to provide a clean, expressive, and scalable codebase that accelerates web application development while remaining easy to understand and extend. Whether you're building RESTful APIs, full-stack web applications, or microservices, Doppar offers the foundation and flexibility you need.

The framework is built around familiar conventions and emphasizes simplicity without compromising on power. It features an MVC (Model-View-Controller) architecture, a powerful routing system, middleware support, a service provider-based bootstrapping mechanism, and organized directory structures. Additionally, it integrates seamlessly with Composer for dependency management and supports environment-based configuration via .env files.
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/doppar-ai.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## AI
### Introduction
Doppar AI is a powerful component that brings advanced artificial intelligence capabilities to your PHP applications. It is built on top of **[Symfony AI](https://github.com/symfony/ai)** and **[Transformers.php](https://github.com/CodeWithKyrian/transformers-php)**, providing a smooth integration of machine learning models and large language models (LLMs) into your Doppar ecosystem.

It provides two main components: **`Pipeline`** for running transformer-based machine learning tasks locally, and **`Agent`** for interacting with cloud-based large language models (LLMs) like OpenAI and Gemini. Whether you need sentiment analysis, text generation, image classification, or conversational AI, Doppar AI makes it simple and accessible.
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/doppar-airbend.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ meta:

## Airbend

### Introduction
Doppar Airbend is a high-performance, real-time broadcasting component of the Doppar PHP Framework, engineered to deliver seamless WebSocket-based event broadcasting, robust channel authorization, and comprehensive performance monitoring. Designed for modern, scalable web applications, Airbend allows developers to build interactive and collaborative features—such as live notifications, chat systems, dashboards, and multiplayer experiences—directly within the Doppar ecosystem.

Airbend is highly configurable, offering schema-driven validation and caching mechanisms for robust configuration management. It also includes a comprehensive metrics and monitoring suite, allowing teams to track connection states, message flows, memory usage, and performance statistics in real time. With built-in CLI commands, PHP attributes for declarative event broadcasting, and a developer-friendly facade interface, Doppar Airbend empowers developers to implement real-time features with minimal overhead while maintaining full control over the broadcasting pipeline.
Expand Down
2 changes: 0 additions & 2 deletions versions/3.x/doppar-axios.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ meta:

## Axios

### Introduction

Doppar Axios is a modern, feature-rich HTTP client for PHP, inspired by the simplicity of JavaScript clients like Axios but built on top of Symfony's robust `HttpClient`. Does not depends on doppar internal core, you can use it any PHP application. It does not depend on any internal Doppar core, making it suitable for use in any PHP application.

## Features
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/doppar-bloom.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Bloom Filter
### Introduction
A Bloom filter is a space-efficient probabilistic data structure, conceived by Burton Howard Bloom in 1970, that is used to test whether an element is a member of a set. False positive matches are possible, but false negatives are not – in other words, a query returns either "possibly in set" or "definitely not in set". Elements can be added to the set, but not removed (though this can be addressed with a "counting" filter); the more elements that are added to the set, the larger the probability of false positives.

Doppar’s Bloom package provides a high-performance, memory-efficient probabilistic set membership test. Instead of storing every item, it keeps a compact bit array and uses hashing to answer: “Is this element possibly in the set?” (false positives possible, false negatives impossible).
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/doppar-flarion.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Flarion - API Authentication
### Introduction
Flarion provides a lightweight API authentication system for the Doppar framework.

Flarion allows each user of Doppar application to generate and manage multiple API tokens. These tokens are stateless and designed for use in mobile apps, third-party clients, or any frontend that communicates via a simple token-based API.
Expand Down
2 changes: 0 additions & 2 deletions versions/3.x/doppar-guard.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ meta:

## Guard - Authorization

### Introduction

Guard is a robust and extensible authorization system designed for the Doppar framework. It provides a clean, expressive API for defining and evaluating user abilities across your application. With features like one-time temporary permissions, ability inheritance, grouped permissions, wildcard patterns, ability aliases, conditional runtime gates, and global lifecycle hooks, Guard gives you complete control over access logic without cluttering your codebase.

Guard is built to empower your Doppar applications with secure, scalable, and maintainable authorization logic. Whether you're building small tools or large systems, Guard adapts to your needs with clarity and power.
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/doppar-insight.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ meta:

## Insight

### Introduction
Doppar Insight is a request profiler for debugging, performance analysis, and traffic inspection. It gives you a clean in-browser toolbar for the current request, and it also keeps a recent request history so you can compare status codes, response times, errors, and route activity across multiple requests.

Insight is useful when you want to inspect SQL queries, cache usage, authentication state, request and response payloads, session data, logs, or performance timing without leaving the page you are working on. It is designed for day-to-day development, but it is especially helpful when you need to trace slow endpoints or understand why a route is returning `4xx` or `5xx` responses.
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/doppar-notifier.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ meta:

## Notifier

### Introduction
A notification system allows you to send messages to users across multiple channels like email, SMS, Slack, Discord, and in-app notifications. Instead of sending notifications immediately and blocking your application, Doppar's notification system runs in the background using the powerful queue system, ensuring smooth user experiences and reliable delivery even under heavy load.

Doppar notification system offers robust features including multi-channel delivery with support for `database`, `Slack`, `Discord`, and custom channel, secure model serialization that safely handles Eloquent models in notification payloads, and automatic retry logic with configurable attempts.
Expand Down
2 changes: 0 additions & 2 deletions versions/3.x/doppar-oauthic.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ meta:

## OAuthic

### Introduction

Doppar OAuthic is a modern, extensible authentication package that simplifies OAuth 2.0 integration in Doppar Framework. In addition to traditional, form-based authentication, Doppar OAuthic offers a clean, convenient interface for authenticating users via popular OAuth providers such as `Google`, `GitHub`, and `LinkedIn`. It also supports custom drivers, giving you full control over provider integrations.

Whether you're building a microservice, a SaaS product, or integrating with social platforms, Doppar OAuthic makes OAuth 2.0 secure, consistent, and easy to implement.
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/doppar-orion.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Processes
### Introduction
The Doppar Framework provides a powerful and expressive abstraction over the [Symfony Process Component](https://symfony.com/doc/current/components/process.html) via the Process facade. This feature enables developers to run and manage system-level commands and scripts with ease—whether synchronously, asynchronously, or in concurrent pools.

### Key Features
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/doppar-queue.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Queue
### Introduction
A queue is a background job processing system that allows tasks to run asynchronously instead of blocking your main application flow. It improves performance, distributes workload efficiently, and ensures time-consuming tasks are handled reliably in the background. Queues are essential for scaling modern applications and maintaining smooth user experiences.

Doppar queue system offers robust features including multiple queue support for organizing jobs by priority or category, automatic retry logic with configurable attempts and delays, and comprehensive failed job tracking for easier debugging. It supports delayed execution for scheduling jobs in the future, graceful shutdown handling to safely stop workers, and built-in memory management that automatically restarts workers when limits are exceeded.
Expand Down
2 changes: 0 additions & 2 deletions versions/3.x/doppar-twig-bridge.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ meta:

## Twig Bridge

### Introduction

The Doppar Twig Bridge is an integration layer that allows applications built on the Doppar Framework to render views using Twig, a powerful and flexible templating engine. The bridge is intentionally minimalistic and non-intrusive so you can adopt Twig progressively without disrupting your existing Odo-based templates.

This document provides an in-depth explanation of how the bridge works, how to install it, and how to use it effectively in real-world Doppar applications.
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/encryption.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Encryption
### Introduction
Doppar's encryption services provide a simple, convenient interface for encrypting and decrypting text via PHP's OpenSSL using `AES-256` and `AES-128` encryption. All of Doppar's encrypted values are signed using a message authentication code (MAC) so that their underlying value cannot be modified or tampered with once encrypted.

Before using Doppar's encrypter, you must set the key configuration option in your `config/app.php` configuration file. This configuration value is driven by the `APP_KEY` environment variable. You should use the php pool `key:generate` command to generate this variable's value since the `key:generate` command will use PHP's secure random bytes generator to build a cryptographically secure key for your application. Typically, the value of the `APP_KEY` environment variable will be generated for you during Doppar's installation.
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/entity-builder.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ meta:
- [Handling Multiple Database Connection](#handling-multiple-database-connection)

## Entity Builder
### Introduction
Doppar introduces Entity Builder, a powerful, flexible, and model-free query builder designed for developers who want full control over their database interactions — without the need for predefined data models.

With Entity Builder, you can construct, execute, and manage complex SQL queries using a clean, expressive, and chainable interface. Whether you're fetching data, inserting records, updating fields, or performing intricate joins and filters, Entity Builder brings the full power of SQL into an intuitive, object-oriented syntax that feels natural and effortless.
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/entity-orm.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ meta:
- [Handling Multiple Database Connection](#handling-multiple-database-connection)

## Entity ORM
### Introduction
Doppar introduces Entity, a modern, intuitive, and powerful Object-Relational Mapper (ORM) designed to make database interactions seamless and efficient. With Entity ORM, every database table is represented by a dedicated Data Model, providing a clean, object-oriented interface to query, insert, update, and delete records without writing raw SQL.

Beyond simple CRUD operations, Doppar Entity ORM empowers developers to build complex queries, manage relationships effortlessly, and perform advanced data operations with clarity and precision. Features like eager loading, nested relationships, and relationship-based filtering let you work with related data intuitively, reducing boilerplate code and boosting productivity.
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/error-handling.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Error Handling
### Introduction
Error handling is a crucial aspect of web application development. It not only allows you to catch and handle potential errors gracefully but also ensures that users receive meaningful feedback when something goes wrong. In the Doppar framework, managing HTTP errors is seamless and allows you to customize responses to provide a better user experience.

Whether it’s handling unexpected server errors, invalid page requests, or custom HTTP responses, Doppar provides a flexible and intuitive system for managing these issues. By using tools like the `abort()` function, custom error pages, and HTTP status codes, you can ensure that your application responds in a way that makes sense for your users.
Expand Down
2 changes: 0 additions & 2 deletions versions/3.x/facades.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ meta:

## Facades

### Introduction

Doppar facades are static proxies to services bound in the application's
service container. They give you a clean, expressive way to access
framework features without manually injecting or instantiating classes.
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/file-storage.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## File Uploads
### Introduction
Doppar's filesystem configuration file is located at `config/filesystem.php`. Within this file, you may configure all of your filesystem "disks". Each disk represents a particular storage driver and storage location. Example configurations for each supported driver are included in the configuration file so you can modify the configuration to reflect your storage preferences and credentials.

You may configure as many disks as you like and may even have multiple disks that use the same driver. But if you change any of your configuration, and that is not wokring, please clean the application configuration by running the command `config:clear`.
Expand Down
1 change: 0 additions & 1 deletion versions/3.x/flash-message.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Flash Message
### Introduction
Flash messages are short-lived session messages used to give users feedback after certain actions — like form submissions, authentication, or redirects. These messages persist only for the next HTTP request and are automatically removed after they are read.

Doppar provides an elegant and expressive syntax to retrieve flash messages during redirects, making it easy to give users a seamless experience.
Expand Down
8 changes: 3 additions & 5 deletions versions/3.x/frozen-services.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ meta:

## Frozen Services

### Introduction

Frozen Services is a container-level feature in Doppar that enforces a clear lifecycle boundary for your application's singleton services. A service marked with the `#[Immutable]` attribute is fully configurable during the application boot phase — your service providers can set it up from config files, environment variables, databases, or any external source — and then **permanently frozen** once the container completes its build.

After freezing, any attempt to mutate a property on that service throws an `ImmutableViolationException` immediately, regardless of where in the application the mutation is attempted — controllers, middleware, event listeners, closures, or anywhere else.
Expand All @@ -23,9 +21,9 @@ A Frozen Service is a singleton service whose state becomes permanently read-onl
During the boot phase, the service can be fully configured from configuration files, environment variables, databases, or any external source. Once the container completes building the service, Doppar freezes the instance and guarantees that its public state cannot change for the rest of the request lifecycle.

This creates a strict and enforceable boundary:
- *Boot phase* → configuration is allowed
- *Runtime phase* → mutation is impossible
- *Guarantee* → every consumer receives a consistent, trustworthy instance
- Boot phase → configuration is allowed
- Runtime phase → mutation is impossible
- Guarantee → every consumer receives a consistent, trustworthy instance

They eliminate an entire class of bugs caused by accidental shared-state mutation.

Expand Down
1 change: 0 additions & 1 deletion versions/3.x/hashing.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ meta:
---

## Hashing
### Introduction
Hashing is a critical part of securing sensitive data in web applications, particularly when it comes to storing passwords. Unlike encryption, which can be reversed to retrieve the original data, hashing is a one-way process designed to securely transform data (such as passwords) into a fixed-length string of characters.

When a user creates or updates their password, the application does not store the raw password. Instead, it stores a hashed version of the password, which is a unique string generated by a cryptographic algorithm. This ensures that even if the database is compromised, the actual passwords are not exposed.
Expand Down
Loading