<p align="center"><img src="https://rogervila.es/static/img/equipment-logo.png" alt="Equipment: Python Project Scaffolding Framework" height="200" /></p>

[![PyPI version](https://badge.fury.io/py/equipment.svg)](https://badge.fury.io/py/equipment)
![PyPI - Downloads](https://img.shields.io/pypi/dm/equipment)
[![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://equipment-python.vercel.app)

# Equipment: Python Project Scaffolding Framework

## 🚀 Simplify Your Python Project Setup

Equipment is a comprehensive scaffolding framework designed to streamline Python project development. It provides a robust, flexible foundation that adapts to projects of any scale - from simple scripts to complex enterprise applications.

## 🌟 Key Features

### 🔧 Dependency Injection Made Simple
- Intuitive dependency management
- Support for class-based and function-based dependencies
- Reduces boilerplate code and improves modularity

### 🏗️ Project Initialization
- One-command project creation: `equipment new my-app`
- Standardized project structure
- Consistent setup across different project types

### 📝 Advanced Logging
- Configurable logging system
- Multiple log channels and custom formatters
- Easy-to-use logging API

### ⏰ Task Scheduling
- Built-in task scheduler
- Support for periodic and recurring tasks
- Seamless queue system integration

### 📦 Queue Management
- Synchronous and Redis-based queue support
- Asynchronous task processing
- Simple task enqueuing and scheduling

### 💾 Database Integration
- SQLAlchemy ORM integration
- Multi-database driver support
- Automatic migration handling via Alembic

### 💽 Flexible Storage Management
- Filesystem abstraction layer
- Local and cloud storage support
- Easily extensible storage configuration

## 🔍 Why Equipment?

Equipment is built with developer experience in mind. It solves common Python project challenges:
- Eliminates repetitive configuration
- Provides a consistent project structure
- Supports scalability from small scripts to large applications
- Integrates seamlessly with popular Python tools and frameworks

## 🛠️ Tech Stack

Equipment leverages industry-standard libraries to provide a robust development experience:
- [Dependency Injector](https://python-dependency-injector.ets-labs.org/) for dependency management
- [SQLAlchemy](https://www.sqlalchemy.org/) as the ORM
- [Alembic](https://alembic.sqlalchemy.org/en/latest/) for database migrations
- [Redis](https://redis.io/) for advanced queuing
- [FastAPI](https://fastapi.tiangolo.com/) as the web framework

## 🚀 Quick Start

```bash
# Install Equipment
pip install equipment

# Generate a new project
equipment new my-app

# Install dependencies
cd my-app && pip install .

# Run the main application
py main.py
```

## 🤝 Community

We welcome contributions, feedback, and suggestions! Join our [GitHub Discussions](https://github.com/rogervila/equipment/discussions) to connect with the Equipment community.

## 📄 License

This project is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).

Equipment icons created by <a href="https://www.flaticon.com/free-icons/toolbox">Freepik - Flaticon</a>

## Author

[Roger Vilà](https://github.com/rogervila)
