# Gobe Framework
**Modern Python Web Framework with Unity Integration**
Gobe is a next-generation web framework designed to bridge the gap between web development and game development. Built with modern Python practices, it provides a familiar Django-like experience while preparing for seamless Unity integration.
## ✨ Features
### 🚀 **Modern Web Development**
- **Intuitive CLI** - Project scaffolding and management
- **Auto-routing** - Convention-based URL routing
- **Hybrid Templates** - Django + JSX-style templating
- **Powerful ORM** - Type-safe database operations
- **Built-in APIs** - REST, GraphQL, and WebSocket support
### 🎮 **Game-Ready Architecture**
- **Unity Bridge** - Future-ready game engine integration
- **Real-time Communication** - WebSocket for live gameplay
- **Game Modules** - Specialized components for game logic
- **Scalable Backend** - Built for multiplayer games
### 🛠 **Developer Experience**
- **Hot Reload** - Instant development feedback
- **Auto-migrations** - Intelligent database schema updates
- **Rich CLI** - Comprehensive command-line tools
- **Plugin System** - Extensible architecture
## 🚀 Quick Start
### Installation
```bash
pip install gobe-framework
```
### Create Your First Project
```bash
# Create a new Gobe project
gobe create-project my_game_backend
# Navigate to project
cd my_game_backend
# Start development server
gobe serve
```
Your Gobe application is now running at `http://localhost:8000`!
## 📁 Project Structure
```
my_game_backend/
├── gobe_config/ # Configuration files
│ └── settings.py
├── web_apps/ # Web applications
│ └── main/
│ ├── __init__.py
│ ├── models.py # Database models
│ ├── views.py # Request handlers
│ └── api_views.py # API endpoints
├── game_modules/ # Game-specific modules (future)
├── shared/ # Shared code
├── static/ # Static files (CSS, JS, images)
├── templates/ # HTML templates
├── api/ # API configuration
└── main.py # Application entry point
```
## 🔧 Core Concepts
### Models (ORM)
Define your data models with a clean, type-safe API:
```python
from gobe.database.orm import Model
from gobe.database.orm.fields import CharField, IntegerField, DateTimeField
class Player(Model):
username = CharField(max_length=50, unique=True)
score = IntegerField(default=0)
level = IntegerField(default=1)
created_at = DateTimeField(auto_now_add=True)
# Query your data
players = Player.objects.filter(level__gt=5).order_by('-score')
top_player = Player.objects.get(username='champion')
```
### Views
Handle requests with class-based or function-based views:
```python
from gobe.web.views import View
from gobe.web.routing import get, post
class LeaderboardView(View):
template_name = 'leaderboard.html'
def get(self, request):
players = Player.objects.order_by('-score')[:10]
return self.render(request, {'players': players})
# Or use decorators
@get('/api/players/')
def get_players(request):
players = Player.objects.all()
return JsonResponse([p.to_dict() for p in players])
```
### API Development
Build REST APIs effortlessly:
```python
from gobe.api.rest import ModelViewSet
from gobe.api.rest.permissions import IsAuthenticated
class PlayerViewSet(ModelViewSet):
model = Player
permission_classes = [IsAuthenticated]
def get_queryset(self):
return Player.objects.filter(user=self.request.user)
```
### Templates
Use familiar template syntax with modern features:
```html
<!DOCTYPE html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>{{ title }}</h1>
{% if players %}
<ul>
{% for player in players %}
<li>{{ player.username }} - Level {{ player.level }}</li>
{% endfor %}
</ul>
{% else %}
<p>No players found.</p>
{% endif %}
</body>
</html>
```
## 🌐 API Support
### REST API
```python
# Automatic CRUD endpoints
class GameSessionViewSet(ModelViewSet):
model = GameSession
serializer_class = GameSessionSerializer
# GET /api/gamesessions/
# POST /api/gamesessions/
# GET /api/gamesessions/{id}/
# PUT /api/gamesessions/{id}/
# DELETE /api/gamesessions/{id}/
```
### GraphQL (Coming Soon)
```python
from gobe.api.graphql import ObjectType, Field, GraphQLSchema
class PlayerType(ObjectType):
username = Field(String)
score = Field(Int)
level = Field(Int)
class Query(ObjectType):
players = Field(List(PlayerType))
def resolve_players(self, info):
return Player.objects.all()
schema = GraphQLSchema(query=Query)
```
### WebSocket
```python
from gobe.api.websocket import WebSocketHandler
class GameHandler(WebSocketHandler):
async def on_connect(self, connection):
await connection.send({'type': 'welcome'})
async def on_message(self, connection, data):
# Handle real-time game events
await self.broadcast_to_room(data['room'], {
'type': 'game_update',
'data': data
})
```
## 🎯 CLI Commands
Gobe provides a comprehensive CLI for project management:
```bash
# Project creation
gobe create-project <name> [--template=basic|api|fullstack]
# App management
gobe add-app <name> [--type=web|api|game]
# Development
gobe serve [--host=127.0.0.1] [--port=8000] [--reload]
# Database operations
gobe migrate [--auto] [--dry-run]
# Production
gobe build [--optimize] [--output=dist]
gobe deploy [--target=docker|heroku|aws]
```
## 🎮 Unity Integration (Coming Soon)
Gobe is designed with future Unity integration in mind:
```python
# Game module example
from gobe.unity_bridge import UnityBridge
from gobe.game_modules import GameModule
class MyGameModule(GameModule):
def setup(self, app):
# Register Unity message handlers
self.bridge = UnityBridge()
self.bridge.on('player_move', self.handle_player_move)
async def handle_player_move(self, data):
# Process Unity game events
player = await Player.objects.aget(id=data['player_id'])
player.position = data['position']
await player.asave()
```
## 📖 Documentation
- **[Getting Started Guide](https://gobe.dev/docs/getting-started)**
- **[API Reference](https://gobe.dev/docs/api)**
- **[Tutorials](https://gobe.dev/docs/tutorials)**
- **[Unity Integration](https://gobe.dev/docs/unity)** (Coming Soon)
## 🤝 Contributing
We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
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
## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## 🚀 Roadmap
### Phase 1: Core Framework ✅
- [x] CLI system
- [x] Project scaffolding
- [x] ORM and database layer
- [x] Web views and routing
- [x] Template engine
- [x] REST API support
### Phase 2: Enhanced APIs
- [ ] GraphQL implementation
- [ ] WebSocket optimization
- [ ] Real-time subscriptions
- [ ] Advanced caching
### Phase 3: Unity Bridge
- [ ] Unity C# bridge library
- [ ] Real-time game state sync
- [ ] Asset management integration
- [ ] Multiplayer game templates
### Phase 4: Production Ready
- [ ] Performance optimizations
- [ ] Monitoring and analytics
- [ ] Cloud deployment tools
- [ ] Enterprise features
## 💡 Examples
Check out our example projects:
- **[Blog Application](examples/blog)** - Traditional web development
- **[REST API](examples/api)** - Pure API backend
- **[Game Backend](examples/game)** - Multiplayer game server (Coming Soon)
## 🙋♂️ Support
- **[Discord Community](https://discord.gg/gobe)**
- **[GitHub Issues](https://github.com/gobe-team/gobe-framework/issues)**
- **[Stack Overflow](https://stackoverflow.com/questions/tagged/gobe-framework)**
---
**Built with ❤️ by the Gobe Team**
*Bridging Web and Game Development*
Raw data
{
"_id": null,
"home_page": "https://github.com/gobe-team/gobe",
"name": "gobe",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "Gobe Team <contact@gobe.dev>",
"keywords": "web, framework, django, flask, fastapi, unity, gamedev, rest, api, graphql, websocket",
"author": "Gobe Team",
"author_email": "Gobe Team <contact@gobe.dev>",
"download_url": "https://files.pythonhosted.org/packages/07/ca/02e3660de2b4c76c4cbadd28c5d3b8ff53af47d66d2c4c3d74d03d520e84/gobe-0.1.0.tar.gz",
"platform": null,
"description": "# Gobe Framework\n\n**Modern Python Web Framework with Unity Integration**\n\nGobe is a next-generation web framework designed to bridge the gap between web development and game development. Built with modern Python practices, it provides a familiar Django-like experience while preparing for seamless Unity integration.\n\n## \u2728 Features\n\n### \ud83d\ude80 **Modern Web Development**\n- **Intuitive CLI** - Project scaffolding and management\n- **Auto-routing** - Convention-based URL routing\n- **Hybrid Templates** - Django + JSX-style templating\n- **Powerful ORM** - Type-safe database operations\n- **Built-in APIs** - REST, GraphQL, and WebSocket support\n\n### \ud83c\udfae **Game-Ready Architecture**\n- **Unity Bridge** - Future-ready game engine integration\n- **Real-time Communication** - WebSocket for live gameplay\n- **Game Modules** - Specialized components for game logic\n- **Scalable Backend** - Built for multiplayer games\n\n### \ud83d\udee0 **Developer Experience**\n- **Hot Reload** - Instant development feedback\n- **Auto-migrations** - Intelligent database schema updates\n- **Rich CLI** - Comprehensive command-line tools\n- **Plugin System** - Extensible architecture\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n```bash\npip install gobe-framework\n```\n\n### Create Your First Project\n\n```bash\n# Create a new Gobe project\ngobe create-project my_game_backend\n\n# Navigate to project\ncd my_game_backend\n\n# Start development server\ngobe serve\n```\n\nYour Gobe application is now running at `http://localhost:8000`!\n\n## \ud83d\udcc1 Project Structure\n\n```\nmy_game_backend/\n\u251c\u2500\u2500 gobe_config/ # Configuration files\n\u2502 \u2514\u2500\u2500 settings.py\n\u251c\u2500\u2500 web_apps/ # Web applications\n\u2502 \u2514\u2500\u2500 main/\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 models.py # Database models\n\u2502 \u251c\u2500\u2500 views.py # Request handlers\n\u2502 \u2514\u2500\u2500 api_views.py # API endpoints\n\u251c\u2500\u2500 game_modules/ # Game-specific modules (future)\n\u251c\u2500\u2500 shared/ # Shared code\n\u251c\u2500\u2500 static/ # Static files (CSS, JS, images)\n\u251c\u2500\u2500 templates/ # HTML templates\n\u251c\u2500\u2500 api/ # API configuration\n\u2514\u2500\u2500 main.py # Application entry point\n```\n\n## \ud83d\udd27 Core Concepts\n\n### Models (ORM)\n\nDefine your data models with a clean, type-safe API:\n\n```python\nfrom gobe.database.orm import Model\nfrom gobe.database.orm.fields import CharField, IntegerField, DateTimeField\n\nclass Player(Model):\n username = CharField(max_length=50, unique=True)\n score = IntegerField(default=0)\n level = IntegerField(default=1)\n created_at = DateTimeField(auto_now_add=True)\n\n# Query your data\nplayers = Player.objects.filter(level__gt=5).order_by('-score')\ntop_player = Player.objects.get(username='champion')\n```\n\n### Views\n\nHandle requests with class-based or function-based views:\n\n```python\nfrom gobe.web.views import View\nfrom gobe.web.routing import get, post\n\nclass LeaderboardView(View):\n template_name = 'leaderboard.html'\n \n def get(self, request):\n players = Player.objects.order_by('-score')[:10]\n return self.render(request, {'players': players})\n\n# Or use decorators\n@get('/api/players/')\ndef get_players(request):\n players = Player.objects.all()\n return JsonResponse([p.to_dict() for p in players])\n```\n\n### API Development\n\nBuild REST APIs effortlessly:\n\n```python\nfrom gobe.api.rest import ModelViewSet\nfrom gobe.api.rest.permissions import IsAuthenticated\n\nclass PlayerViewSet(ModelViewSet):\n model = Player\n permission_classes = [IsAuthenticated]\n \n def get_queryset(self):\n return Player.objects.filter(user=self.request.user)\n```\n\n### Templates\n\nUse familiar template syntax with modern features:\n\n```html\n<!DOCTYPE html>\n<html>\n<head>\n <title>{{ title }}</title>\n</head>\n<body>\n <h1>{{ title }}</h1>\n \n {% if players %}\n <ul>\n {% for player in players %}\n <li>{{ player.username }} - Level {{ player.level }}</li>\n {% endfor %}\n </ul>\n {% else %}\n <p>No players found.</p>\n {% endif %}\n</body>\n</html>\n```\n\n## \ud83c\udf10 API Support\n\n### REST API\n\n```python\n# Automatic CRUD endpoints\nclass GameSessionViewSet(ModelViewSet):\n model = GameSession\n serializer_class = GameSessionSerializer\n \n # GET /api/gamesessions/\n # POST /api/gamesessions/\n # GET /api/gamesessions/{id}/\n # PUT /api/gamesessions/{id}/\n # DELETE /api/gamesessions/{id}/\n```\n\n### GraphQL (Coming Soon)\n\n```python\nfrom gobe.api.graphql import ObjectType, Field, GraphQLSchema\n\nclass PlayerType(ObjectType):\n username = Field(String)\n score = Field(Int)\n level = Field(Int)\n\nclass Query(ObjectType):\n players = Field(List(PlayerType))\n \n def resolve_players(self, info):\n return Player.objects.all()\n\nschema = GraphQLSchema(query=Query)\n```\n\n### WebSocket\n\n```python\nfrom gobe.api.websocket import WebSocketHandler\n\nclass GameHandler(WebSocketHandler):\n async def on_connect(self, connection):\n await connection.send({'type': 'welcome'})\n \n async def on_message(self, connection, data):\n # Handle real-time game events\n await self.broadcast_to_room(data['room'], {\n 'type': 'game_update',\n 'data': data\n })\n```\n\n## \ud83c\udfaf CLI Commands\n\nGobe provides a comprehensive CLI for project management:\n\n```bash\n# Project creation\ngobe create-project <name> [--template=basic|api|fullstack]\n\n# App management\ngobe add-app <name> [--type=web|api|game]\n\n# Development\ngobe serve [--host=127.0.0.1] [--port=8000] [--reload]\n\n# Database operations\ngobe migrate [--auto] [--dry-run]\n\n# Production\ngobe build [--optimize] [--output=dist]\ngobe deploy [--target=docker|heroku|aws]\n```\n\n## \ud83c\udfae Unity Integration (Coming Soon)\n\nGobe is designed with future Unity integration in mind:\n\n```python\n# Game module example\nfrom gobe.unity_bridge import UnityBridge\nfrom gobe.game_modules import GameModule\n\nclass MyGameModule(GameModule):\n def setup(self, app):\n # Register Unity message handlers\n self.bridge = UnityBridge()\n self.bridge.on('player_move', self.handle_player_move)\n \n async def handle_player_move(self, data):\n # Process Unity game events\n player = await Player.objects.aget(id=data['player_id'])\n player.position = data['position']\n await player.asave()\n```\n\n## \ud83d\udcd6 Documentation\n\n- **[Getting Started Guide](https://gobe.dev/docs/getting-started)**\n- **[API Reference](https://gobe.dev/docs/api)**\n- **[Tutorials](https://gobe.dev/docs/tutorials)**\n- **[Unity Integration](https://gobe.dev/docs/unity)** (Coming Soon)\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude80 Roadmap\n\n### Phase 1: Core Framework \u2705\n- [x] CLI system\n- [x] Project scaffolding\n- [x] ORM and database layer\n- [x] Web views and routing\n- [x] Template engine\n- [x] REST API support\n\n### Phase 2: Enhanced APIs\n- [ ] GraphQL implementation\n- [ ] WebSocket optimization\n- [ ] Real-time subscriptions\n- [ ] Advanced caching\n\n### Phase 3: Unity Bridge\n- [ ] Unity C# bridge library\n- [ ] Real-time game state sync\n- [ ] Asset management integration\n- [ ] Multiplayer game templates\n\n### Phase 4: Production Ready\n- [ ] Performance optimizations\n- [ ] Monitoring and analytics\n- [ ] Cloud deployment tools\n- [ ] Enterprise features\n\n## \ud83d\udca1 Examples\n\nCheck out our example projects:\n\n- **[Blog Application](examples/blog)** - Traditional web development\n- **[REST API](examples/api)** - Pure API backend\n- **[Game Backend](examples/game)** - Multiplayer game server (Coming Soon)\n\n## \ud83d\ude4b\u200d\u2642\ufe0f Support\n\n- **[Discord Community](https://discord.gg/gobe)**\n- **[GitHub Issues](https://github.com/gobe-team/gobe-framework/issues)**\n- **[Stack Overflow](https://stackoverflow.com/questions/tagged/gobe-framework)**\n\n---\n\n**Built with \u2764\ufe0f by the Gobe Team**\n\n*Bridging Web and Game Development*\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Modern Python Web Framework with Unity Integration",
"version": "0.1.0",
"project_urls": {
"Bug Tracker": "https://github.com/gobe-team/gobe-framework/issues",
"Changelog": "https://github.com/gobe-team/gobe-framework/blob/main/CHANGELOG.md",
"Documentation": "https://gobe.dev/docs",
"Homepage": "https://gobe.dev",
"Repository": "https://github.com/gobe-team/gobe-framework"
},
"split_keywords": [
"web",
" framework",
" django",
" flask",
" fastapi",
" unity",
" gamedev",
" rest",
" api",
" graphql",
" websocket"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "fe79c24474dfab88a7498ead3501cb38aa4f8ed31ef958a9a5cfef4b9705c797",
"md5": "984aeca4f04b73dc9861414e1834b33b",
"sha256": "d4d48bc4cc1485139329e5840f895dcd9badb33bad05df5eed971ea1d5dbf319"
},
"downloads": -1,
"filename": "gobe-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "984aeca4f04b73dc9861414e1834b33b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 6674,
"upload_time": "2025-08-11T23:38:50",
"upload_time_iso_8601": "2025-08-11T23:38:50.274033Z",
"url": "https://files.pythonhosted.org/packages/fe/79/c24474dfab88a7498ead3501cb38aa4f8ed31ef958a9a5cfef4b9705c797/gobe-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "07ca02e3660de2b4c76c4cbadd28c5d3b8ff53af47d66d2c4c3d74d03d520e84",
"md5": "0418e5d883a34b56b1b7e994cc9e9a1c",
"sha256": "8cb3fb3cb5fdf4095059e889b3f90e1bf2c7d2bf834c311726d805e2c3d8af70"
},
"downloads": -1,
"filename": "gobe-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "0418e5d883a34b56b1b7e994cc9e9a1c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 8882,
"upload_time": "2025-08-11T23:38:51",
"upload_time_iso_8601": "2025-08-11T23:38:51.744957Z",
"url": "https://files.pythonhosted.org/packages/07/ca/02e3660de2b4c76c4cbadd28c5d3b8ff53af47d66d2c4c3d74d03d520e84/gobe-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-11 23:38:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "gobe-team",
"github_project": "gobe",
"github_not_found": true,
"lcname": "gobe"
}