An IFTTT-style automation platform that connects multiple services (Google, Discord, Outlook, GitHub, Spotify, etc.) to trigger reactions based on actions. Built with Go backend, Vue 3 web client, and React Native mobile app.
For a complete user guide covering installation, OAuth configuration, step-by-step workflows for Web and Mobile, and troubleshooting, see:
documentation/USER_GUIDE.md
For developer documentation, see:
documentation/DEVELOPER_GUIDE.md- Architecture, API reference, and service integration guidedocumentation/HOWTOCONTRIBUTE.md- Contribution guidelines and Git workflow
- Backend: Go (Gin, GORM), OAuth 2.0, JWT authentication
- Database: PostgreSQL with GORM migrations
- Web Client: Vue 3, Vite, TypeScript, Nginx
- Mobile Client: React Native via Expo
- Containerization: Docker, Docker Compose
- Testing: Cypress (E2E and component testing for web)
-
Clone the repository:
git clone <repository-url> cd G-DEV-500-PAR-5-1-area-6
-
Create a
.envfile at the root (optional, see OAuth configuration section):WEB_PUBLIC_BASE_URL=http://localhost:8081 OAUTH_PUBLIC_BASE_URL=http://localhost:8081 MOBILE_API_BASE_URL=http://localhost:8080
-
Build and start all services:
docker compose up --build
-
Access the services:
- API: http://localhost:8080
- Web Client: http://localhost:8081
- PgAdmin: http://localhost:5050 (admin@area.com / admin)
- PostgreSQL: localhost:5433
The database is automatically migrated and seeded with services, actions, and reactions on first startup.
- Docker and Docker Compose (for quick start)
- Node.js 20.19+ (or 22.12+) for web client
- Node.js 18+ for mobile client
- Go 1.21+ for server
- Expo CLI (via
npm i -g expo-cliornpx expo)
cd server
go mod download
go run .The API listens on :8080 by default.
cd client_web
npm install
npm run devAccess the interface at the URL shown in the terminal (typically http://localhost:5173).
cd client_mobile
npm install
npm startScan the QR code with Expo Go app or launch a simulator. The mobile app auto-detects the LAN IP; you can also force the API URL if needed.
- JWT-based authentication
- OAuth login with Google and GitHub
- Email/password registration and login
- Token refresh mechanism
- User profile management
The platform supports 20+ integrated services:
- Google Services: Gmail, Drive, Calendar, Sheets, Tasks
- Microsoft: Outlook
- Communication: Discord, LinkedIn
- Code Management: GitHub, GitLab
- Productivity: Notion, Trello, Todoist
- Storage: Dropbox
- Social Media: X (Twitter), Reddit, Dribbble, Twitch
- Entertainment: Spotify
- Built-in: Timer, Weather
- Create, list, update, and delete AREAs
- Activate/deactivate AREAs
- Manual trigger for testing
- Favorite AREAs
- Execution history
- Parameter management for actions and reactions
- Real-time polling hooks for trigger detection
- Connect and disconnect service accounts
- OAuth 2.0 flow for all supported services
- Token refresh management
- Connection status checking
- Service-specific OAuth configurations
- Webhook endpoints for services that support it
- Webhook logging and debugging
- Test webhook functionality
- User profile (view and update)
- Account deletion
- Service subscriptions
- Admin panel (user management, system stats)
- Web Client: Cypress E2E tests and component tests
- E2E tests:
npm run test:e2e(interactive) ornpm run test:e2e:headless - Component tests:
npm run test:component(interactive) ornpm run test:component:headless
- E2E tests:
- AREA Handlers:
server/internal/handlers/areas.go - OAuth Connections:
server/internal/handlers/oauth_connections.go - Service Connectors:
server/internal/connectors/(drive.go, gmail.go, discord.go, etc.) - API Client (Web):
client_web/src/services/api.ts - API Client (Mobile):
client_mobile/src/services/api.ts - Docker Orchestration:
docker-compose.yml - Web Router:
client_web/src/router/index.ts - Mobile Screens:
client_mobile/src/screens/
For production use, configure OAuth credentials in your .env file or Docker environment variables:
GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETGOOGLE_LOGIN_REDIRECT_URLGOOGLE_OAUTH_REDIRECT_URLGOOGLE_LOGIN_REDIRECT_URL_MOBILEGOOGLE_OAUTH_REDIRECT_URL_MOBILE
DISCORD_CLIENT_IDDISCORD_CLIENT_SECRETDISCORD_REDIRECT_URL
MICROSOFT_CLIENT_IDMICROSOFT_CLIENT_SECRETMICROSOFT_REDIRECT_URLMICROSOFT_TENANT
GITHUB_CLIENT_IDGITHUB_CLIENT_SECRETGITHUB_LOGIN_REDIRECT_URLGITHUB_OAUTH_REDIRECT_URLGITHUB_LOGIN_REDIRECT_URL_MOBILEGITHUB_OAUTH_REDIRECT_URL_MOBILE
And similar variables for other services (Spotify, Dropbox, Notion, X, Trello, LinkedIn, Twitch, Reddit, GitLab, Todoist, Dribbble).
See server/internal/config/config.go for the complete list of required environment variables.
Note: Default local values exist for development, but create OAuth applications in respective developer portals for production use.
.
βββ server/ # Go backend
β βββ cmd/main.go # Entry point
β βββ internal/
β β βββ handlers/ # API handlers
β β βββ connectors/ # Service connectors (20+ services)
β β βββ models/ # Database models
β β βββ services/ # Business logic
β β βββ middleware/ # Auth, CORS middleware
β β βββ config/ # Configuration
β βββ pkg/auth/ # JWT authentication
βββ client_web/ # Vue 3 web application
β βββ src/
β β βββ pages/ # Route pages
β β βββ components/ # Vue components
β β βββ services/ # API client
β β βββ router/ # Vue Router
β βββ cypress/ # E2E and component tests
βββ client_mobile/ # React Native (Expo)
β βββ src/
β β βββ screens/ # App screens
β β βββ services/ # API client
β β βββ contexts/ # React contexts
β βββ app/ # Expo Router
βββ documentation/ # User and developer guides
βββ docker-compose.yml # Docker orchestration
E2E Tests:
cd client_web
npm run test:e2e # Interactive mode
npm run test:e2e:headless # Headless modeComponent Tests:
cd client_web
npm run test:component # Interactive mode
npm run test:component:headless # Headless modeSee client_web/cypress/README.md and client_web/cypress/COMPONENT_TESTING.md for detailed testing documentation.
The project is containerized with Docker Compose. Key services:
- postgres: PostgreSQL database (port 5433 on host)
- pgadmin: Database administration UI (port 5050)
- server: Go API server (port 8080)
- client_web: Vue app served via Nginx (port 8081)
- client_mobile: Expo build container
For production deployment, configure:
- Environment variables in
.env - OAuth redirect URLs for your domain
- Database credentials
- SSL/TLS certificates if needed
- Hubert Touraine - Project Owner
- RaphaΓ«l Chanliongco - Scrum Master
- Jean-Baptiste Boshra - Developer
- Gabin Rudigoz - Developer
See documentation/HOWTOCONTRIBUTE.md for contribution guidelines, Git workflow, and code quality requirements.