---
# System prepended metadata

title: Data Ingestion UI

---

# Data Ingestion UI

## Acronyms
- `NF#` - Null frontend Task number
- `NB#` - Null backend Task number
- `TF#` - Trishul frontend Task number
- `TB#` - Trishul backend Task number

### Frontend
+ `Task NF1` - **Model Toolbox**- It will enable the user to add nodes and edges from the toolbox using drag and drop functionality to the design canvas.
+ `Task NF2` - **Design Canvas**- Canvas to create a graph like structure using nodes and edges to represent the different tables, their attributes and the relationship between different tables.
     - **add node**  - Add a functionality to implement a new table as a node into the graph.
    - **attribute properties** - this includes all the attributes of a particular  node.
    - **add edge** - Relation between node attributes.
    - **drag and drop** - a functionality that will add a new node and edge to the graph
    - **connection of attribute** - refers to establishing relationships between attributes in different nodes (tables) in the graph UI. This allows for the creation of edges to represent these relationships and helps to visualize the flow of data.
    - **population of node** - Populating nodes in the graph refers to adding data or information to the nodes, such as adding attributes or properties to a particular column in a table represented by a node.
    - **tags**- to identify primary and foreign keys.
+ `Task NF3` - **Menu bar**
    -  **import**- import JSON file and visualize the model as dynamic-graph and can edit it
    -  **export**- export dynamic-graph information generated by the user as a json file
    -  **save**- save the model
+ `Task TF1` - **Project Management UI** - It is a tool that helps to plan, organize, and keep track of progress on a project. It has a user-friendly visual interface that makes it easy to use.
    - **Create new** - New project which simply adds a node to the canvas.
    - **Edit** - This will either change a node, its attributes, or the relationship between the nodes.
    - **Delete** - To delete a particular project.
    - **Save** - Save the project at any stage.
    - **Info** - This is a simple log that contains number of nodes, number of relations involved so far.
    - **Update** - To update a particular project.
+ `Task TF2` - **Table visualization** - This feature shows the graph in the form of actual tables and the connection between nodes as the relation between the tables.A separate tab is dedicated for this feature which is a preview for graph as in table.
+ `Task TF3` - **Tooltips for additional information** Implement tooltips to show additional information about nodes and attributes when hovering over them in the graph UI.
    - **Contraints** - Show constraints applied on a particular table/node.
    - **Primary key** - Show primary key of a particular node/table.
    - **Foreign keys** - Show foreign keys of a particular node/table.
    - **Candidate Keys** - Show candidate keys of a particular node/table.
    


## Backend
From given different csv, we will extract the following inferences- 
- `Task NB1`- **table fields/attributes** 
- `Task NB2`- **attribute type** 
- `Task NB3`- **foreign keys** 
- `Task TB1`- **Identify Primary Key**
- `Task TB2`- **Generate the JSON**