platform/services/gmail/pod-gmail
Artyom Savchenko a98b83d1e4
UBERF-10408: New gmail integration (#8869)
* UBERF-10375: Fix full message sync

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10375: Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Init new gmail integration

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Rename package

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Add mail channel and thread master tags

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Rename

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Create messages in cards

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Use new messages

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Use mail tags and add mail-common

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Use tags for mails

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Clean up tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Fix tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Apply client fixes

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Fix communication version

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Use adapter for message manager

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Remove gmail-next and improve performance

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Fix dep mismatch

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Add prefix for new history

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Fix failed tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-10408: Fix composite emails and add channel cache

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-05-12 11:26:46 +07:00
..
config Move services to public (#6156) 2024-07-28 14:55:43 +07:00
src UBERF-10408: New gmail integration (#8869) 2025-05-12 11:26:46 +07:00
.eslintrc.js Move services to public (#6156) 2024-07-28 14:55:43 +07:00
.gitignore UBERF-9764: Adjust gmail for new accounts (#8681) 2025-04-28 11:37:30 +05:00
.npmignore Move services to public (#6156) 2024-07-28 14:55:43 +07:00
Dockerfile Use new base image v20250310 (#8181) 2025-03-10 11:09:42 +07:00
jest.config.js Move services to public (#6156) 2024-07-28 14:55:43 +07:00
package.json UBERF-10408: New gmail integration (#8869) 2025-05-12 11:26:46 +07:00
README.md UBERF-9764: Adjust gmail for new accounts (#8681) 2025-04-28 11:37:30 +05:00
tsconfig.json Move services to public (#6156) 2024-07-28 14:55:43 +07:00

Pod Gmail Service

A service that provides Gmail integration capabilities for the Hardcore Engineering Platform. This service handles Gmail authentication, message synchronization, and workspace management.

Overview

The pod-gmail service is responsible for:

  • Managing Gmail client connections
  • Synchronizing emails across workspaces
  • Handling user authentication and token management
  • Providing Gmail integration features for the platform

Prerequisites

  • Node.js 16 or higher
  • Gmail API credentials
  • Hardcore Engineering Platform dependencies

Installation

  1. Install dependencies:
npm install
  1. Configure environment variables:
  • Create a .env file with necessary credentials
  • Configure Gmail API credentials

Example .env Configuration

Below is an example .env file for running the service locally:

PORT=8093
ACCOUNTS_URL="http://127.0.0.1:3000"
SECRET="secret"
WATCH_TOPIC_NAME="test"
Credentials={"web":{"client_id":"get_from_your_gmail_account","client_secret":"get_from_your_gmail_account","redirect_uris":["http://localhost:8088/signin/code"]}}
MINIO_ENDPOINT="localhost"
MINIO_ACCESS_KEY="minioadmin"
MINIO_SECRET_KEY="minioadmin"
KVS_URL="http://localhost:8098"

Make sure to replace the values with your actual credentials and configuration.

Development

Running Locally

rushx run-local

Building

rushx build

Testing

rushx test

Docker Support

The service can be built using Docker:

# Build Docker image
rushx docker:build

Configuration

The service requires the following configurations:

  • Gmail API credentials
  • Workspace-specific settings
  • Rate limiting configurations

API Integration

The service integrates with:

  • Gmail API for email operations
  • Hardcore Engineering Platform core services
  • Server core components

Dependencies

Core Dependencies

  • @hcengineering/core
  • @hcengineering/server-core
  • @hcengineering/server-client
  • @hcengineering/server-token
  • @hcengineering/gmail

External Dependencies

  • googleapis
  • google-auth-library
  • express
  • cors

License

This project is licensed under the Eclipse Public License, Version 2.0. See the LICENSE file for details.

Contributing

Contributions are welcome! Please read our contributing guidelines before submitting pull requests.

Support

For support, please contact the Hardcore Engineering team or open an issue in the repository.