- Overview
- Project Architecture
- Components
- Quick Start
- Documentation
- Technology Stack
- Development
- Deployment
- Bonus Features
- Contributing
- Authors
- License
AREA (Action REAction) is a comprehensive automation platform that enables users to create custom workflows connecting multiple services through triggers (Actions) and automated responses (Reactions). The platform supports both legacy predefined automations (V1) and a fully dynamic, server-driven automation system (V2).
- π Dynamic Automation System: Create custom workflows by combining any available trigger with any reaction
- π Multiple Service Integrations: Gmail, Outlook, OneDrive, GitHub, Google Calendar, Weather
- π¨ Visual Node Editor: Drag-and-drop interface for building workflows
- π± Cross-Platform Mobile App: Flutter-based application for iOS, Android, and Web
- π Modern Web Interface: Next.js-based responsive web application
- π OAuth 2.0 Integration: Secure authentication with all supported services
- βΏ Accessibility First: Full accessibility support with colorblind modes, high contrast, and font scaling
- π₯ Role-Based Access Control: User, Admin, and Super Admin roles
- π Admin Dashboard: Comprehensive administrative interface with user management and system monitoring
AREA/
βββ web-app/ # Next.js Web Application
βββ Server/ # ASP.NET Core API Server
βββ Mobile/ # Flutter Mobile Application
βββ Docs/ # Comprehensive Documentation
βββ Tests/ # Test Suites
βββ scripts/ # Utility Scripts
βββ docker-compose.yaml # Docker Compose Configuration
βββ .github/ # CI/CD Workflows
User Interface (Web/Mobile)
β
API Gateway (Server)
β
Service Integrations (OAuth 2.0)
β
Automation Engine (AREA V2)
β
External Services (Gmail, GitHub, etc.)
Location: web-app/
Tech Stack: Next.js 15.5.4, React 19, TypeScript, Tailwind CSS
A modern, responsive web application providing the primary interface for creating and managing automations.
Features:
- Dynamic AREA V2 creation interface (form-based and visual node editor)
- Service integration management (OAuth 2.0)
- Admin dashboard with user management
- Real-time statistics and monitoring
- Full accessibility support
Quick Start:
cd web-app
npm install
npm run dev
# Access at http://localhost:8081Documentation: Docs/Web/README.md
Location: Server/
Tech Stack: ASP.NET Core 8.0, C#, MongoDB
RESTful API server providing the backend infrastructure for authentication, service integrations, and automation execution.
Features:
- RESTful API with JWT authentication
- OAuth 2.0 integration with multiple providers
- AREA V2 dynamic system with pattern-based validation
- Background job processing (scheduled automations)
- MongoDB data persistence
- Role-based access control
Endpoints:
/api/auth/*- Authentication and user management/api/area/v2/*- AREA V2 automation management/api/gmail/*,/api/outlook/*,/api/github/*, etc. - Service-specific endpoints/api/admin/*- Administrative endpoints
Quick Start:
cd Server
dotnet restore
dotnet run
# API available at http://localhost:5001Documentation: Docs/Server/
Location: Mobile/
Tech Stack: Flutter 3.x, Dart
Cross-platform mobile application supporting iOS, Android, and Web platforms.
Features:
- Full AREA V2 system integration
- Service authentication (OAuth 2.0)
- Automation creation and management
- Push notifications (planned)
- Offline support
Quick Start:
cd Mobile
flutter pub get
flutter runDocumentation: Docs/Mobile/README.md
AREA supports two automation systems:
Predefined automation types:
- Gmail Timer (recurring email sending)
- Outlook Timer (recurring email sending)
- Gmail β OneDrive (attachment backup)
- Outlook β OneDrive (attachment backup)
Fully dynamic, server-driven automation platform:
- Actions (Triggers): Events that start automations
- Gmail email received
- GitHub issue created
- Timer events
- Weather data updates
- Google Calendar events
- Reactions: Automated responses
- Send emails
- Create GitHub issues/PRs
- Upload files to OneDrive
- Create calendar events
- Dynamic Mapping: Connect trigger outputs to reaction inputs
- Filters: Conditional logic for automation execution
Documentation:
- Node.js 18+ and npm 9+
- .NET SDK 8.0
- Flutter SDK 3.x
- Docker and Docker Compose (optional)
- MongoDB (local or remote instance)
The easiest way to get started:
# Clone the repository
git clone <repository-url>
cd AREA
# Start all services
docker-compose up --build
# Services will be available at:
# - Web: http://localhost:8081
# - API: http://localhost:8080- Start MongoDB (if not using Docker)
- Start the Server:
cd Server dotnet restore dotnet run - Start the Web App:
cd web-app npm install cp .env.example .env # Edit .env with your API URL npm run dev
- Start Mobile App (optional):
cd Mobile flutter pub get flutter run
Comprehensive documentation is available in the Docs/ directory:
- Web Application Documentation - Complete guide for the web app
- Server API Documentation - API endpoints, architecture, and implementation
- Mobile Application Documentation - Mobile app development guide
- Service Integration Guides - Detailed guides for each service integration
- Web Architecture
- Web Components
- Web Features
- Web Development Guide
- Web Security Guide
- AREA V2 API
- AREA V2 Dynamic System
- Area Validation System
- Web: Next.js 15.5.4, React 19.1.0, TypeScript 5.x, Tailwind CSS 4.x
- Mobile: Flutter 3.x, Dart
- UI Components: Radix UI, React Flow (node editor)
- API: ASP.NET Core 8.0, C#
- Database: MongoDB
- Authentication: JWT, OAuth 2.0
- Background Jobs: ASP.NET Core Hosted Services
- Containerization: Docker, Docker Compose
- CI/CD: GitHub Actions
- Version Control: Git
- Google: Gmail, Google Calendar
- Microsoft: Outlook, OneDrive
- GitHub: Repository, Issues, Pull Requests
- Weather: OpenWeatherMap (or similar)
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make changes and test locally
-
Follow code standards:
- TypeScript/JavaScript: ESLint + Prettier
- C#: Follow .NET coding conventions
- Dart: Follow Flutter style guide
-
Run tests:
# Server tests cd Server dotnet test # Web tests (if available) cd web-app npm test
-
Commit and push:
git add . git commit -m "feat: your feature description" git push origin feature/your-feature-name
-
Create a Pull Request
- TypeScript: Strict mode enabled
- ESLint: Configured for Next.js and React
- Prettier: Code formatting
- Git Hooks: Pre-commit checks (if configured)
Each component uses environment variables for configuration. See:
.env files or hardcode sensitive information.
The project includes Docker configurations for easy deployment:
# Build and start all services
docker-compose up --build -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down- Environment variables configured
- MongoDB connection string set
- OAuth client IDs and secrets configured
- HTTPS enabled
- CORS properly configured
- Rate limiting enabled
- Monitoring and logging setup
The project uses GitHub Actions for continuous integration and deployment:
- CI: Automated testing on push
- CD: Automatic deployment to production on merge to main
- Docker: Automated image building and pushing
- Security: Code signing
While the project primarily uses Docker Compose, it can be deployed to Kubernetes with advanced load balancing capabilities. Example deployment manifests:
# Kubernetes deployment structure (not included in repo)
# Would include:
# - Deployment manifests for each service
# - Service definitions with LoadBalancer type
# - Ingress configuration with load balancing rules
# - ConfigMaps and Secrets
# - PersistentVolumeClaims for MongoDB
# - HorizontalPodAutoscaler for automatic scalingFeatures:
- Horizontal Pod Autoscaling: Automatically scales based on CPU/memory usage
- Rolling Updates: Zero-downtime deployments
- Service Mesh Integration: Optional Istio/Linkerd integration for advanced traffic management
- Load Balancing: Distributes traffic across multiple pods for high availability
- Health Checks: Liveness and readiness probes for automatic pod management
- Monitoring: Prometheus/Grafana integration for real-time metrics
Advanced conditioning system for action outputs and reaction execution based on output validation (see AreaService.cs):
Features:
- Output Validation: Verify conditions on action/reaction outputs before executing downstream reactions
- Dynamic Filtering: Filter workflows based on runtime data (email subjects, sender addresses, weather conditions, etc.)
- Multi-Source Conditions: Apply conditions to both action outputs and previous reaction outputs
- Flexible Operators: Support for various comparison operators (equals, contains, greater than, etc.)
Example Use Cases:
- Only send email if weather temperature is above a threshold
- Only create GitHub issue if email is from specific sender
- Only forward email if it contains specific keywords
Implementation: VerifyCoditions() method in AreaService.cs validates conditions against outputs before proceeding
Sophisticated reaction chaining system that allows reactions to depend on outputs from previous reactions (see AreaService.cs):
Features:
- Dependency Resolution: Automatically sorts reactions based on their dependencies using topological sorting (Kahn's algorithm)
- Multi-Source References: Reactions can reference outputs from the trigger action or any previous reaction
- Cycle Detection: Detects and handles circular dependencies gracefully
- Named Reactions: Each reaction can be named for easy reference by downstream reactions
- Output Propagation: Reaction outputs are stored and made available to subsequent reactions
Example Workflow:
- Action: Gmail receives email with attachment
- Reaction 1 ("SaveFile"): Save attachment to OneDrive β outputs
FileId,FilePath - Reaction 2 ("NotifyGitHub"): Create GitHub issue referencing
FileIdfrom "SaveFile" reaction - Reaction 3 ("ConfirmEmail"): Send Gmail reply confirming file saved, using
FilePathfrom "SaveFile"
Implementation: SortReactionsByDependencies() method in AreaService.cs handles dependency graph construction and topological sorting
Advanced information passage system that enables dynamic data flow from actions to reactions and between reactions (see AreaService.cs):
Features:
- Complex Value Composition: Combine constant values with dynamic outputs in a single parameter
- Multi-Source Output Resolution: Reference outputs from the trigger action or any named previous reaction
- List Handling: Support for list-type parameters that can map to list-type outputs
- Dynamic Concatenation: Build complex strings by concatenating constants and output values
- Null-Safe Resolution: Gracefully handles missing sources or outputs
Example Scenarios:
- Email Template: Build email body combining constant text ("Issue created: ") with action output (issue title)
- File Naming: Create OneDrive filename using email subject and timestamp
- Chained Data: Use GitHub issue URL from first reaction in subsequent email notification
- Attachment Processing: Pass email attachments (list) directly to OneDrive save operation
Implementation:
ConvertToReactionInput(): Converts reaction parameters to inputs by resolving output referencesProcessComplexeValues(): Handles concatenation of constant and dynamic valuesoutputsBySource: Dictionary maintaining outputs from action and all reactions for downstream reference
The web application includes a visual node editor powered by React Flow:
Features:
- Drag-and-drop workflow construction
- Visual connection between triggers and reactions
- Real-time validation
- Export/import workflows
Usage:
- Navigate to "Create AREA" page
- Click "Node Editor" mode
- Drag actions and reactions onto canvas
- Connect nodes to create workflows
- Configure parameters in node properties
Documentation: Web Components - NodeAreaEditor
- Real-time statistics dashboard
- User activity tracking
- Automation execution logs
- System health monitoring
Interactive API documentation available at /api/about endpoint (if implemented).
We welcome contributions! This is a 3rd year Epitech project, and we appreciate any help.
-
Fork the repository
-
Read the documentation:
-
Pick an issue or create a new one:
- Check existing issues
- Create a new issue for bugs or features
- Wait for assignment before starting work
-
Follow the development workflow (see Development section)
-
Write tests for your changes
-
Update documentation if needed
-
Submit a Pull Request:
- Clear description of changes
- Reference related issues
- Ensure all checks pass
- Request review from maintainers
- Code Style: Follow existing code conventions
- Commits: Use conventional commit messages (feat:, fix:, docs:, etc.)
- Testing: Write tests for new features
- Documentation: Update relevant documentation
- Accessibility: Ensure new UI components are accessible
- Security: Never commit secrets or sensitive data
- π Bug Fixes: Help us fix issues
- β¨ New Features: Implement new automation types or services
- π Documentation: Improve or translate documentation
- π¨ UI/UX: Enhance user interface and experience
- βΏ Accessibility: Improve accessibility features
- π Internationalization: Add new languages
- β‘ Performance: Optimize code and queries
- π§ͺ Testing: Add more test coverage
- Be respectful and inclusive
- Provide constructive feedback
- Help others learn and grow
- Follow the project's coding standards
This project was developed as part of the 3rd year curriculum at Epitech.
Project Team:
- @ludecieldev - Web App & Frontend Lead
- @FukuInTheCode - Backend Lead
- @EmmaFrx - Backend & Mobile Developer
- @EwanEpitech - Mobile Lead
- @Niouthte - Frontend Developer
Institution: EPITECH - Lille
Year: 2025
- Epitech: For the educational framework and support
- Open Source Community: For the amazing tools and libraries
- Service Providers: Google, Microsoft, GitHub for their APIs
This project is developed as part of the Epitech curriculum. Please refer to your institution's policies regarding code sharing and licensing.
Note: This is an academic project. Please respect intellectual property and only use for educational purposes unless otherwise specified.
Current Version: 2.0 (AREA V2 Dynamic System)
Status:
- β Web Application: Production Ready
- β Server API: Production Ready
- β Mobile Application: Production Ready
- β AREA V2 System: Active Development
- π Additional Services: Planned
- π Advanced Features: In Progress
Built with β€οΈ by the AREA Team
Empowering automation, one workflow at a time