# DogRS
**A modular Rust framework with multi-tenant services, hooks, and pluggable storage โ built to avoid stack lock-in.**
DogRS is inspired by the simplicity of FeathersJS but reimagined for Rust.
It provides a clean core for building flexible, multi-tenant applications where storage, transports, and execution environments can be swapped or extended without rewriting your app.
## โจ Features (Early Outline)
- **Multi-tenant services**
Every request and operation runs with explicit tenant context.
- **Service hooks**
Before/after/around/error pipelines for validation, logging, transforms, or anything else you need.
- **Pluggable storage backends**
Bring your own database or use multiple ones per tenant (SQL, Mongo, TypeDB, P2P, in-memory, etc.).
- **Adapter-based architecture**
Use Axum today, add Warp, Actix, Serverless, or P2P transports later.
- **No stack lock-in**
DogRS keeps your core logic clean and portable.
## ๐ฆ Published Crates
All DogRS crates are now available on [crates.io](https://crates.io):
### Core Framework
- **[dog-core](https://crates.io/crates/dog-core)** `0.1.0` โ Framework-agnostic core (services, hooks, tenants, storage contracts)
### Web Framework Adapters
- **[dog-axum](https://crates.io/crates/dog-axum)** `0.1.0` โ Axum adapter for HTTP APIs with multipart uploads and middleware
### Auth
- **[dog-auth](https://crates.io/crates/dog-auth)** `0.1.0` โ Authentication service + strategy registry (JWT issuance)
- **[dog-auth-oauth](https://crates.io/crates/dog-auth-oauth)** `0.1.0` โ Provider-agnostic OAuth strategy + orchestration
### Database Adapters
- **[dog-typedb](https://crates.io/crates/dog-typedb)** `0.1.0` โ TypeDB integration with query builders and adapters
### Storage & Infrastructure
- **[dog-blob](https://crates.io/crates/dog-blob)** `0.1.0` โ Production-ready blob storage with S3 compatibility and streaming
### Schema & Validation
- **[dog-schema](https://crates.io/crates/dog-schema)** `0.1.0` โ Schema definition and validation utilities
- **[dog-schema-macros](https://crates.io/crates/dog-schema-macros)** `0.1.0` โ Procedural macros for schema generation
- **[dog-schema-validator](https://crates.io/crates/dog-schema-validator)** `0.1.0` โ Advanced validation utilities with runtime constraints
## ๐ Quick Start
Add DogRS crates to your project:
```bash
# Core framework
cargo add dog-core
# Web development with Axum
cargo add dog-axum dog-core
# TypeDB integration
cargo add dog-typedb dog-core
# Blob storage
cargo add dog-blob
# Schema validation
cargo add dog-schema dog-schema-macros dog-schema-validator
```
## ๐ Docs
- [Configuration](docs/configuration.md)
## ๐งช Examples
- `dog-examples/auth-demo` includes an end-to-end OAuth2 Google login flow.
- Uses `dog-auth-oauth` (enable `oauth2-client` feature for the reusable `oauth2` client helper)
- Exposes OAuth endpoints via `dog-axum`
## ๐ง Status
DogRS is in active development.
The goal is to build a simple but powerful foundation for real-world Rust applications without forcing a fixed stack.
---
<div align="center">
**Made by [Jitpomi](https://github.com/Jitpomi)**
</div>
Inspiration from: [FeathersJS](https://feathersjs.com/) and [NestJS](https://nestjs.com/).