Skip to content

🦊 Python web framework that makes development enjoyable - FastAPI + MVC + SQLModel + Interactive CLI. Ship fast without sacrificing quality.

License

Notifications You must be signed in to change notification settings

soma-smart/framefox

Repository files navigation

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.

About

🦊 Python web framework that makes development enjoyable - FastAPI + MVC + SQLModel + Interactive CLI. Ship fast without sacrificing quality.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •