Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions .github/workflows/windows-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Windows Build

on:
push:
branches:
- main
- master
pull_request:
branches:
- main
- master
workflow_dispatch:

jobs:
build-windows:
name: Build and Test Windows App
runs-on: windows-latest
permissions:
contents: read

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Read Flutter version
id: flutter-version
shell: bash
run: |
if [ -f ".dart_tool/version" ]; then
echo "version=$(cat .dart_tool/version)" >> $GITHUB_OUTPUT
else
echo "version=3.27.4" >> $GITHUB_OUTPUT
fi

- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '${{ steps.flutter-version.outputs.version }}'
channel: 'stable'
cache: true

- name: Enable Windows desktop
run: flutter config --enable-windows-desktop

- name: Get dependencies
run: flutter pub get

- name: Analyze code
run: flutter analyze --no-fatal-infos

- name: Run tests
run: flutter test

- name: Build Windows app
run: flutter build windows --release

- name: Check build output
shell: bash
run: |
if [ -f "build/windows/x64/runner/Release/angry_raphi.exe" ]; then
echo "✅ Windows executable built successfully"
ls -lh build/windows/x64/runner/Release/
else
echo "❌ Windows executable not found"
exit 1
fi

- name: Upload Windows artifact
uses: actions/upload-artifact@v3
with:
name: windows-release
path: build/windows/x64/runner/Release/
retention-days: 7
142 changes: 32 additions & 110 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,8 @@
# AngryRaphi

AngryRaphi is a Flutter web app for reporting and rating tech problems. Users can create "Raphcons" (tech issues) which can then be rated by others. The app generates weekly AI-powered summaries using Google Gemini AI and displays them as rotating "Story of the Week" content. The system uses Firebase for authentication, database and hosting with automated CI/CD pipeline via GitHub Actions.
AngryRaphi is a cross-platform Flutter app for reporting and rating tech problems. Users can create "Raphcons" (tech issues) which can then be rated by others. The app generates weekly AI-powered summaries using Google Gemini AI and displays them as rotating "Story of the Week" content. The system uses Firebase for authentication, database and hosting with automated CI/CD pipeline via GitHub Actions.

## 🚀 Live Demo

- **Production**: [angryraphi.web.app](https://angryraphi.web.app)
- **Preview URLs**: Generated automatically for each Pull Request

## ✨ Features

- 📝 **Problem Reporting**: Create and submit tech issues ("Raphcons")
- ⭐ **Rating System**: Rate and evaluate reported problems
- 🤖 **AI-Powered Stories**: Weekly summaries generated by Google Gemini AI
- 🔄 **Rotating Content**: Dynamic "Story of the Week" with smooth animations
- 🔐 **Authentication**: Secure login/registration via Firebase Auth
- 👥 **User Management**: Public user directory and profiles
- 🌐 **Multi-language**: German/English localization support
- 📱 **Responsive Design**: Works on desktop and mobile devices
Available on **Web**, **Windows**, **Android**, and **iOS**.

## 🚀 Live Demo

Expand All @@ -33,13 +19,15 @@ AngryRaphi is a Flutter web app for reporting and rating tech problems. Users ca
- 👥 **User Management**: Public user directory and profiles
- 🌐 **Multi-language**: German/English localization support
- 📱 **Responsive Design**: Works on desktop and mobile devices
- 💻 **Cross-Platform**: Web, Windows, Android, and iOS support

## Requirements

- **Flutter**: 3.27.4+ (see `.dart_tool/version`)
- **Dart**: 3.6.0+
- **Node.js**: 18.0.0+ (for Firebase CLI and web builds)
- **Java**: 21+ (for Android builds)
- **Visual Studio 2022**: 17.0+ with C++ Desktop Development (for Windows builds)
- **Firebase CLI**: Latest version

## Setup
Expand All @@ -52,6 +40,16 @@ To use the Gemini AI features, you'll need to obtain a Gemini API key from Googl
- Create a file named `gemini_api_key` in the project root directory
- Add your API key to this file (the file is already included in `.gitignore` for security)

### Windows Development Setup

To build and run the app on Windows, you'll need:
1. **Visual Studio 2022** or later with the "Desktop development with C++" workload
2. Enable the following components in Visual Studio Installer:
- MSVC v142 or later
- Windows 10/11 SDK
- C++ CMake tools for Windows
3. Run `flutter doctor` to verify Windows development setup

## Development

**⚠️ Note**: This app connects directly to the production Firebase database. There is no local emulator setup.
Expand All @@ -62,10 +60,22 @@ flutter pub get
```

### Run Locally

**Web:**
```bash
flutter run -d chrome
```

**Windows:**
```bash
flutter run -d windows
```

**Android/iOS:**
```bash
flutter run
```

## 🚀 Deployment

Deployment is fully automated via GitHub Actions:
Expand Down Expand Up @@ -154,100 +164,12 @@ lib/
- Ensure Firebase Auth is enabled in console
- Check domain is added to authorized domains

### Getting Help
- Check existing issues in GitHub
- Review Firebase Console for errors
- Verify all environment variables are set

## 🔗 Links

- **Firebase Console**: [console.firebase.google.com](https://console.firebase.google.com)
- **GitHub Actions**: [Repository Actions](../../actions)
- **Google AI Studio**: [aistudio.google.com](https://aistudio.google.com/app/api-keys)
- **Flutter Docs**: [docs.flutter.dev](https://docs.flutter.dev)

## 📄 License

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

### Testing
```bash
flutter test
```

## 🏗️ Architecture

- **Frontend**: Flutter Web with responsive design
- **State Management**: BLoC (Business Logic Component) pattern
- **Backend**: Firebase (Firestore, Authentication, Hosting)
- **AI Integration**: Google Gemini API for content generation
- **CI/CD**: GitHub Actions with automated testing and deployment
- **Deployment**: Firebase Hosting with preview channels

## 📁 Project Structure

```
lib/
├── core/ # Core utilities and constants
├── features/ # Feature-based modules
│ └── user/ # User management features
├── models/ # Data models
├── services/ # API and business logic services
├── shared/ # Shared widgets and utilities
├── utils/ # Helper functions
└── widgets/ # Reusable UI components
```

## 🔧 Environment Setup

### Firebase Configuration
1. Copy your Firebase config to `lib/firebase_options.dart`
2. Ensure Firebase project has:
- Authentication enabled
- Firestore database
- Hosting enabled

### Required Files
- `gemini_api_key` (in project root)
- `lib/firebase_options.dart`
- Service account JSON for GitHub Actions

## 🤝 Contributing

### Branch Strategy
- `main`: Production branch (protected)
- Feature branches: `feature/your-feature-name`
- Create Pull Requests for all changes

### Code Style
- Follow Dart/Flutter conventions
- Run `flutter analyze` before committing
- Ensure tests pass: `flutter test`
- Use meaningful commit messages

### Development Workflow
1. Create feature branch from `main`
2. Make your changes
3. Run tests and analysis
4. Create Pull Request
5. Preview URL will be generated automatically
6. Merge after review

## 🐛 Troubleshooting

### Common Issues

**Build Errors:**
- Ensure Flutter version matches `.dart_tool/version`
- Run `flutter clean && flutter pub get`

**Firebase Errors:**
- Check `firebase_options.dart` configuration
- Verify Gemini API key in `gemini_api_key` file

**Authentication Issues:**
- Ensure Firebase Auth is enabled in console
- Check domain is added to authorized domains
**Windows Build Issues:**
- Verify Visual Studio 2022 is installed with C++ Desktop Development workload
- Run `flutter doctor` to check Windows toolchain status
- Ensure Windows 10/11 SDK is installed
- Try `flutter clean` followed by `flutter build windows`
- Check that CMake is properly installed (comes with Visual Studio)

### Getting Help
- Check existing issues in GitHub
Expand Down
Loading