{"id":15024847,"url":"https://github.com/typper-io/typper-bi","last_synced_at":"2025-08-07T23:24:46.240Z","repository":{"id":256669990,"uuid":"849631167","full_name":"typper-io/typper-bi","owner":"typper-io","description":"Talk with your data: Create a Single Source of Truth (SSoT) integrating Postgres, Google Sheets, MongoDB, and more","archived":false,"fork":false,"pushed_at":"2025-04-07T16:39:26.000Z","size":712,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T17:34:25.436Z","etag":null,"topics":["database","llm","mongo","postgres","sheets"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/typper-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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-08-30T00:23:46.000Z","updated_at":"2025-04-07T16:39:18.000Z","dependencies_parsed_at":"2024-10-30T15:35:58.806Z","dependency_job_id":null,"html_url":"https://github.com/typper-io/typper-bi","commit_stats":null,"previous_names":["typper-io/typper-bi"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typper-io%2Ftypper-bi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typper-io%2Ftypper-bi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typper-io%2Ftypper-bi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typper-io%2Ftypper-bi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/typper-io","download_url":"https://codeload.github.com/typper-io/typper-bi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248566905,"owners_count":21125748,"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":["database","llm","mongo","postgres","sheets"],"created_at":"2024-09-24T20:01:03.821Z","updated_at":"2025-04-12T12:34:20.131Z","avatar_url":"https://github.com/typper-io.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Typper BI\n\nWe believe in empowering businesses with an **AI-enhanced approach to data insights** that integrates seamlessly with your existing SaaS tools. Our vision is to offer a powerful, yet user-friendly, BI platform that transforms how data-driven decisions are made. Typper BI supports a wide array of integrations, from SaaS applications to data warehouses and lakes.\n\n## 📄 Documentation\n\n[here](https://typper.mintlify.app/introduction)\n\n## 🚀 Features\n\n- **Query your database with natural language**: Schedule events simply by typing or speaking in natural language.\n- **Get help with SQL**: Use ChatGPT integration to receive intelligent suggestions and automate meeting and event scheduling.\n- **Create dashboards**: AI-powered features to automatically adjust your calendar events when necessary (coming soon).\n- **Create reports**: Share your calendar with anyone, making it easier to coordinate schedules and commitments (coming soon).\n\n## 📦 Installation\n\nFollow the steps below to set up the project locally.\n\n1. **Clone the repository:**\n\n   ```bash\n   git clone https://github.com/typper-io/typper-bi.git\n   cd typper-bi\n   ```\n\n2. **Run docker compose:**\n\n   ```bash\n   docker compose up\n   ```\n\n3. **Deploy migrations with prisma**\n\n   ```bash\n   cd server\n   npx prisma migrate deploy\n   ```\n\n4. Access\n\n   - **Client**: [http://localhost:3000](http://localhost:3000)\n\n## 🛠️ Technologies Used\n\nFor client:\n\n- **Next.js**: A React framework for building modern, high-performance web applications.\n- **React**: A JavaScript library for building user interfaces.\n- **CSS Modules/TailwindCSS**: For styling the interface.\n\nFor server:\n\n- **NestJS**: A progressive Node.js framework for building efficient, reliable, and scalable server-side applications.\n- **OpenAI GPT**: Integration with OpenAI's GPT API for AI-powered assistance.\n- **Google OAuth**: For user authentication and authorization.\n- **PostgreSQL**: A powerful, open-source object-relational database system.\n\n## 🔧 Environment Variables\n\nThe project uses environment variables to store sensitive information and configuration settings. You need to set up the following environment variables to run the application successfully.\n\n### NEXTAUTH_SECRET\n\n- **Purpose:** A secret key used by NextAuth.js to sign and encrypt JWT tokens, ensuring the security of authentication tokens in the application.\n\n### GOOGLE_CLIENT_ID\n\n- **Purpose:** The client ID for integrating Google OAuth in your application, allowing users to authenticate using their Google account.\n\n### GOOGLE_CLIENT_SECRET\n\n- **Purpose:** The client secret associated with the Google Client ID, used in the OAuth flow to securely obtain access tokens.\n\n### NODE_ENV\n\n- **Purpose:** Specifies the environment in which the application is running, such as `development`, `production`, or `test`. This variable helps the application adjust its behavior accordingly.\n\n### NEXT_PUBLIC_SERVICE_ACCOUNT_EMAIL\n\n- **Purpose:** The email address of the Google Cloud Service Account, often used for accessing Google APIs, such as Google Sheets or Google Drive.\n\n### DATABASE_URL\n\n- **Purpose:** The connection string used to connect to your database. It typically includes the type of database, hostname, port, username, password, and database name.\n\n### SECRET_AWS_ACCESS_KEY\n\n- **Purpose:** The AWS access key used for programmatic access to AWS services, part of the AWS credentials.\n\n### SECRET_AWS_SECRET_KEY\n\n- **Purpose:** The AWS secret access key, which works alongside the AWS access key to authenticate and authorize requests to AWS services.\n\n### JWT_SECRET\n\n- **Purpose:** A secret key used for signing and verifying JSON Web Tokens (JWTs), ensuring the integrity and authenticity of the tokens.\n\n### GOOGLE_CREDENTIALS\n\n- **Purpose:** The JSON string containing Google service account credentials, used for authenticating and accessing Google Cloud APIs.\n\n### API_KEY\n\n- **Purpose:** A generic API key used to authenticate requests to third-party services or internal APIs.\n\n### RESEND_API_KEY\n\n- **Purpose:** API key for the Resend service, which is used for sending emails or notifications through an external email service.\n\n### ENCRYPTION_KEY\n\n- **Purpose:** The key used to encrypt sensitive data in the application, ensuring that data is stored securely.\n\n### IV\n\n- **Purpose:** The initialization vector used in conjunction with the encryption key to encrypt data. It adds randomness to the encryption process, making it more secure.\n\n### EMAIL_DOMAIN\n\n- **Purpose:** The domain used for sending emails from the application. This is often used to set the \"from\" address in email communications.\n\n### APP_DOMAIN\n\n- **Purpose:** The domain where your application is hosted. It’s used to configure various services like authentication, cookies, and redirects.\n\n### DATASOURCE_S3_BUCKET_NAME\n\n- **Purpose:** The name of the S3 bucket where your application’s data sources are stored, often used for file storage and retrieval.\n\n### WORKSPACE_IMAGES_BUCKET_NAME\n\n- **Purpose:** The name of the S3 bucket where images related to your application’s workspace are stored, typically used for user-uploaded content.\n\n### AWS_SSM_SECRET_PREFIX\n\n- **Purpose:** The prefix used in AWS Systems Manager (SSM) to organize and retrieve secrets from the Parameter Store.\n\n### DEMO_ASSISTANT_ID\n\n- **Purpose:** The identifier for a demo assistant, likely used in applications where an AI or assistant feature is demonstrated.\n\n## 🤖 Setting Up the OpenAI Assistant\n\nThis project includes an OpenAI Assistant that helps automate and manage your calendar through natural language. Follow the steps below to create and integrate the assistant:\n\n1. **Create an Assistant on the OpenAI Platform:**\n\n   - Visit the [OpenAI Assistants](https://platform.openai.com/assistants) page.\n   - Click on \"Create Assistant.\"\n   - Fill in the details such as the name, description, and abilities of your assistant.\n   - Ensure you enable the ability to run code within the assistant's settings.\n   - Save the Assistant and copy the `ASSISTANT_ID`.\n\n2. **Add the Assistant ID to Environment Variables:**\n\n   - Open your `.env.local` file.\n   - Add the `ASSISTANT_ID` you just copied.\n\n   ```bash\n   ASSISTANT_ID=your-assistant-id\n   ```\n\n3. **Configure the Assistant with Functions and Instructions:**\n\n   The JSON files and the instruction file you need to use for configuring the assistant are located in the `assistant/functions/` directory and in the `assistant/instruction.txt` file. Follow these steps to set them up:\n\n   - **Load Functions:**\n\n     - In the assistant configuration panel on OpenAI, find the section where you can add custom functions.\n     - Upload the functions files located in the `functions/` directory.\n\n   - **Add Instructions:**\n\n     - In the same panel, there will be an area to add instructions to the assistant.\n     - Copy the content of the `instruction.txt` file and paste it into the instruction area. These instructions will guide the assistant's behavior and how it should use the available functions.\n\n## 📄 License\n\nThis project is licensed under the [MIT License](./LICENSE.md).\n\n## 🤝 Contributions\n\nContributions are welcome! Feel free to open issues or pull requests to suggest improvements or fix issues.\n\n## 📧 Contact\n\nFor more information or support, contact [contact@typper.io](mailto:contact@typper.io).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypper-io%2Ftypper-bi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftypper-io%2Ftypper-bi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypper-io%2Ftypper-bi/lists"}