Skip to main content

Modular development framework

Project description

Framefox Logo

🦊 Framefox

Swift, smart, and a bit foxy!

The Python web framework that makes development enjoyable and productive

Python Version License: MIT FastAPI SQLModel Pydantic

🚀 Quick Start📖 Documentation🎯 Examples💬 Contact🤝 Contributing


🌟 Why Framefox?

Framefox combines the speed of FastAPI with clean MVC architecture, type-safe SQLModel, robust Pydantic validation, and developer-friendly tooling. Built for developers who want to ship fast without sacrificing code quality.

What makes it special?

🎯 MVC Architecture - Clean separation with Controllers, Templates, and Repositories
🏗️ Interactive CLI - Generate components instantly with framefox create
FastAPI Foundation - Built on FastAPI with async support out of the box
🗄️ SQLModel Integration - Type-safe database models with automatic validation
📋 Pydantic Validation - Robust data validation and serialization everywhere
🔒 Security First - CSRF protection, XSS prevention, and secure authentication
🧠 Developer Friendly - Jinja2 templates, hot reload, and comprehensive debugging
📱 Modern Stack - Python 3.12+, async/await, dependency injection everywhere

Un petit mot en français

Framefox est bien un outils de l'hexagone 🇫🇷 N'hesitez pas à communiquer avec nous directement en français pour toute questions (de préférence sur linkedin). Une version de la documentation en français est également prévu !


Demo

🚀 Quick Start

Get a full web application running in 30 seconds:

# Install Framefox
pip install framefox

# Init your project
framefox init

# Start developing
framefox run

That's it! 🎉 Your app is running on http://localhost:8000

Demo

🎯 Examples

💨 Controllers with Routes

from framefox.core.routing.decorator.route import Route
from framefox.core.controller.abstract_controller import AbstractController

class UserController(AbstractController):
    
    @Route("/users", "user.index", methods=["GET"])
    async def index(self):
        users = await self.user_repository.find_all()
        return self.render("user/index.html", {"users": users})
    
    @Route("/users/{id}", "user.show", methods=["GET"])
    async def show(self, id: int):
        user = await self.user_repository.find(id)
        return self.render("user/show.html", {"user": user})

🎨 Jinja2 Templates with Built-in Functions

<!-- templates/user/index.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Users</title>
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
    <h1>Users</h1>
    
    {% for user in users %}
        <div class="user-card">
            <h3>{{ user.name }}</h3>
            <a href="{{ url_for('user.show', id=user.id) }}">View Profile</a>
        </div>
    {% endfor %}
</body>
</html>

🏗️ Architecture That Scales

my-project/
├── src/
│   ├── 🎮 controllers/     # Handle HTTP requests and business logic
│   ├── 🏛️ entity/          # Database models and entities  
│   ├── 📝 form/           # Form types and validation
│   └── 🗄️ repository/     # Data access layer
├── 🎨 templates/          # Jinja2 templates with template inheritance
├── ⚙️ config/             # YAML configuration files
├── 🌐 public/            # Static assets (CSS, JS, images)
└── 📋 main.py            # Application entry point

Clean MVC separation means your code stays maintainable as your team and project grow.

🔥 Core Features

🚄 Performance

  • FastAPI foundation
  • Async/await support
  • Built-in template caching
  • Dependency injection container
  • Repository pattern for data access

🛡️ Security

  • CSRF token generation
  • XSS prevention in templates
  • Secure session management
  • User authentication system
  • Role-based access control

🧰 Developer Experience

  • Interactive CLI commands
  • Component generators
  • Hot reload development server
  • Comprehensive error pages
  • Built-in profiler and debugger

🗃️ Database & ORM

  • SQLModel integration for type safety
  • Pydantic validation everywhere
  • Entity-Repository pattern
  • Database migrations with Alembic
  • Relationship mapping
  • Query builder integration
  • Multi-database support

🛠️ Interactive CLI

Framefox includes a powerful CLI for rapid development:

# Generate components instantly
framefox create controller
framefox create entity
framefox create crud       # Full CRUD with templates

# Database management
framefox database create-migration
framefox database upgrade

# Development tools
framefox server              # Start development server
framefox debug router       # List all routes
framefox cache clear        # Clear application cache

🎨 Template System

Framefox uses Jinja2 with powerful built-in functions:

🔧 Built-in Template Functions

  • {{ url_for('route.name', param=value) }} - Generate URLs from route names
  • {{ asset('path/file.css') }} - Asset management with versioning
  • {{ csrf_token() }} - CSRF protection
  • {{ current_user }} - Access authenticated user
  • {{ get_flash_messages() }} - Session-based notifications

🏗️ Template Inheritance

<!-- base.html -->
<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}My App{% endblock %}</title>
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
    <nav>
        <!-- Navigation with authentication -->
        {% if current_user %}
            <span>Welcome, {{ current_user.name }}!</span>
        {% endif %}
    </nav>
    
    <main>
        {% block content %}{% endblock %}
    </main>
</body>
</html>

📚 Learn More

📖 Resource 🎯 Perfect For
📋 Installation Guide Getting up and running
🎮 Controllers Guide Building your application logic
🎨 Templates Guide Creating beautiful views
🔐 Security Guide Securing your application
🧪 Testing Guide Writing comprehensive tests
🚀 Deployment Guide Going to production

💬 Contact

LinkedIn SOMA

Need help or have questions? Contact us directly!


🤝 Contributing

We ❤️ contributors! Here's how you can help:

🆕 For New Contributors

  1. 🍴 Fork the repository
  2. 🌿 Create a feature branch: git checkout -b feature/amazing-feature
  3. 💾 Commit your changes: git commit -m 'Add amazing feature'
  4. 📤 Push to the branch: git push origin feature/amazing-feature
  5. 🔄 Open a Pull Request

🎯 Good First Issues

  • 📝 Improve documentation
  • 🐛 Fix small bugs
  • ✨ Add examples
  • 🧪 Write tests

For any questions about contributing, feel free to contact us directly on LinkedIn!


🏆 Support the Project

If Framefox helps you build amazing things:

Star this repository
🐦 Share on social media
📝 Write a blog post
🔗 Share with friends

Your support means the world to us! 🙏

🛣️ Roadmap

🚧 What's Coming Next

Framefox is actively developed with exciting features on the horizon!

In Progress

  • Advanced Testing Suite - Built-in testing utilities and fixtures (we know Framefox lack of more tests)
  • Internationalization (i18n) - Multi-language support with automatic translation management
  • WebSocket Support - Real-time features with integrated WebSocket handling
  • Enhanced Profiler - Advanced performance monitoring and optimization tools
  • Better Security control - Role Hierachy, rate limiting, Security Header configuration
  • Functional Worker - Background task with a command to generation task

🚀 Future Vision

  • ☁️ Cloud Deploy Tools - Built-in deployment to AWS, GCP, and Azure
  • 🎨 Visual Admin Panel - Auto-generated admin interface for your models
  • 📱 Mobile API Generator - Automatic REST API generation for mobile apps

🇫🇷 Documentation française

  • 📚 Documentation complète en français - Guide complet et tutoriels
  • 🎥 Tutoriels vidéo - Série de vidéos explicatives

📢 Want to Influence the Roadmap?

Your feedback shapes Framefox's future! Contact us on LinkedIn to:

  • 💡 Suggest new ideas
  • 🤝 Collaborate on development
  • 🧪 Beta test upcoming features
  • 🗳️ Vote on priority features (maybe!)

Contact Us

👥 Core Team

🏢 Backed by SOMA Smart

SOMA Smart

Framefox is proudly backed by SOMA Smart, a technology company focused on data transformation and building innovative development tools.

Rayen Raphaël
Rayen BOUMAZA Raphaël LEUROND
Framework Architect Core Developer
🏗️ Architecture & Performance 🔧 Features & DevX

🌟 About SOMA Smart

SOMA Smart is committed to empowering developers with cutting-edge tools and frameworks. Framefox represents our vision of making Python web development more productive, secure, and enjoyable.

  • 🚀 Innovation-driven development approach
  • 🔧 Open-source commitment and community focus
  • 🌍 Global team of passionate developers
  • 📈 Long-term support and continuous improvement

Learn more about SOMA Smart →

---

🦊 Swift, smart, and a bit foxy!

Framefox makes Python web development enjoyable and productive.

Star us on GitHub

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

framefox-1.1.0.tar.gz (399.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

framefox-1.1.0-py3-none-any.whl (528.6 kB view details)

Uploaded Python 3

File details

Details for the file framefox-1.1.0.tar.gz.

File metadata

  • Download URL: framefox-1.1.0.tar.gz
  • Upload date:
  • Size: 399.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for framefox-1.1.0.tar.gz
Algorithm Hash digest
SHA256 84c6b6ea0106b59f7e150805f344e3eecd3bd5bc1c989630a55596cd25f895c7
MD5 ca841c226e5c98c4d68b9710a75f3a64
BLAKE2b-256 1d0fed2f11d6815d4580e31e2ef2d1266d548d2ba097f607e010d4c8d1856b47

See more details on using hashes here.

Provenance

The following attestation bundles were made for framefox-1.1.0.tar.gz:

Publisher: release.yml on soma-smart/framefox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file framefox-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: framefox-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 528.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for framefox-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d4c71f19ca2e8ce949b0b15322ca9d965a3a96b48be1826ca427cd3ca43e625e
MD5 1684a1016aa4863646467d5c8e155831
BLAKE2b-256 9bcd7a7e07e5789df5111ba40d697c36c4ae03bedc137f6ac5b7ed44daf379ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for framefox-1.1.0-py3-none-any.whl:

Publisher: release.yml on soma-smart/framefox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page