{"id":27455611,"url":"https://github.com/notyusheng/infojoe","last_synced_at":"2026-04-12T00:39:52.409Z","repository":{"id":285752345,"uuid":"959223617","full_name":"NotYuSheng/InfoJOE","owner":"NotYuSheng","description":"AI-powered natural language interface for PostgreSQL databases. Allows users to query and explore structured data using plain English.","archived":false,"fork":false,"pushed_at":"2025-04-11T13:22:09.000Z","size":128,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-11T13:46:22.134Z","etag":null,"topics":["docker","docker-compose","fastapi","lm-studio","postgres","qwen2-5","streamlit"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NotYuSheng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2025-04-02T13:01:48.000Z","updated_at":"2025-04-11T13:22:12.000Z","dependencies_parsed_at":"2025-04-02T14:22:34.062Z","dependency_job_id":"91f386c7-e1cc-40f8-990a-44161851d5f8","html_url":"https://github.com/NotYuSheng/InfoJOE","commit_stats":null,"previous_names":["notyusheng/query-agent","notyusheng/infojoe"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotYuSheng%2FInfoJOE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotYuSheng%2FInfoJOE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotYuSheng%2FInfoJOE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotYuSheng%2FInfoJOE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NotYuSheng","download_url":"https://codeload.github.com/NotYuSheng/InfoJOE/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249110866,"owners_count":21214411,"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":["docker","docker-compose","fastapi","lm-studio","postgres","qwen2-5","streamlit"],"created_at":"2025-04-15T16:44:19.585Z","updated_at":"2025-12-30T21:07:24.566Z","avatar_url":"https://github.com/NotYuSheng.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# InfoJOE\n\n**InfoJOE** is an AI-powered natural language interface for PostgreSQL databases. It allows users to explore and query structured data using plain English, powered by [Qwen 2.5](https://huggingface.co/Qwen/Qwen1.5-72B-Chat) running via [LM Studio](https://lmstudio.ai/).\n\n\u003cdetails\u003e\n  \u003csummary\u003eFull Page Sample\u003c/summary\u003e\n  \u003cbr\u003e\n  \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"sample-files/Full-DEMO.png\" alt=\"Full demo img\" style=\"width: 75%; max-width: 50px; height: auto;\" /\u003e\n  \u003c/div\u003e\n\u003c/details\u003e\n\n---\n\n## Getting Started\n\n### Start the Application\n\nRun the following command to build and start the containers:  \n\n```docker compose up -d```\n\nThis will: \n\n1. Build the Docker images for the FastAPI and Streamlit services.  \n2. Start the containers and serve the application.  \n\n---\n\n## Features\n\n- **Auto Table Discovery**:  \n   Automatically detects all tables in your connected PostgreSQL database.\n\n- **Interactive Table Selection**:  \n   Easily select tables using a click-to-select interface.\n\n- **LLM-Generated Data Dictionary**:  \n  Generates a clear, human-readable data dictionary for any selected table using Qwen 2.5.\n\n- **Diverse Data Sampling**:  \n  Previews a representative sample of rows to reflect different value distributions and data types, not just the top rows.\n\n- **Natural Language to SQL**:  \n  Translate natural language queries into SQL commands using Qwen 2.5.\n\n---\n\n## Prerequisites\n\nBefore you start, ensure the following tools are installed on your system:\n\n- Docker  \n- Docker Compose  \n\n---\n\n## Access the Application\n\n- **FastAPI Backend**:  \n  Visit \u003chttp://localhost:8000\u003e to access the API.  \n  Documentation is available at \u003chttp://localhost:8000/docs\u003e  \n\n- **Streamlit Frontend**:  \n  Visit \u003chttp://localhost:8080\u003e to interact with the frontend.  \n\n---\n\n## Development Workflow\n\n### Stopping the Application\n\nTo stop the application, press `Ctrl+C` or run the following command:  \n\ndocker-compose down  \n\nThis will stop and remove the containers, but the built images will remain.  \n\n---\n\n## Directory Structure\n\nThe project structure is as follows:  \n\n```shell\n.  \n├── backend/               # FastAPI application  \n│   ├── db.py              # Handles database connection and queries (e.g., to PostgreSQL or SQLite)\n│   ├── main.py            # FastAPI entrypoint  \n│   ├── requirements.txt   # Python dependencies for FastAPI  \n│   └── Dockerfile         # Dockerfile for FastAPI  \n├── frontend/              # Streamlit application  \n│   ├── app.py             # Streamlit entrypoint  \n│   ├── Dockerfile         # Dockerfile for Streamlit\n│   └── requirements.txt   # Python dependencies for streamlit  \n├── postgres/              # PostgreSQL setup folder\n│   └── init.sql           # SQL script to initialize the database (e.g., table creation, seed data)\n├── shared_utils/          # Shared Python utilities used by both frontend and backend\n│   └── functions.py       # Streamlit entrypoint  \n├── docker-compose.yml     # Docker Compose configuration\n└── README.md              # Project documentation  \n```\n\n---\n\n## Troubleshooting\n\n- Ensure Docker and Docker Compose are installed and running on your system.  \n- Verify that the required ports (8000 and 8080) are not in use by other \napplications.  \n\n---\n\n## License\n\nThis project is licensed under the MIT License. See the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotyusheng%2Finfojoe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotyusheng%2Finfojoe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotyusheng%2Finfojoe/lists"}