Skip to content

Vortex is an HTTP endpoint generator that stores metadata from HTTP requests (e.g. from webhooks) sent to the produced endpoints for easy visualization.

Notifications You must be signed in to change notification settings

JoeCardoso13/Vortex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Vortex

Vortex is an application that generates endpoints to receive HTTP requests.

Instructions

Clone this repository and change directory to its root:

git clone https://github.com/JoeCardoso13/Vortex.git && cd Vortex

Then follow instructions in the README.md files from the server/ and client/ folders respectively.

Architecture

Vortex uses a hybrid PostgreSQL + MongoDB database system where PostgreSQL manages relational structure and MongoDB stores flexible request data.

                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                β”‚                      Incoming Request                       β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                         β”‚
                                         β–Ό
                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                              β”‚  DatabaseService     β”‚
                              β”‚   write_req()        β”‚
                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                        β”‚
                          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                          β”‚                           β”‚
                          β–Ό                           β–Ό
                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                β”‚    MongoDB       β”‚        β”‚   PostgreSQL     β”‚
                β”‚                  β”‚        β”‚                  β”‚
                β”‚  Requests        │◄───────│  Requests        β”‚
                β”‚  Collection      β”‚   ref  β”‚  Table           β”‚
                β”‚                  β”‚        β”‚                  β”‚
                β”‚  {               β”‚        β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
                β”‚    headers: {},  β”‚        β”‚  β”‚ bin_id      β”‚ β”‚
                β”‚    body: {},     β”‚        β”‚  β”‚ mongodb_    β”‚ β”‚
                β”‚    method: "GET",β”‚        β”‚  β”‚   doc_id ───┼─┼──┐
                β”‚    ...           β”‚        β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚  β”‚
                β”‚  }               β”‚        β”‚                  β”‚  β”‚
                β”‚                  β”‚        β”‚  Bins Table      β”‚  β”‚
                β”‚  ObjectId:       β”‚        β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚  β”‚
                β”‚  507f1f77bcf...  │◄───────┼──│ id          β”‚ β”‚  β”‚
                β”‚                  β”‚        β”‚  β”‚ path        β”‚ β”‚  β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚  β”‚
                                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
                                                                  β”‚
                                            Stores as VARCHAR(24) β”‚
                                            string reference β”€β”€β”€β”€β”€β”˜

How It Works

When writing a request:

  1. Full request payload (headers, body, method, etc.) is inserted into MongoDB's Requests collection
  2. MongoDB returns an ObjectId for the document
  3. A record is created in PostgreSQL's Requests table with:
    • bin_id (foreign key to the Bins table)
    • mongodb_doc_id (the MongoDB ObjectId stored as a VARCHAR(24) string)

When reading requests:

  1. PostgreSQL is queried to retrieve all mongodb_doc_id values for a specific bin
  2. Those string IDs are converted back to MongoDB ObjectIds
  3. All actual request documents are fetched from MongoDB in a single batch query

Why This Design?

This architecture provides:

  • PostgreSQL: Handles relational integrity (bins β†’ requests relationship), efficient filtering, and joins
  • MongoDB: Stores flexible, schema-less request payloads that can vary in structure
  • Bridge: The mongodb_doc_id column in PostgreSQL connects both databases seamlessly

About

Vortex is an HTTP endpoint generator that stores metadata from HTTP requests (e.g. from webhooks) sent to the produced endpoints for easy visualization.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published