Modular development framework
Project description
🦊 Framefox
Swift, smart, and a bit foxy!
The Python web framework that makes development enjoyable and productive
🚀 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 !
🚀 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
🎯 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
🛡️ Security
|
🧰 Developer Experience
🗃️ Database & ORM
|
🛠️ 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
- 💼 Company LinkedIn: SOMA Smart
- 👤 Rayen BOUMAZA: LinkedIn
- 👤 Raphaël LEUROND: LinkedIn
- 📖 Documentation: soma-smart.github.io
🤝 Contributing
We ❤️ contributors! Here's how you can help:
🆕 For New Contributors
- 🍴 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
🎯 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!)
👥 Core Team
🏢 Backed by SOMA Smart
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 |
🌟 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
🦊 Swift, smart, and a bit foxy!
Framefox makes Python web development enjoyable and productive.
📄 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84c6b6ea0106b59f7e150805f344e3eecd3bd5bc1c989630a55596cd25f895c7
|
|
| MD5 |
ca841c226e5c98c4d68b9710a75f3a64
|
|
| BLAKE2b-256 |
1d0fed2f11d6815d4580e31e2ef2d1266d548d2ba097f607e010d4c8d1856b47
|
Provenance
The following attestation bundles were made for framefox-1.1.0.tar.gz:
Publisher:
release.yml on soma-smart/framefox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
framefox-1.1.0.tar.gz -
Subject digest:
84c6b6ea0106b59f7e150805f344e3eecd3bd5bc1c989630a55596cd25f895c7 - Sigstore transparency entry: 241480874
- Sigstore integration time:
-
Permalink:
soma-smart/framefox@28ce45643834f8f4147a854701bce657deec17b5 -
Branch / Tag:
refs/tags/1.1.0-fennec - Owner: https://github.com/soma-smart
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@28ce45643834f8f4147a854701bce657deec17b5 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4c71f19ca2e8ce949b0b15322ca9d965a3a96b48be1826ca427cd3ca43e625e
|
|
| MD5 |
1684a1016aa4863646467d5c8e155831
|
|
| BLAKE2b-256 |
9bcd7a7e07e5789df5111ba40d697c36c4ae03bedc137f6ac5b7ed44daf379ac
|
Provenance
The following attestation bundles were made for framefox-1.1.0-py3-none-any.whl:
Publisher:
release.yml on soma-smart/framefox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
framefox-1.1.0-py3-none-any.whl -
Subject digest:
d4c71f19ca2e8ce949b0b15322ca9d965a3a96b48be1826ca427cd3ca43e625e - Sigstore transparency entry: 241480880
- Sigstore integration time:
-
Permalink:
soma-smart/framefox@28ce45643834f8f4147a854701bce657deec17b5 -
Branch / Tag:
refs/tags/1.1.0-fennec - Owner: https://github.com/soma-smart
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@28ce45643834f8f4147a854701bce657deec17b5 -
Trigger Event:
release
-
Statement type: