The Python web framework that makes development enjoyable and productive
🚀 Quick Start • 📖 Documentation • 🎯 Examples • 💬 Contact • 🤝 Contributing
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.
🎯 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
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 !
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
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})
<!-- 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>
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.
|
|
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
Framefox uses Jinja2 with powerful built-in 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
<!-- 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>
📖 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 |
- 💼 Company LinkedIn: SOMA Smart
- 👤 Rayen BOUMAZA: LinkedIn
- 👤 Raphaël LEUROND: LinkedIn
- 📖 Documentation: soma-smart.github.io
We ❤️ contributors! Here's how you can help:
- 🍴 Fork the repository
- 🌿 Create a feature branch:
git checkout -b feature/amazing-feature
- 💾 Commit your changes:
git commit -m 'Add amazing feature'
- 📤 Push to the branch:
git push origin feature/amazing-feature
- 🔄 Open a Pull Request
- 📝 Improve documentation
- 🐛 Fix small bugs
- ✨ Add examples
- 🧪 Write tests
For any questions about contributing, feel free to contact us directly on LinkedIn!
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! 🙏
Follow our journey and see how Framefox is growing with the community
Each star motivates us to improve Framefox further! ⭐
- 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
- ☁️ 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 complète en français - Guide complet et tutoriels
- 🎥 Tutoriels vidéo - Série de vidéos explicatives
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!)
Framefox is proudly backed by SOMA Smart, a technology company focused on data transformation and building innovative development tools.
![]() |
![]() |
---|---|
Rayen BOUMAZA | Raphaël LEUROND |
Framework Architect | Core Developer |
🏗️ Architecture & Performance | 🔧 Features & DevX |
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
Framefox makes Python web development enjoyable and productive.
This project is licensed under the MIT License - see the LICENSE file for details.