Backend infrastructure for Zen Watch, an open-source IFTTT for web3.
Below diagram showcases the various components of the project. Each of the components can be independently horizontally scaled.
![zen-watch-ifttt-architecture](https://private-user-images.githubusercontent.com/2181361/242176825-ab61ca59-0fca-4a08-be4a-8a8fa8a39598.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ3MTc0MjAsIm5iZiI6MTcyNDcxNzEyMCwicGF0aCI6Ii8yMTgxMzYxLzI0MjE3NjgyNS1hYjYxY2E1OS0wZmNhLTRhMDgtYmU0YS04YThmYThhMzk1OTgucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDgyNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA4MjdUMDAwNTIwWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NTZlZjQ1YWE4ZjkzNDA0YTFhNDAxOTM4ZWIzYmE0OGZiNzYxNjY3YjkwNjM5YzFhM2ZkZGNlNzQ4YjJjMGI3OCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.oJQVn8wIybq8g0xo7PCMiwhNv6NDGSQLoqEROKt7O_4)
NOTE: The event system in the repository is deprecated, a replacement SDK is currently in progress. The push plans for the core data structures are under the SQL push plan folder. This repository uses MySQL as the data store, you can run the push plans to recreate the data structures in your local development environment.
- Use underscore for names and all lowcaps, instead of camel_case. Ex,
camel_case
instead ofCamelCase
.
- zen-watch-api - contains the event processing apis
- zen-watch-background-job - contains the event processing background job logic
- zen-watch-sql-push-plans - contains the mysql schema files to restore the mysql db (table operation type, core & visualization, notification tables are separated by the respective prefixes)
- NOTES_Digital_Ocean.md -- contains the instructions to spin up a new server
- NOTES.md -- contains the various resources referenced during the implementation
Not setting to processing state now, as we want the subsequent task to pick up the unfinished task and right now, each shard is acted by one dedicated worker, which might be true in the future as well. Check out NOTES_MYSQL2.md to learrn more.