From d3e20335613e5014d0236a6e2c0874114336b110 Mon Sep 17 00:00:00 2001 From: chavda-bhavik <bhavikvchavda@gmail.com> Date: Wed, 23 Nov 2022 09:52:35 +0530 Subject: [PATCH 1/4] fix: Updated main package.json to meet latest version of impler --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 226f2499b..6a2f69f48 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "impler.io", - "version": "0.1.0", + "version": "0.1.4", "description": "Open source infrastructure to import data easily", "packageManager": "pnpm@7.9.4", "private": true, From 3e7135d470b015bac6c53fbf6a5a4f5c1b8cbc4d Mon Sep 17 00:00:00 2001 From: chavda-bhavik <bhavikvchavda@gmail.com> Date: Wed, 23 Nov 2022 09:53:09 +0530 Subject: [PATCH 2/4] feat: Updated main README file --- README.md | 49 ++++++++++++------------------------------------- 1 file changed, 12 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index ec9aa5f94..c3afba906 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,6 @@ </li> <li><a href="#setup">Setup</a></li> <li><a href="#usage">Usage</a></li> - <li><a href="#roadmap">Roadmap</a></li> <li><a href="#contributing">Contributing</a></li> <li><a href="#license">License</a></li> <li><a href="#contact">Contact</a></li> @@ -77,48 +76,24 @@ To set up `impler.io` locally, you need the following things installed in your c Follow these steps to setup the project locally, 1. Clone the repo, `git clone https://github.com/knovator/impler.io`. 2. Install the dependencies, `pnpm install`. -3. Copy `.env.development` file from `apps/api/src` to `apps/api/src/.env` and do changes to variables if needed. +3. Do setups for projects by running, `pnpm setup:project`. 4. Start the application, `pnpm start:dev`. -5. Start interacting with API by visiting `http://localhost:3000/api`. - -<!-- USAGE EXAMPLES --> -## Usage - -`impler` need to be communicated through **REST API**, you can easily make call through **Swagger UI** provided at `http://localhost:3000/api`, -1. You create `project`. -2. You add `template` to `project`, Template refers to set of data you want to import i.e. users data. -3. Add `columns` to `template`, Column refers to individual fields template can have, for example users Template can have firstname, lastname, address, email, phonenumber, etc. -4. Upload `file` to `template`, After columns being set well, we're ready to import `.csv`, `.xls`, `.xlsx` file to aplication. - * `Upload` response returns data with `headings` specified in uploaded file. - * Keep note of uploaded file `id`, it will be used later. - * Uploaded file headings will be mapped automatically with `columns` provided for `template`. -5. Check `mapping` done for uploaded file, and finalize mappings. -6. Get `review` data for uploaded file and confirm reivew with option whether you want ot excempt invalid data or want to keep them. +5. Start interacting with API by visiting `http://localhost:3000/api` or see demo on `http://localhost:5173`. -<p align="right">(<a href="#readme-top">back to top</a>)</p> +### Add Import Schema -<!-- ROADMAP --> -## Roadmap - -- [x] API - - [x] Project - - [x] Template - - [x] Column - - [x] Upload - - [x] Mapping - - [x] Review - - [x] Processing data -- [x] Web - - [x] Upload Phase - - [x] Mapping Phase - - [x] Review Phase - - [x] Confirm Phase -- [x] Infra - - [x] Docker +After doing setup, you can easily make call to the `impler` through **Swagger UI** provided at `http://localhost:3000/api`, +1. Create `project` by calling `/v1/project` API, and Copy `_id` from the response. +2. Create `template` by calling `/v1/template/{projectId}` API, and Copy `_id` from the response. +3. Update `columns` for template by calling `/v1/column/{templateId}` API. -<p align="right">(<a href="#readme-top">back to top</a>)</p> +### See Demo + +If you're running `impler` locally, after [adding-schema](#add-import-schema) you can start interacting with import widget from `http://localhost:5173`. +<p align="right">(<a href="#readme-top">back to top</a>)</p> + <!-- CONTRIBUTING --> ## Contributing From f076165e033f2e3dcc6cae2dc661a8b906955bec Mon Sep 17 00:00:00 2001 From: chavda-bhavik <bhavikvchavda@gmail.com> Date: Wed, 23 Nov 2022 09:53:44 +0530 Subject: [PATCH 3/4] feat: Added README file to do self-host with docker --- docker/Readme.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 docker/Readme.md diff --git a/docker/Readme.md b/docker/Readme.md new file mode 100644 index 000000000..487317b87 --- /dev/null +++ b/docker/Readme.md @@ -0,0 +1,55 @@ + +Docker is the easiest way to get started with self-hosted `Impler`. + +## Before you begin + +You need the following installed in your system: + +- [Docker](https://docs.docker.com/engine/install/) and [docker-compose](https://docs.docker.com/compose/install/) +- [Git](https://git-scm.com/downloads) + +## Quick Start + +### Get the code + +Clone the Impler repo and enter the docker directory locally: + +```sh +# Get the code +git clone --depth 1 https://github.com/knovator/impler.io + +# Go to the docker folder +cd impler.io/docker + +# Copy the example env file +cp .env.example .env + +# Start +docker-compose up +``` + +Now visit [http://localhost:3000/api](http://localhost:3000/api) to define the schema for your import. + + +## Secure your setup + +While we provide you with some example secrets for getting started, you should NEVER deploy your Impler setup using the defaults provided. + +### Update Secrets + +Update the `.env` file with your own secrets. In particular, these are required: + +- `ACCESS_KEY`: used by the API as a header to authenticate `API` requests. + +## Configuration + +To keep the setup simple, we made some choices that may not be optimal for production: + +- the database is in the same machine as the servers +- the storage uses the S3 to store files + +We strongly recommend that you decouple your database before deploying. + +## Next steps + +- Got a question? [Ask here](https://github.com/knovator/impler.io/discussions). From 3e5e21d85ff6c53b9608168b2df34de8994b3333 Mon Sep 17 00:00:00 2001 From: chavda-bhavik <bhavikvchavda@gmail.com> Date: Wed, 23 Nov 2022 10:44:53 +0530 Subject: [PATCH 4/4] feat: Updated README for @impler/react --- packages/react/README.md | 63 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/packages/react/README.md b/packages/react/README.md index 7e4f775dd..2c528f61e 100644 --- a/packages/react/README.md +++ b/packages/react/README.md @@ -1 +1,62 @@ -<h1>impler</h1> \ No newline at end of file +<div align="center"> + <a href="https://impler.io"> + <img src="https://user-images.githubusercontent.com/50201755/203472285-e64392b4-b01d-4ee9-95d8-9a41297fdfe2.png" width="280" alt="Logo"/> + </a> +</div> +<h1 align="center">Embed Data Import into your Product</h1> + <p align="center"> + <br /> + <a href="https://docs.impler.io"><strong>Explore the docs »</strong></a> + · + <a href="https://discord.impler.io">Join Discord</a> + · + <a href="https://github.com/knovator/impler.io/issues/new">Report Bug</a> + </p> + +## ⭐️ Why +The ability to import data is often needed in the application. It usually starts the same, reading `.csv` or `.xlsx` file and insert records into the database. But after a while, you'll find yourself looping over large files, validating rows, and providing support for file types that you've never heard of them before. + +Impler's goal is to help developers create an efficient and smooth data import experience between the product and its users. All with an easy-to-use API and outstanding developer experience. + +## ✨ Features + +- 🌈 Mapping Support between specified Schema and Fields in File +- 💅 Validation Support +- 🚀 Webhook support to send uploaded data +- 🛡 Simple and powerful Authentication +- 📦 Easy to set up and integrate +- 🛡 Written in TypeScript + +## 📦 Install + +```bash +npm install @impler/react +``` + +```bash +yarn add @impler/react +``` + +## 🔨 Usage + +### Add Script +You copy this snippet to your code before the closing body tag. +```html +<script type="text/javascript" src="https://localhost:4701/embed.umd.min.js" async></script> +``` + +### Add Import Button + +```tsx +import { Button as ImportButton } from '@impler/react'; + +<ImportButton + projectId="<PROJECT_ID>" + template="<CODE_OR_ID>" /* optional */ + accessToken="<SECRET>" /* required if API is protected */ +/> +``` + +## 🔗 Links + +- [Home page](https://impler.io/)