A powerful automation platform inspired by IFTTT and Zapier, built with a modern tech stack.
The project is organized as a monorepo using TurboRepo and pnpm, providing a seamless development experience across the backend, frontend, and mobile applications.
- Backend (
apps/api): Built with NestJS 11, leveraging GraphQL and Hasura for a robust and scalable API. - Frontend (
apps/web): Developed with Next.js 16 and React 19, styled with Tailwind CSS 4 and Radix UI. - Mobile (
apps/mobile): A native iOS application built with Swift and SwiftUI.
Ensure you have the following installed:
- Docker & Docker Compose
- Node.js (v20 or higher recommended)
- pnpm (v9 or higher recommended)
-
Clone the repository:
git clone https://github.com/EPITECH-IT-2028/Area.git cd Area -
Install dependencies:
pnpm install
-
Environment Variables: Copy the
.env.examplefile to.envand fill in the required values. -
Launch the infrastructure:
docker compose up -d postgres graphql-engine data-connector-agent
Starts the PostgreSQL database and Hasura engine.
-
Initialize Hasura:
pnpm hasura:setup
Applies migrations, metadata, and seeds.
To start the API and Web apps in development mode:
pnpm dev- Web App: http://localhost:8081
- API: http://localhost:8080
- Hasura Console:
pnpm hasura:console(at http://localhost:9695)
Alternatively, you can run the entire stack (including apps) via Docker:
docker compose up -d- Build all:
pnpm build - Lint all:
pnpm lint - Format all:
pnpm format - Type check:
pnpm check-types - Generate GraphQL types:
pnpm codegen
apps/: Main applications.api/: NestJS backend.web/: Next.js web application.mobile/: Swift/SwiftUI mobile app.
hasura/: Hasura GraphQL engine configuration, migrations, and metadata.packages/: Shared configurations (ESLint, TypeScript).docker/: Docker-related configuration files.
- Backend: NestJS, Passport (OAuth2 integrations), GraphQL, Hasura.
- Frontend: Next.js 16, React 19, Tailwind CSS 4, Radix UI, Sonner.
- Mobile: Swift, SwiftUI (MVVM architecture).
- Database: PostgreSQL.
- Tooling: TurboRepo, pnpm, Prettier, ESLint.