{"id":26222304,"url":"https://github.com/harish876/forge","last_synced_at":"2026-05-19T22:36:35.945Z","repository":{"id":236448954,"uuid":"792631899","full_name":"harish876/forge","owner":"harish876","description":"Opiniated Framework to write ETL Pipelines  controlled by a central config store.","archived":false,"fork":false,"pushed_at":"2024-05-12T11:17:12.000Z","size":42,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-12T12:23:41.094Z","etag":null,"topics":["etl-framework","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/harish876.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-27T05:49:08.000Z","updated_at":"2024-06-05T18:01:55.674Z","dependencies_parsed_at":"2024-06-05T18:12:14.548Z","dependency_job_id":null,"html_url":"https://github.com/harish876/forge","commit_stats":null,"previous_names":["harish876/forge"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harish876%2Fforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harish876%2Fforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harish876%2Fforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harish876%2Fforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harish876","download_url":"https://codeload.github.com/harish876/forge/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243258492,"owners_count":20262297,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["etl-framework","python"],"created_at":"2025-03-12T16:51:46.589Z","updated_at":"2025-12-28T02:11:08.222Z","avatar_url":"https://github.com/harish876.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Forge - Framework to write ETL Pipelines driven by a central config store.\n\n## Table of Contents\n- [Forge - Framework to write ETL Pipelines driven by a central config store.](#forge---framework-to-write-etl-pipelines-driven-by-a-central-config-store)\n  - [Table of Contents](#table-of-contents)\n  - [Overview](#overview)\n  - [Features](#features)\n  - [Demo](#demo)\n  - [Design Patterns](#design-patterns)\n  - [Todos](#todos)\n\n## Overview\nThis project is aimed at providing a framework/structure for writing ETL Pipelines driven by a central config store. The code follows a few design patterns to make the code lean and easy to write. There is an accompanying CLI that generates boilerplate code and constructs an option factory.\n\n## Features\n 1. Framework and barebone boilerplate to write any ETL code.  \n 2. Provides a neat way to use a central config store to compose ETL pipelines using just configuration.\n 3. Accompanying this repository there is a\n    -   [CLI tool which does boilerplate code generation for different ETL Steps](https://github.com/harish876/forge/tree/main/cli)\n    -   [An LSP that provides code completion and goto definition features for the configs belonging to a specific job](https://github.com/harish876/forge-lsp)\n\n## Demo\n\u003cvideo width=\"600\" controls\u003e\n  \u003csource src=\"https://harish876.github.io/forge/cli_demo.mp4\" type=\"video/mp4\"\u003e\n  Your browser does not support the video tag.\n\u003c/video\u003e\n\nIf the video does not play, [click here to watch the CLI Demo](https://harish876.github.io/forge/cli_demo.mp4).\n\n\u003cvideo width=\"600\" controls\u003e\n  \u003csource src=\"https://harish876.github.io/forge/lsp_demo.mp4\" type=\"video/mp4\"\u003e\n  Your browser does not support the video tag.\n\u003c/video\u003e\n\nIf the video does not play, [click here to watch the LSP Demo](https://harish876.github.io/forge/lsp_demo.mp4).\n\n## Design Patterns\n1. Uses a Chain of Responsibility design pattern to execute each step of the ETL Pipeline.\n2. The idea is to create a linked list of jobs and then provide flexibility to the initiator of the linked list to execute each\n   step and traverse through the list of jobs in an iterative fashion. This is particularly useful in paginating, and streaming a large\n   dataset.\n3. Uses a Factory Pattern to use the central config store to compose ETL pipelines in different ways.\n\n\n## Todos\n1. Add Video Documentation to this repository for better presentation\n2. Create a Project ecosystem on Git Hub and make the CLI tool and LSP tool into individual repositories.\n3. Add a utility to add merge runtime CLI args with the original configs.\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharish876%2Fforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharish876%2Fforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharish876%2Fforge/lists"}