Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sg60/eventspider

2-way synchronisation of Notion and Google Calendar
https://github.com/sg60/eventspider

distributed dynamodb etcd google-calendar google-calendar-api notion rust sync

Last synced: 6 days ago
JSON representation

2-way synchronisation of Notion and Google Calendar

Awesome Lists containing this project

README

        

# EventSpider

frontend - https://github.com/SG60/EventSpider-frontend
https://www.notion.so/samgreening/Notion-Block-Sync-b0735065a45d48d6aeaef63bf07b7a96

Deployed to AWS?!

https://eu-west-2.console.aws.amazon.com/dynamodbv2/home?region=eu-west-2#item-explorer?initialTagKey=&table=tasks

[![Rust](https://github.com/SG60/EventSpider/actions/workflows/rust.yml/badge.svg)](https://github.com/SG60/EventSpider/actions/workflows/rust.yml)

[Terraform Cloud for deploying changes to DynamoDB](https://app.terraform.io/app/samgreening/workspaces/notion_sync)

---

Uses Just (see the justfile) for running scripts etc.

https://eu-west-2.console.aws.amazon.com/dynamodbv2/home?region=eu-west-2#item-explorer?initialTagKey=&table=tasks

# DB Design

- https://docs.rs/aws-sdk-dynamodb/latest/aws_sdk_dynamodb/
- https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.html
- https://github.com/awslabs/aws-sdk-rust/tree/main/examples/dynamodb
- https://docs.aws.amazon.com/sdk-for-rust/latest/dg/getting-started.html
- https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices.html

The DB just stores sync settings and refresh tokens.

## DB Schema

PK
Attributes

userId
SK
type (GSI-1-PK)
data (GSI-1-SK)

firebase auth user id
userDetails
type data notionBotId googleRefreshToken notionAccessToken other stuff
userDetailsACTIVE or INACTIVEnotionB#bot_id asdfasefa asdfasefa workspace name, workspace emoji, etc.
sync#0
typedata (next sync timestamp)last syncnotionDatabasegoogleCalendarnotionDBProps
syncSCHEDULED#2007-04-05T14:30Z
or DISABLED
or ERRORLAST#2007-04-05T14:30Zasdfaseasdf3

```json
{"notionTitleId":{"S":"title"},"notionDoneId":{"S":"O%7CaE"}}
```

GSI-1 will be:
type (e.g. userDetails)data

This should allow sorting all active syncs (e.g. 'sync' + startsWith 'SCHEDULED#') and other useful queries.

Probably doesn't need rows for items. Maybe they can all just be stored in memory.

https://eu-west-2.console.aws.amazon.com/dynamodbv2/home?region=eu-west-2#item-explorer?initialTagKey=&table=tasks

https://console.firebase.google.com/project/notion-sync-tools/authentication/users

# Notion Integration

https://www.notion.so/my-integrations/public/f8014299c7f64cac8315d858c2aab2c8

# Postman Workspace

https://web.postman.co/workspace/fe759fe4-0286-4679-860f-6dc84d8af0fc

# k8s infra

Deployed to Oracle kubernetes cluster.

https://github.com/SG60/EventSpider-infrastructure-config