An automation platform that connects different services through customizable workflows, similar to IFTTT or Zapier.
AREA allows users to create automated workflows by connecting triggers from one service to actions in another service. For example, automatically create a GitHub issue every time a timer expires, or send a notification when new content is posted.
- Multi-platform Support: Web application, Android mobile app
- Service Integration: Connect popular third-party services through standardized APIs
- Custom Workflows: Create personalized automation rules with configurable parameters
- Real-time Execution: Workflows execute immediately when trigger conditions are met
- User Authentication: Secure OAuth integration with supported services
- Extensible Architecture: Easy integration of new service providers
The platform consists of three main components:
- Backend: Go-based API server handling workflow management and service integrations
- Web Frontend: React application for workflow creation and management
- Mobile App: Android application for on-the-go workflow monitoring
See ARCHITECTURE.md for detailed technical documentation.
- Docker and Docker Compose
- Go 1.19+ (for local development)
- Node.js 16+ (for frontend development)
- Android Studio (for mobile development)
- Clone the repository:
git clone https://github.com/dawpitech/area.git
cd area- Configure environment variables:
cp .env.example .env
# Edit .env with your configuration- Start the services:
docker-compose up -d- Access the application:
- Web interface: http://localhost:3000
- API documentation: http://localhost:8080/openapi.json
- Navigate to backend directory:
cd backend- Install dependencies:
go mod tidy- Set up environment variables:
cp .env.example .env
# Configure database and service credentials- Run database migrations:
go run migrate/migrate.go- Start the development server:
go run main.go- Navigate to web directory:
cd apps/web- Install dependencies:
npm install- Start development server:
npm start- Open Android Studio
- Open the
apps/mobiledirectory as an Android project - Sync Gradle dependencies
- Run on emulator or connected device
Required environment variables for backend:
# Database Configuration
DB_HOST=localhost
DB_USER=area
DB_PASSWORD=password
DB_NAME=area
DB_PORT=5432
# Server Configuration
PORT=8080
PUBLIC_URL=http://localhost:8080
GIN_MODE=debug
# JWT Configuration
JWT_SECRET=your-secret-key
# Service Integrations
GITHUB_OAUTH2_CLIENT_ID=your-github-client-id
GITHUB_OAUTH2_CLIENT_SECRET=your-github-client-secretEach service provider requires specific configuration:
-
Create a GitHub OAuth App:
- Go to GitHub Settings > Developer settings > OAuth Apps
- Create new OAuth App
- Set Authorization callback URL to:
http://localhost:8080/providers/github/auth/callback
-
Add credentials to environment:
GITHUB_OAUTH2_CLIENT_ID=your_client_id
GITHUB_OAUTH2_CLIENT_SECRET=your_client_secret- Authentication: Sign up or log in to the platform
- Service Authorization: Authorize the services you want to connect
- Trigger Selection: Choose an action that will trigger the workflow
- Reaction Configuration: Select what should happen when the trigger fires
- Parameter Setup: Configure any required parameters for both trigger and reaction
- Activation: Save and activate the workflow
Timer to GitHub Issue Creation:
- Trigger: Timer service "Repeat every" action with cron expression
- Reaction: GitHub service "Create an issue" action
- Parameters: Repository name, issue title, issue body
GitHub Push to Notification:
- Trigger: GitHub service "New push" action on specific repository
- Reaction: Email service "Send notification" action
- Parameters: Email address, notification template
The backend exposes RESTful APIs for all functionality:
POST /auth/signup- Create new user accountPOST /auth/sign-in- Authenticate user
GET /workflows- List user workflowsPOST /workflows- Create new workflowPUT /workflows/{id}- Update workflowDELETE /workflows/{id}- Delete workflow
GET /about.json- List available services and their capabilitiesGET /providers/{service}/auth/init- Initialize service authorizationGET /providers/{service}/auth/callback- Handle authorization callback
Complete OpenAPI specification available at /openapi.json when server is running.
You can also find a swagger available on port 8082.
- Timer: Schedule-based triggers with cron expressions
- GitHub: Repository events and issue management
- Email providers (Gmail, Outlook)
- Social media platforms (Twitter, Facebook)
- Cloud storage (Google Drive, Dropbox)
- Communication tools (Slack, Discord)
- Development tools (Jira, Trello)
See HOWTOCONTRIBUTE.md for detailed instructions on implementing new service integrations.
area/
├── backend/ # Go API server
│ ├── controllers/ # HTTP request handlers
│ ├── models/ # Database models
│ ├── services/ # Service provider integrations
│ └── main.go # Application entry point
├── apps/
│ ├── web/ # React web application
│ └── mobile/ # Android application
├── docker-compose.yml # Container orchestration
├── ARCHITECTURE.md # Technical architecture documentation
└── HOWTOCONTRIBUTE.md # Contribution guidelines
Run backend tests:
cd backend
go test ./...Run frontend tests:
cd apps/web
npm testThe project follows standard Go and JavaScript conventions:
- Go code formatted with
gofmt - JavaScript code formatted with Prettier
- ESLint for JavaScript code quality
- GORM for database operations
- Gin framework for HTTP routing
- Configure production environment variables
- Build Docker images:
docker-compose build- Deploy with production compose file:
docker-compose -f docker-compose.prod.yml up -d- Development: Debug logging, hot reload, local database
- Staging: Production-like environment for testing
- Production: Optimized builds, secure configurations, external database
- User passwords hashed with secure algorithms
- Service tokens encrypted before storage
- HTTPS enforced in production environments
- Input validation on all API endpoints
- Users control their own data and workflow configurations
- Service authorizations can be revoked at any time
- No data sharing between users without explicit consent
- Audit logs for workflow executions
- Workflow execution success rates
- API response times and error rates
- Service availability monitoring
- Database performance metrics
- Structured logging for all components
- Error tracking and alerting
- Performance profiling capabilities
- Request tracing for debugging
Contributions are welcome! Please read HOWTOCONTRIBUTE.md for guidelines on:
- Adding new service providers
- Submitting bug reports
- Proposing new features
- Code style and testing requirements
- Fork the repository
- Create feature branch from main
- Implement changes with tests
- Submit pull request with description of changes
This project is licensed under the MIT License. See LICENSE file for details.
- Architecture Guide - Technical system overview
- Contribution Guide - Developer instructions
- API Documentation - Available at
/openapi.jsonendpoint
- Issues: Report bugs or request features via GitHub Issues
- Discussions: Technical questions and community discussions
- Pull Requests: Code contributions and improvements
- Complete core service integrations
- Mobile application feature parity
- Workflow scheduling and history
- Enhanced error handling and logging
- Workflow templates and sharing
- Advanced conditional logic
- Real-time workflow monitoring
- Enterprise authentication integration
- Multi-tenant deployment support