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 run            # 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
🚀 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! 🙏

📈 Star History

Follow our journey and see how Framefox is growing with the community

Star History Chart

Each star motivates us to improve Framefox further! ⭐


🛣️ 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.3.tar.gz (436.8 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.3-py3-none-any.whl (584.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: framefox-1.1.3.tar.gz
  • Upload date:
  • Size: 436.8 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.3.tar.gz
Algorithm Hash digest
SHA256 c8c0badd7d274234edd5bbad3fd41df0a1a289f099887d600ad5c6c58e858727
MD5 75de5dee7dee12d9c6239e4e99bd96c7
BLAKE2b-256 39f91a01c4b45ba3ded6332afdd525215cef220be1aa47047b99f738d2fe1c8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for framefox-1.1.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: framefox-1.1.3-py3-none-any.whl
  • Upload date:
  • Size: 584.5 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3b3d8a78fbfd8261266c243f9a5b132e6bb0915e6a695f0ccb52dc95f6dd5efd
MD5 bf518f8baf9b42e780cae6881184465d
BLAKE2b-256 7df3a4f2c524df132140e11dfe4dac73f45de913554415d61c4a10877fa3f463

See more details on using hashes here.

Provenance

The following attestation bundles were made for framefox-1.1.3-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