Framefox-Python web framework-FastAPI+MVC+SQLModel+Interactive CLI

4 months ago 14

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 !


Demo

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

💨 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

<!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>"><!-- 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.

  • FastAPI foundation
  • Async/await support
  • Built-in template caching
  • Dependency injection container
  • Repository pattern for data access
  • CSRF token generation
  • XSS prevention in templates
  • Secure session management
  • User authentication system
  • Role-based access control
  • Interactive CLI commands
  • Component generators
  • Hot reload development server
  • Comprehensive error pages
  • Built-in profiler and debugger
  • SQLModel integration for type safety
  • Pydantic validation everywhere
  • Entity-Repository pattern
  • Database migrations with Alembic
  • Relationship mapping
  • Query builder integration
  • Multi-database support

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

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

LinkedIn SOMA

Need help or have questions? Contact us directly!


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

  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
  • 📝 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! 🙏

Framefox is actively developed with exciting features on the horizon!

  • 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 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

SOMA Smart

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


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

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

Read Entire Article