Optimized layout and code for building

This commit is contained in:
TySP-Dev
2025-11-13 21:01:16 -10:00
parent b5c01ac35d
commit 0f579c973d
13 changed files with 337 additions and 35 deletions
+59
View File
@@ -0,0 +1,59 @@
# Flet Build Configuration
# This file provides additional build settings for the Flet application
# App metadata
[app]
name = "GitHub Pulse"
description = "GitHub automation workflows with AI assistance"
author = "TySP-Dev"
# Build settings
[build]
# Include these files/directories in the build
include_packages = [
"app_components",
"assets"
]
# Exclude unnecessary files from build
exclude = [
"*.pyc",
"__pycache__",
"*.pyo",
"*.pyd",
".git",
".gitignore",
"venv",
".env",
"*.md",
"BUILD.md",
"SETUP.md",
"*.example"
]
# Asset optimization
[assets]
# Optimize images during build
optimize_images = true
# Include app_components/assets directory
directories = [
"assets",
"app_components/assets"
]
# Platform-specific settings
[android]
adaptive_icon_background = "#1976D2"
adaptive_icon_foreground = "assets/icon.png"
[ios]
info_plist_version = "1.0"
[macos]
info_plist_version = "1.0"
[windows]
console = false # Hide console window in production
[linux]
categories = ["Development", "Utility"]
+28 -3
View File
@@ -161,10 +161,35 @@ cython_debug/
# Flet # Flet
storage/ storage/
.flet/
# Build # Build artifacts
build/ build/
pyproject.toml dist/
src/build/
src/dist/
*.apk
*.ipa
*.app
*.exe
*.dmg
*.deb
*.rpm
*.tar.gz
# Config # Flutter/Flet build artifacts
.flutter-plugins
.flutter-plugins-dependencies
.dart_tool/
android/
ios/
linux/
macos/
windows/
web/
# Configuration (generated during build, not in git)
# Note: pyproject.toml is now tracked for proper builds
# config.json should be user-specific
config.json config.json
src/config.json
+6 -1
View File
@@ -1,5 +1,9 @@
# Build Instructions # Build Instructions
> [!NOTE]
> Building has only been tested for **linux**.
> Please report bugs with building on any other platform.
## Prerequisites ## Prerequisites
- [Node.js](https://nodejs.org/) (v18+) - [Node.js](https://nodejs.org/) (v18+)
@@ -39,7 +43,8 @@ source venv/bin/activate
## Install Dependencies ## Install Dependencies
```bash ```bash
pip install -r requirements.txt # For dev dependencies
pip install -r requirements/requirements-dev.txt
``` ```
```bash ```bash
+28 -3
View File
@@ -17,11 +17,16 @@ A Python-based GUI application for GitHub automation workflows and AI assisted w
```text ```text
github_pulse/ github_pulse/
├── src/ # Main application directory ├── src/ # Main application directory
│ ├── app.py # Application entry point │ ├── main.py # Application entry point
│ ├── requirements.txt # Python dependencies │ ├── requirements.txt # Python dependencies
│ ├── assets # Images for build │ ├── assets/ # Images for build
│ │ ├── icon.png # Application icon │ │ ├── icon.png # Application icon
│ │ └── splash_android.png # Splash screen image │ │ └── splash_android.png # Splash screen image
│ ├── requirements/
│ │ ├── requirements-dev.txt # Development dependencies
│ │ ├── requirements-ai.txt # AI dependencies
│ │ ├── requirements.txt # Production dependencies
│ │ └── requirements-base.txt # Base dependencies
│ └── app_components/ # Application modules │ └── app_components/ # Application modules
│ ├── assets/ # Images and assets │ ├── assets/ # Images and assets
│ │ ├── flow-diagram.png # Workflow diagram │ │ ├── flow-diagram.png # Workflow diagram
@@ -56,12 +61,14 @@ github_pulse/
## Quick Start ## Quick Start
1. **Clone the repository** 1. **Clone the repository**
```bash ```bash
git clone https://github.com/TySP-Dev/github_pulse.git git clone https://github.com/TySP-Dev/github_pulse.git
cd github_pulse/src cd github_pulse/src
``` ```
2. **Create and activate virtual environment** 2. **Create and activate virtual environment**
```bash ```bash
# Create virtual environment # Create virtual environment
python -m venv venv python -m venv venv
@@ -74,11 +81,29 @@ github_pulse/
``` ```
3. **Install dependencies** 3. **Install dependencies**
```bash ```bash
pip install -r requirements.txt # For all production dependencies
pip install -r requirements/requirements.txt
```
```bash
# For dev dependencies
pip install -r requirements/requirements-dev.txt
```
```bash
# For ai dependencies
pip install -r requirements/requirements-ai.txt
```
```bash
# For base dependencies
pip install -r requirements/requirements-base.txt
``` ```
4. **Run the application** 4. **Run the application**
```bash ```bash
python app.py python app.py
``` ```
+25 -3
View File
@@ -11,6 +11,7 @@ A Python-based GUI application for GitHub automation workflows.
- **Python 3.8+** installed on your system - **Python 3.8+** installed on your system
- **Git** installed and configured - **Git** installed and configured
- **GitHub** account with repository access - **GitHub** account with repository access
- **libmpv** installed on your system (Linux)
### Installation ### Installation
@@ -38,7 +39,23 @@ A Python-based GUI application for GitHub automation workflows.
3. **Install Dependencies** 3. **Install Dependencies**
```bash ```bash
pip install -r requirements.txt # For all production dependencies
pip install -r requirements/requirements.txt
```
```bash
# For dev dependencies
pip install -r requirements/requirements-dev.txt
```
```bash
# For ai dependencies
pip install -r requirements/requirements-ai.txt
```
```bash
# For base dependencies
pip install -r requirements/requirements-base.txt
``` ```
4. **Run the Application** 4. **Run the Application**
@@ -80,11 +97,16 @@ The project is organized as follows:
```text ```text
github_pulse/ github_pulse/
├── src/ # Main application directory ├── src/ # Main application directory
│ ├── app.py # Application entry point │ ├── main.py # Application entry point
│ ├── requirements.txt # Python dependencies │ ├── requirements.txt # Python dependencies
│ ├── assets # Images for build │ ├── assets/ # Images for build
│ │ ├── icon.png # Application icon │ │ ├── icon.png # Application icon
│ │ └── splash_android.png # Splash screen image │ │ └── splash_android.png # Splash screen image
│ ├── requirements/
│ │ ├── requirements-dev.txt # Development dependencies
│ │ ├── requirements-ai.txt # AI dependencies
│ │ ├── requirements.txt # Production dependencies
│ │ └── requirements-base.txt # Base dependencies
│ └── app_components/ # Application modules │ └── app_components/ # Application modules
│ ├── assets/ # Images and assets │ ├── assets/ # Images and assets
│ │ ├── flow-diagram.png # Workflow diagram │ │ ├── flow-diagram.png # Workflow diagram
+72
View File
@@ -0,0 +1,72 @@
[project]
name = "GitHub Pulse"
version = "0.0.1"
description = "A Python-based GUI application for GitHub automation workflows and AI assisted workflows."
readme = "README.md"
requires-python = ">=3.9"
authors = [
{ name = "TySP-Dev", email = "68524461+TySP-Dev@users.noreply.github.com" }
]
dependencies = [
"flet==0.28.3",
"requests>=2.32.5",
"keyring>=25.6.0",
"GitPython>=3.1.45",
"openai>=2.8.0",
"anthropic>=0.72.1"
]
[tool.flet]
# org name in reverse domain name notation, e.g. "com.mycompany".
# Combined with project.name to build bundle ID for iOS and Android apps
org = "com.unnaturalll-dev"
# project display name that is used as an app title on Android and iOS home screens,
# shown in window titles and about app dialogs on desktop.
product = "GitHub Pulse"
# company name to display in about app dialogs
company = "UnNaturalll Dev"
# copyright text to display in about app dialogs
copyright = "Copyright (C) 2025 by UnNaturalll Dev"
[tool.flet.app]
path = "src"
# Icon and splash screen configuration for builds
icon = "src/assets/icon.png"
splash = "src/assets/splash_android.png"
# Build optimizations
[tool.flet.android]
# Android-specific settings for better performance
permissions = [
"android.permission.INTERNET",
"android.permission.ACCESS_NETWORK_STATE"
]
[tool.flet.ios]
# iOS-specific settings
bundle_id = "com.unnaturalll-dev.githubpulse"
[tool.flet.macos]
# macOS-specific settings
bundle_id = "com.unnaturalll-dev.githubpulse"
[tool.flet.linux]
# Linux-specific settings
[tool.flet.windows]
# Windows-specific settings
[tool.uv]
dev-dependencies = [
"flet[all]==0.28.3",
]
[tool.poetry]
package-mode = false
[tool.poetry.group.dev.dependencies]
flet = {extras = ["all"], version = "0.28.3"}
+23 -3
View File
@@ -3,9 +3,24 @@ GitHub Pulse - Application Components
Modular components for the application Modular components for the application
""" """
import sys
import os
# Version info # Version info
__version__ = "1.0.0" __version__ = "0.0.1"
__author__ = "GitHub Pulse" __author__ = "TySP-Dev"
__app_name__ = "GitHub Pulse"
# Determine if running in production build
IS_PRODUCTION = getattr(sys, 'frozen', False)
# Get the application directory
if IS_PRODUCTION:
# In production build, get the executable directory
APP_DIR = os.path.dirname(sys.executable)
else:
# In development, get the source directory
APP_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Export main classes for easier imports # Export main classes for easier imports
from .config_manager import ConfigManager from .config_manager import ConfigManager
@@ -27,5 +42,10 @@ __all__ = [
'ContentBuilders', 'ContentBuilders',
'WorkflowManager', 'WorkflowManager',
'WorkflowItem', 'WorkflowItem',
'GitHubRepoFetcher' 'GitHubRepoFetcher',
'__version__',
'__author__',
'__app_name__',
'IS_PRODUCTION',
'APP_DIR'
] ]
+35 -8
View File
@@ -6,7 +6,9 @@ This application provides GitHub automation workflows with AI assistance.
""" """
import sys import sys
import os
import flet as ft import flet as ft
# Compatibility fix for Flet 0.28+ (Icons vs icons, Colors vs colors) # Compatibility fix for Flet 0.28+ (Icons vs icons, Colors vs colors)
ft.icons = ft.Icons ft.icons = ft.Icons
ft.colors = ft.Colors ft.colors = ft.Colors
@@ -20,6 +22,11 @@ try:
except ImportError as e: except ImportError as e:
print(f"Error importing application components: {e}") print(f"Error importing application components: {e}")
print("Make sure all files are present in the app_components folder") print("Make sure all files are present in the app_components folder")
# In production builds, show a user-friendly error
if getattr(sys, 'frozen', False):
import traceback
error_details = traceback.format_exc()
print(error_details)
sys.exit(1) sys.exit(1)
@@ -35,13 +42,18 @@ class GitHubAutomationApp:
self.page.theme_mode = ft.ThemeMode.DARK self.page.theme_mode = ft.ThemeMode.DARK
self.page.padding = 0 self.page.padding = 0
# Set window size # Set window size with platform detection
self.page.window_width = 1400 # Mobile devices will use full screen
self.page.window_height = 1000 is_mobile = page.web or (hasattr(page, 'platform') and
self.page.window_min_width = 1200 page.platform in ['android', 'ios'])
self.page.window_min_height = 800
# Material Design 3 theme if not is_mobile:
self.page.window_width = 1400
self.page.window_height = 1000
self.page.window_min_width = 1200
self.page.window_min_height = 800
# Material Design 3 theme with optimized settings
self.page.theme = ft.Theme( self.page.theme = ft.Theme(
color_scheme_seed="blue", color_scheme_seed="blue",
use_material3=True, use_material3=True,
@@ -183,5 +195,20 @@ async def main(page: ft.Page):
if __name__ == "__main__": if __name__ == "__main__":
# Run the Flet app # Run the Flet app with optimized settings
ft.app(target=main) # For production builds, use appropriate view settings
is_production = getattr(sys, 'frozen', False)
if is_production:
# Production build settings
ft.app(
target=main,
view=ft.AppView.FLET_APP, # Native app view for builds
assets_dir="assets" # Ensure assets are loaded correctly
)
else:
# Development settings
ft.app(
target=main,
assets_dir="assets"
)
-13
View File
@@ -1,13 +0,0 @@
# Core dependencies
requests>=2.32.5
keyring>=25.6.0 # Secure credential storage
# UI Framework
flet>=0.28.3
# Git operations (required for AI functionality)
GitPython>=3.1.45
# AI Providers
openai>=2.8.0
anthropic>=0.72.1
+11
View File
@@ -0,0 +1,11 @@
# AI Provider dependencies
# These are optional and only needed if using AI features
# Include base requirements
-r requirements-base.txt
# AI Providers (optional - install only what you need)
openai>=2.8.0 # For ChatGPT integration
anthropic>=0.72.1 # For Claude integration
# Note: Ollama and GitHub Copilot use REST APIs and don't require additional packages
+14
View File
@@ -0,0 +1,14 @@
# Base requirements for all platforms
# Core dependencies required for the application to run
# UI Framework (Flet - Python wrapper for Flutter)
flet==0.28.3
# HTTP requests for API calls
requests>=2.32.5
# Secure credential storage (cross-platform)
keyring>=25.6.0
# Git operations for repository management
GitPython>=3.1.45
+12
View File
@@ -0,0 +1,12 @@
# Development requirements
# Includes all dependencies for development, testing, and building
# Include AI requirements (which includes base)
-r requirements-ai.txt
# Development tools
flet[all]==0.28.3 # Flet with all development extras
# Build tools (optional)
# pyinstaller>=6.0.0 # Alternative bundler if needed
# cx-Freeze>=6.15.0 # Alternative bundler if needed
+23
View File
@@ -0,0 +1,23 @@
# GitHub Pulse - Main Requirements File
# This file includes all dependencies needed for production use
# Core dependencies
requests>=2.32.5 # HTTP client for GitHub API and AI providers
keyring>=25.6.0 # Secure credential storage (cross-platform)
GitPython>=3.1.45 # Git operations for repository management
# UI Framework - Flet (Python wrapper for Flutter)
flet==0.28.3 # Pin to specific version for build compatibility
# AI Providers (optional but included for full functionality)
openai>=2.8.0 # ChatGPT/OpenAI API integration
anthropic>=0.72.1 # Claude/Anthropic API integration
# Platform-specific notes:
# - Linux: Requires libgtk-3-dev, clang, cmake, ninja-build
# - Windows: Requires Visual Studio 2016+
# - Android: Requires Android Studio and SDK
# - iOS/macOS: Requires Xcode
# For minimal installation (no AI), use: pip install -r requirements-base.txt
# For development: pip install -r requirements-dev.txt