├── .editorconfig ├── .github └── ISSUE_TEMPLATE │ ├── central_issue.md │ ├── config.yml │ └── feature_request.md ├── LICENSE ├── README.md ├── archived ├── resources │ ├── cypress.md │ ├── demos.md │ ├── dependencies.md │ ├── issues.md │ ├── pre-release-week.md │ ├── scopes.md │ └── sdk-labels.md ├── roadmap │ ├── 2021.md │ ├── 2022.md │ └── 2023.md └── templates │ └── CONTRIBUTING.md ├── assets ├── gifs │ ├── cypress.gif │ └── simple_test.gif ├── icons │ ├── dev.png │ ├── front.png │ ├── other.png │ └── wip.png ├── logos │ ├── logo.svg │ ├── meilisearch_angular.png │ ├── meilisearch_angular.svg │ ├── meilisearch_aws.png │ ├── meilisearch_aws.svg │ ├── meilisearch_dart.svg │ ├── meilisearch_do.svg │ ├── meilisearch_dotnet.png │ ├── meilisearch_dotnet.svg │ ├── meilisearch_elixir.png │ ├── meilisearch_elixir.svg │ ├── meilisearch_firebase.png │ ├── meilisearch_firebase.svg │ ├── meilisearch_flutter.png │ ├── meilisearch_flutter.svg │ ├── meilisearch_gatsby.png │ ├── meilisearch_gatsby.svg │ ├── meilisearch_gcp.svg │ ├── meilisearch_go.png │ ├── meilisearch_go.svg │ ├── meilisearch_java.png │ ├── meilisearch_java.svg │ ├── meilisearch_js.png │ ├── meilisearch_js.svg │ ├── meilisearch_k8s.svg │ ├── meilisearch_laravel.png │ ├── meilisearch_laravel.svg │ ├── meilisearch_laravel_scout.png │ ├── meilisearch_laravel_scout.svg │ ├── meilisearch_magento.png │ ├── meilisearch_magento.svg │ ├── meilisearch_php.png │ ├── meilisearch_php.svg │ ├── meilisearch_python.png │ ├── meilisearch_python.svg │ ├── meilisearch_rails.png │ ├── meilisearch_rails.svg │ ├── meilisearch_react.png │ ├── meilisearch_react.svg │ ├── meilisearch_ruby.png │ ├── meilisearch_ruby.svg │ ├── meilisearch_rust.png │ ├── meilisearch_rust.svg │ ├── meilisearch_strapi.svg │ ├── meilisearch_swift.png │ ├── meilisearch_swift.svg │ ├── meilisearch_symfony.svg │ ├── meilisearch_vuejs.png │ ├── meilisearch_vuejs.svg │ ├── meilisearch_vuepress.png │ └── meilisearch_vuepress.svg └── screenshots │ ├── bors_merge.png │ ├── bors_try.png │ └── dashboard.png ├── resources ├── bors.md ├── build-integration.md ├── integration-release.md ├── meilisearch-pre-release-work.md ├── message-templates.md ├── release-drafter.md ├── tiers.md └── versioning.md └── scripts └── get-latest-meilisearch-rc.sh /.editorconfig: -------------------------------------------------------------------------------- 1 | # see http://editorconfig.org/ 2 | 3 | root = true 4 | 5 | [*] 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | charset = utf-8 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/central_issue.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: New central issue 3 | about: ⚠️ Should only be used by the internal Meili team ⚠️ 4 | title: 'Changes related to Meilisearch v1.Y.0' 5 | labels: 'Meilisearch bump' 6 | assignees: 'curquiza, brunoocasali, Strift' 7 | --- 8 | 9 | This issue gathers the changes related to the v1.Y.0 of Meilisearch that will impact the integrations scope. 10 | 11 | 📅 Release date: TBD 12 | 13 | ## Timelines & steps 14 | 15 | ### Pre-release 16 | 17 | - [ ] With the help of the [changelog](https://github.com/meilisearch/engine-team/pulls) & [this CI](https://github.com/meilisearch/meilisearch/actions/workflows/sdks-tests.yml), define which integrations should be updated and how (New feature? Update README? Update tests?) 18 | - [ ] **Fill in** the "What to implement?" section below in this issue 👇. Minial implementation: PHP, JS, meilisearch-js-plugins. 19 | - [ ] Open implementation issues in repositories that need implementation (if necessary for developers who will work on the tasks). 20 | - [ ] Discuss with the Product team if needed. At least share this issue to let them know about the decisions. 21 | - [ ] Create a branch by running [Octopus script](https://github.com/meilisearch/integration-automations/tree/main/octopus): only open branches for the integrations we choose to update (defined in the previous step) + Kubernetes repository + Cloud provider repository (changing the version) 22 | - [ ] Update integrations according to the decisions (cf "What to implement?" section below in this issue 👇) 23 | ⚠️ If possible, this step is done before pre-release, once the feature is ready thanks to the prototype released by the engine team 24 | - [ ] JS 25 | - [ ] PHP 26 | - [ ] ... TBD 27 | - [ ] Add code samples for the chosen up-to-date integrations with the new version of Meilisearch 28 | - [ ] Update the library version of the related integrations and prepare the changelogs 29 | 30 | ### Release day 31 | 32 | - [ ] Release the integrations or only merge the related PRs (sometimes a release is not needed) 33 | - [ ] JS 34 | - [ ] PHP 35 | - [ ] meilisearch-js-plugins (at least update meilisearch-js version) 36 | - [ ] ... TBD 37 | - [ ] Merge the related PR in [K8s repository](https://github.com/meilisearch/meilisearch-kubernetes/pulls) 38 | - [ ] Publish [DevOps tools](https://github.com/meilisearch/cloud-providers/): 39 | - [ ] create the git tag 40 | - [ ] publish images (steps are in CONTRIBUTING.md) 41 | - [ ] Remove useless AWS images (by using our [internal script](https://github.com/meilisearch/integration-automations/tree/main/cloud-providers)) 42 | - [ ] Open issues in the repositories that are not up-to-date with the latest version of Meilisearch (**including code samples**) 43 | 44 | ## What to implement? 45 | 46 | ### 47 | 48 | Related issue in the engine: 49 | 50 | Brief explanation of the feature and the impact potential impact on the integrations 51 | 52 | TODO: 53 | - [ ] JS: TBD 54 | - [ ] PHP: TBD 55 | - [ ] ... TBD 56 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | contact_links: 2 | - name: Support questions & other 3 | url: https://discord.meilisearch.com/ 4 | about: Support is not handled here but on our Discord 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Detail your needs regarding multiple Meilisearch integrations. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | --- 8 | 9 | **Describe your need. Be as precise as possible.** 10 | 11 | **Which integrations are involved? If only one, please open an issue directly in the corresponding repository.** 12 | 13 | **Additional context** 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020-2025 Meili SAS 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | Meilisearch 4 | 5 |

6 | 7 | 8 |

Meilisearch Integrations

9 |
This repository is the central reference for developing and maintaining integrations for Meilisearch. 10 |
11 | 12 |

13 | Website | 14 | Roadmap | 15 | Meilisearch Cloud | 16 | Blog | 17 | Documentation | 18 | FAQ | 19 | Discord 20 |

21 | 22 | > Meilisearch is an open-source search engine that offers fast, relevant search out of the box. 23 | 24 | 👉 [Meilisearch repository](https://github.com/meilisearch/meilisearch) 25 | 26 | ## 🛠 Meilisearch Integrations 27 | 28 | Here are the different groups of integrations: 29 | 30 | - the **SDKs**: the *devkits* that help the devs to use Meilisearch with their favorite language. 31 | - the **Front-End Integrations**: to integrate a smooth search experience in the front-end of the projects. 32 | - the **Web Framework Integrations**: to connect the web frameworks with Meilisearch. 33 | - the **DevOps Tools**: to make the deployment of Meilisearch easier. 34 | - the **Platform Plugins**: to sync your data with Meilisearch and/or add a search experience on different platforms. 35 | 36 | The exhaustive list of the maintained repositories by the team is available below. 37 | 38 | ### SDKs for Meilisearch API 39 | 40 | - [.Net](https://github.com/meilisearch/meilisearch-dotnet) 41 | - [Dart](https://github.com/meilisearch/meilisearch-dart) 42 | - [Golang](https://github.com/meilisearch/meilisearch-go) 43 | - [Java](https://github.com/meilisearch/meilisearch-java) 44 | - [JavaScript](https://github.com/meilisearch/meilisearch-js) 45 | - [PHP](https://github.com/meilisearch/meilisearch-php) 46 | - [Python](https://github.com/meilisearch/meilisearch-python) 47 | - [Ruby](https://github.com/meilisearch/meilisearch-ruby) 48 | - [Rust](https://github.com/meilisearch/meilisearch-rust) 49 | - [Swift](https://github.com/meilisearch/meilisearch-swift) 50 | 51 | ### 🏗 Framework Integrations 52 | 53 | - Laravel: the official [Laravel-Scout](https://github.com/laravel/scout) package supports Meilisearch. 54 | - [Ruby on Rails](https://github.com/meilisearch/meilisearch-rails) 55 | - [Symfony](https://github.com/meilisearch/meilisearch-symfony) 56 | 57 | ### Front-End Integrations 58 | 59 | - [React](https://github.com/meilisearch/meilisearch-react) 60 | - [Vue](https://github.com/meilisearch/meilisearch-vue) 61 | - [instant-meilisearch](https://github.com/meilisearch/meilisearch-js-plugins/tree/main/packages/instant-meilisearch): A search client that enables the integration of the open-source tool [instantsearch.js](https://www.algolia.com/doc/guides/building-search-ui/what-is-instantsearch/js/) with Meilisearch. This client allows you to combine the functionalities of Meilisearch with InstantSearch.js, resulting in a powerful and interactive search user interface. 62 | - [Autocomplete client](https://github.com/meilisearch/meilisearch-js-plugins/tree/main/packages/autocomplete-client): A search client that enables the integration of the open-source tool [autocomplete-js](https://www.algolia.com/doc/ui-libraries/autocomplete/introduction/what-is-autocomplete/) with Meilisearch. This client allows you to utilize the powerful features of Meilisearch in combination with autocomplete functionality for an enhanced search experience. 63 | 64 | ### 🧩 Platform Plugins 65 | 66 | - [Firestore](https://github.com/meilisearch/firestore-meilisearch/) 67 | - [Gatsby](https://github.com/meilisearch/gatsby-plugin-meilisearch/) 68 | - [Strapi](https://github.com/meilisearch/strapi-plugin-meilisearch) 69 | 70 | ### 🐳 DevOps Tools 71 | 72 | - [meilisearch-kubernetes](https://github.com/meilisearch/meilisearch-kubernetes): A helm chart that help you deploying Meilisearch on Kubernetes. 73 | - [Cloud Providers](https://github.com/meilisearch/cloud-providers): Centralize a set of tools to build Meilisearch images for multiple platforms. 74 | How to deploy a Meilisearch instance on every provider: 75 | - See this [dedicated page for AWS](https://www.meilisearch.com/docs/learn/cookbooks/aws?utm_campaign=oss&utm_source=github&utm_medium=integration-guides) to use it. 76 | - See this [dedicated page for DigitalOcean](https://www.meilisearch.com/docs/learn/cookbooks/digitalocean?utm_campaign=oss&utm_source=github&utm_medium=integration-guides) to use it. 77 | 78 | ### Misc 79 | 80 | - [docs-scraper](https://github.com/meilisearch/docs-scraper): a scraper tool to automatically read the content of your documentation and store it into Meilisearch. 81 | - [meilisearch-migration](https://github.com/meilisearch/meilisearch-migration/) 82 | - [mini-dashboard](https://github.com/meilisearch/mini-dashboard/) 83 | 84 | ### 🚧 Work In Progress 85 | 86 | - [Flutter](https://github.com/meilisearch/meilisearch-flutter) 87 | 88 | ### ⚠️ Deprecated 89 | 90 | - [Angular](https://github.com/meilisearch/meilisearch-angular) 91 | - [docs-searchbar.js](https://github.com/meilisearch/docs-searchbar.js): a search bar integration for all kinds of documentation. 92 | - [VuePress](https://github.com/meilisearch/vuepress-plugin-meilisearch) 93 | - Meilisearch image for GCP (one-click deploy), originally available [in this repository](https://github.com/meilisearch/cloud-providers). 94 | 95 | ## 🍿 Discussions 96 | 97 | Our general discussions are available in the [issues of this repository](https://github.com/meilisearch/integration-guides/issues). 98 | 99 | Feel free to take part of our current discussions, or [create a new issue](https://github.com/meilisearch/integration-guides/issues/new). 100 | 101 | ## 📖 Documentation 102 | 103 | Read the official [Meilisearch docs](https://docs.meilisearch.com?utm_campaign=oss&utm_source=github&utm_medium=integration-guides). 104 | 105 | ## 🚀 Building an Integration 106 | 107 | If you want to build an integration for Meilisearch, you are more than welcome to! And we would be more than happy to help you in the process :) 108 | 109 | We are proud that some of our libraries were developed and are still maintained by external contributors ❤️ 110 | 111 | Here are [some guidelines](./resources/build-integration.md) that you should follow, as we want to guarantee consistency and coherence across the different integrations, as well as technical quality for the different Meilisearch users. 112 | -------------------------------------------------------------------------------- /archived/resources/cypress.md: -------------------------------------------------------------------------------- 1 | # Cypress: front-end testing 2 | 3 | [Cypress](https://www.cypress.io/) is a fast, easy and reliable testing tool for anything that runs in a browser. 4 | 5 | ## Table of Contents 6 | - [Motivations](#-motivations) 7 | - [How does cypress work](#-how-does-cypress-work) 8 | - [Requirements](#-requirements) 9 | - [Installation](#-installation) 10 | - [Setup](#-setup) 11 | - [First Test](#-first-test) 12 | - [Running Tests](#-first-test) 13 | 14 | ## Motivations 15 | 16 | As browser testing was, until now, a complex task, we did not add browser testing in our repositories. 17 | 18 | The absence of front-end tests makes it dangerous to accept any PR; reviews ask for a lot of manual front-end testing, and thus merging becomes an overall unreliable, time-consuming task. 19 | 20 | With Cypress, every aspect of front-end testing is made very simple: 21 | 22 | - Implementation of the testing library 23 | - Creating and adding tests 24 | - Adding Cypress to the CI 25 | 26 | ## How Does Cypress Work 27 | 28 | Cypress runs your tests in all the specified browsers. Both in headless mode (without a browser opening) and an open mode so you can observe why tests are failing in the browser itself. 29 | 30 | This is the none-headless mode: 31 | 32 | ![Cypress tests](../assets/gifs/cypress.gif) 33 | 34 | ## Requirements 35 | 36 | - Node.js >= v12 37 | - [The browsers](https://docs.cypress.io/guides/guides/launching-browsers) you want to tests 38 | 39 | ## Installation 40 | 41 | In a Node.js environment, install the Cypress package (`Node 14 >=` required): 42 | 43 | ```bash 44 | yarn add cypress --dev 45 | ``` 46 | 47 | or with npm: 48 | 49 | ```bash 50 | npm install cypress --save-dev 51 | ``` 52 | 53 | ## Setup 54 | 55 | The tests are looked for by Cypress in the following sub-folder `cypress/integration`. So let us create the sub-folders and our first test file. 56 | 57 | ``` 58 | mkdir cypress 59 | cd cypress 60 | mkdir integration 61 | cd integration 62 | touch first_tests.specs.js 63 | ``` 64 | 65 | **Setup is done.** 66 | 67 | ## First Test 68 | 69 | Let's open `first_tests.specs.js` to create some tests. 70 | 71 | ```js 72 | const HOST = `http://localhost:8080` // Please adjust to your own app port 73 | 74 | describe(`My first test`, () => { 75 | before(() => { 76 | cy.visit(HOST) // Visit our app 77 | }) 78 | 79 | it('Should visit the dashboard', () => { 80 | cy.url().should('match', new RegExp(HOST)) // The current host URL 81 | }) 82 | }) 83 | ``` 84 | 85 | _You might have some ESLint error, please consult [next section](#cleaning) to remove errors._ 86 | 87 | Before testing, run your app using your starting script (for example `yarn start` or `yarn serve`). Following the above example, we are assuming it is served on port `8080`. If it's not, change it accordingly with your port. 88 | 89 | Now let's run the tests in not-headless and watch mode so we can see what is happening: 90 | 91 | ``` 92 | cd ../.. # Go back to the root of the project 93 | npx cypress open 94 | ``` 95 | 96 | This will open the following dashboard. 97 | 98 | ![Cypress dashboard](../assets/screenshots/dashboard.png) 99 | 100 | Click on the file name `first_tests.specs.js`. This should run the tests: 101 | 102 | ![Cypress simple test](../assets/gifs/simple_test.gif) 103 | 104 | The tests will run again on every change in your code (watch mode). 105 | 106 | To run the tests in headless mode: 107 | ``` 108 | npx cypress run 109 | ``` 110 | 111 | Starting from there, you can add more tests. See example on [our Strapi plugin](https://github.com/meilisearch/strapi-plugin-meilisearch/blob/main/cypress/integration/ui_spec.js) or [instant-meilisearch](https://github.com/meilisearch/meilisearch-js-plugins/blob/main/playgrounds/local-react/cypress/integration/search-ui.spec.js). 112 | 113 | For example: 114 | ```js 115 | it('Contains title', () => { 116 | cy.contains('Movies Demo with Meilisearch') 117 | }) 118 | ``` 119 | 120 | ## Running Server and Tests in One Command 121 | 122 | A limitation of the previous system is that we have to both start our app on one side and the tests on the other.
123 | A solution is to launch both with the same command using [concurrently](https://www.npmjs.com/package/concurrently).
124 | This package will start your app, wait for it to be fully running, and then run the tests. 125 | 126 | The following command will run the tests in headless mode once the server is running. When the tests are done, the process is killed. 127 | 128 | ```bash 129 | npx concurrently --kill-others -s first "yarn start" "cypress run" 130 | ``` 131 | 132 | It is also possible in no-headless mode: 133 | 134 | ```bash 135 | npx concurrently --kill-others -s first "yarn start" "cypress open" 136 | ``` 137 | 138 | To add this command in your package.json follow the implementation in [strapi-plugin-meilisearch](https://github.com/meilisearch/strapi-plugin-meilisearch/blob/main/package.json). 139 | 140 | ## Cleaning 141 | 142 | ### Remove ESLint errors 143 | 144 | When using `eslint`, errors might be raised because of the unrecognized globals Cypress introduces (same as jest). 145 | 146 | Please add the following package: 147 | 148 | ``` 149 | yarn add eslint-plugin-cypress --dev 150 | ``` 151 | 152 | And update your `eslint` config file: 153 | 154 | ```js 155 | extends: [ 156 | ... 157 | 'plugin:cypress/recommended', 158 | ], 159 | ``` 160 | 161 | ### Update your `.gitignore` 162 | 163 | Cypress creates additional directories inside `cypress` that are useful but should maybe not be pushed: 164 | 165 | - `/videos`: Every test run will generate a video you can watch to see what went wrong. 166 | - `/screenshots`: Contains screenshots in case of test failures. 167 | - `/fixtures`: Only keep if needed. 168 | - `/plugins`: Only keep if needed. 169 | - `/support`: Only keep if needed. 170 | 171 | To avoid pushing these directories, add them to your `.gitignore` 172 | 173 | ``` 174 | # Cypress 175 | cypress/screenshots 176 | cypress/videos 177 | cypress/support 178 | cypress/plugins 179 | cypress/fixtures 180 | ``` 181 | 182 | ## CI Implementation with GH Actions 183 | 184 | [Cypress has a github-action](https://github.com/cypress-io/github-action) to ease CI testing. 185 | 186 | Using the following setup, your tests will run on a Google Chrome browser and create artifacts in GitHub in case of failure: 187 | ```yml 188 | cypress-run: 189 | runs-on: ubuntu-latest 190 | # Browser on which the tests are run 191 | container: cypress/browsers:node12.18.3-chrome87-ff82 192 | steps: 193 | - name: Checkout 194 | uses: actions/checkout@v2 195 | - name: Setup node 196 | uses: actions/setup-node@v1 197 | with: 198 | node-version: '12.x' 199 | - name: Install dependencies 200 | run: yarn 201 | - name: Browser tests 202 | uses: cypress-io/github-action@v2 203 | with: 204 | # Your starting script 205 | start: yarn start 206 | # Creates and uploads GitHub artifacts in case of failure 207 | - uses: actions/upload-artifact@v1 208 | if: failure() 209 | with: 210 | name: cypress-screenshots 211 | path: cypress/screenshots 212 | - uses: actions/upload-artifact@v1 213 | if: failure() 214 | with: 215 | name: cypress-videos 216 | path: cypress/videos 217 | ``` 218 | 219 | ## Conclusion 220 | 221 | Testing in front-end became a more accessible task. We should not hesitate to add tests as they avoid losing **a lot of time** in the long run 🏃‍♀️ 222 | -------------------------------------------------------------------------------- /archived/resources/demos.md: -------------------------------------------------------------------------------- 1 | # Integration team demos 2 | 3 | :warning: This is a responsibility of the Meilisearch DevRel team now. 4 | 5 | The integration team is also responsible for maintaining some Meilisearch indexes and demos that can be useful for the users and the developers. 6 | 7 | ## Meilisearch instance 8 | 9 | The Meilisearch instance maintained by the integration team is available on `https://integration-demos.meilisearch.com`. Ask an administrator to get the master key. 10 | 11 | This instance contains the indexes officially used by the integration team for demos, playgrounds... 12 | 13 | Here are the exhaustive list of the indexes: 14 | 15 | - `steam-video-games` used by the code-sandboxes mentioned in the following section. 16 | - `world_cities` used in the [instant-meilisearch playground related to geo-search](https://github.com/meilisearch/meilisearch-js-plugins/tree/main/playgrounds/geo-javascript). 17 | 18 | ## Code sandboxes 19 | 20 | The following code-sandbox demos related to InstantSearch are maintained: 21 | 22 | - [Meilisearch + InstantSearch](https://codesandbox.io/s/ms-is-mese9?fontsize=14&hidenavigation=1&theme=dark) 23 | - [Meilisearch + Vue 2 InstantSearch](https://codesandbox.io/s/ms-vue-is-1d6bi?fontsize=14&hidenavigation=1&theme=dark&file=/src/App.vue) 24 | - [Meilisearch + Vue 3 InstantSearch](https://codesandbox.io/s/ms-vue3-is-0293zk?file=/src/App.vue) 25 | - [Meilisearch + React InstantSearch](https://codesandbox.io/s/ms-react-is-sh9ud?fontsize=14&hidenavigation=1&theme=dark) 26 | - [Meilisearch + Angular InstantSearch](https://codesandbox.io/s/ms-angularis-7xipe) 27 | 28 | This code-sandboxes are used in the corresponding front-end integration READMEs. 29 | 30 | These demos are using the same `steam-video-games` index. 31 | -------------------------------------------------------------------------------- /archived/resources/dependencies.md: -------------------------------------------------------------------------------- 1 | # Dependencies between the repositories 2 | 3 | This resource is an exhaustive list of the existing dependencies between the integration team projects. 4 | 5 | ## JavaScript SDK 6 | 7 | They depend on [`meilisearch-js`](https://github.com/meilisearch/meilisearch-js): 8 | - [`docs-searchbar.js`](https://github.com/meilisearch/docs-searchbar.js) 9 | - [`firestore-meilisearch`](https://github.com/meilisearch/firestore-meilisearch/) 10 | - [`gatsby-plugin-meilisearch`](https://github.com/meilisearch/gatsby-plugin-meilisearch/) 11 | - [`instant-meilisearch`](https://github.com/meilisearch/meilisearch-js-plugins/tree/main/packages/instant-meilisearch) 12 | - [`autocomplete-client`](https://github.com/meilisearch/meilisearch-js-plugins/tree/main/packages/autocomplete-client) 13 | - [`strapi-plugin-meilisearch`](https://github.com/meilisearch/strapi-plugin-meilisearch/) 14 | - [`mini-dashboard`](https://github.com/meilisearch/mini-dashboard/) 15 | 16 | ## PHP SDK 17 | 18 | They depend on [`meilisearch-php`](https://github.com/meilisearch/meilisearch-php): 19 | - [`laravel/scout`](https://github.com/laravel/scout) 20 | - [`meilisearch-symfony`](https://github.com/meilisearch/meilisearch-symfony/) 21 | 22 | ## Python SDK 23 | 24 | They depend on [`meilisearch-python`](https://github.com/meilisearch/meilisearch-python): 25 | - [`docs-scraper`](https://github.com/meilisearch/docs-scraper/) 26 | 27 | ## Ruby SDK 28 | 29 | They depend on [`meilisearch-ruby`](https://github.com/meilisearch/meilisearch-ruby): 30 | - [`meilisearch-rails`](https://github.com/meilisearch/meilisearch-rails/) 31 | 32 | Also, even if they are not parts of the integration team, we should keep in mind the following projects strongly depend on `meilisearch-ruby`: 33 | - the [`meilisearch-cloud`](https://github.com/meilisearch/meilisearch-cloud) backend (link only accessible internally) 34 | 35 | ## Instant Meilisearch 36 | 37 | They depend on [`instant-meilisearch`](https://github.com/meilisearch/meilisearch-js-plugins/tree/main/packages/instant-meilisearch) 38 | - [`autocomplete-client`](https://github.com/meilisearch/meilisearch-js-plugins/tree/main/packages/autocomplete-client) 39 | - [`meilisearch-angular`](https://github.com/meilisearch/meilisearch-angular/) and the [associated code-sandbox](https://codesandbox.io/s/im-angularis-7xipe?file=/src/app/app.component.ts) 40 | - [`meilisearch-react`](https://github.com/meilisearch/meilisearch-react/) and the [associated code-sandbox](https://codesandbox.io/s/ms-react-is-sh9ud?fontsize=14&hidenavigation=1&theme=dark) 41 | - [`meilisearch-vue`](https://github.com/meilisearch/meilisearch-vue/) and the [associated code-sandbox](https://codesandbox.io/s/ms-vue-is-1d6bi?fontsize=14&hidenavigation=1&theme=dark) 42 | - The [code-sandbox of instant-meilisearch](https://codesandbox.io/s/ms-is-mese9?fontsize=14&hidenavigation=1&theme=dark) 43 | - [`mini-dashboard`](https://github.com/meilisearch/mini-dashboard/) 44 | 45 | Also, even if they are not parts of the integration team, we should keep in mind the following projects strongly depend on `instant-meilisearch`: 46 | - the [`mini-dashboard`](https://github.com/meilisearch/mini-dashboard) 47 | - the demos of the DevRel team, like [the MoMA demo](https://github.com/meilisearch/demo-MoMA) 48 | 49 | ## Docs-searchbar.js 50 | 51 | They depend on [`docs-searchbar.js`](https://github.com/meilisearch/docs-searchbar.js) 52 | - [`vuepress-plugin-meilisearch`](https://github.com/meilisearch/vuepress-plugin-meilisearch/) 53 | -------------------------------------------------------------------------------- /archived/resources/issues.md: -------------------------------------------------------------------------------- 1 | # Issues 2 | 3 | ## Create a new issue 4 | 5 | Here is the process when opening issues for the integration repositories: 6 | - If your issue concerns all the integration repositories or many of them (all the DevOps tools, for example): open an issue in [integration-guides](https://github.com/meilisearch/integration-guides/issues/new). 7 | - If your issue concerns a specific repository: open it directly in the concerned repository. 8 | 9 | ## Issue labeling in integration-guides 10 | 11 | This paragraph describes the labels used for the issues in this repository (integration-guides). 12 | 13 | The five following labels make us track the current state of an issue, from the beginning of the idea until the implementation: 14 | - `need discussion`: for every idea that needs to be discussed or clarified before any clear suggestion. 15 | - `need vote`: an issue is opened, and several suggestions are available. The opinion of the different team members is required. 16 | - `need approval`: an idea is submitted and is waiting for approval. Of course, the other team members can discuss it and suggest another possibility. 17 | - `ready to implement`: a consensus has been found, and the solution is ready to be implemented. 18 | - `wip`: the issue is being implemented (this is the last label before the issue is closed) 19 | 20 | The following labels help us categorize the issues: 21 | - `Meilisearch bump`: tracking issue related to a bump of Meilisearch. It describes the impacts to the integration repositories leads by a new Meilisearch release. 22 | - `new integration`: the issue concerns a new integration. 23 | - `JS integrations`: the issue concerns some or all the JS repositories (ex: meilisearch-js, instant-meilisearch, docs-search.js...) 24 | - `DevOps tools`: the issue concerns the DevOps repository (ex: cloud-providers) 25 | - `SDKs`: the issue concerns some or all the SDKs (ex: meilisearch-js, meilisearch-ruby...) 26 | 27 | ## Issue assignation policy 28 | 29 | We prefer not assigning external people to our issues.
30 | Because people often ask to be assigned and never return, which discourages other potential contributions.
31 | We will accept and merge the first PR that fixes correctly and implements the issue.
32 | 33 | ## Message templates (to be used by the Integrations Team members) 34 | 35 | **When the contributor asks to be assigned into the issue** 36 | 37 | Hi \@username, we prefer not assigning external people to our issues. 38 | 39 | Why? People often ask to be assigned and never return, discouraging the volunteer contributors from opening a PR to fix the issue. 40 | 41 | We will accept and merge the first PR that fixes correctly and implements the issue following the contribution guidelines of the corresponding repository. 42 | 43 | We are looking forward to your contributions. No need to wait for an assignment to start! :+1: 44 | 45 | **When the contributor suggests an improvement in a low level tier.** 46 | 47 | Hey \@username. 48 | I agree with implementing this! 49 | 50 | We might not have enough time to work on it in the following weeks. Also, I will add some details to this issue to make the implementation easier. 51 | If someone wants to contribute and implement it, it will be released faster! PRs are always welcome! 52 | -------------------------------------------------------------------------------- /archived/resources/pre-release-week.md: -------------------------------------------------------------------------------- 1 | # Pre-Release Week 2 | 3 | > ### **What's the pre-release week?** 4 | > 5 | > Four weeks before the official release of Meilisearch, the Engine Team creates a release candidate (RC) version of Meilisearch. For the Integrations Team, the main purpose of this RC is to implement the new features (in the integrations tools) related to the next release by testing them against the RC version. 6 | > 7 | > So **the pre-release week is a sprint for the Integrations Team** who needs to complete all the tests and integrate most of the changes before the official release of Meilisearch. 8 | > 9 | > The pre-release and release days are visible on the Meili/Team calendar (only available internally). A Meilisearch release is out every 8 weeks. 10 | 11 | Before any Meilisearch release, and during the pre-release week, the following tasks should be done: 12 | 13 | - [💬 Discussing](#-discussing) 14 | - [📌 First Preparations](#-first-preparations) 15 | - [💻 Coding](#-coding) 16 | - [🥳 After the Meilisearch official release](#-after-the-meilisearch-official-release) 17 | 18 | ## 💬 Discussing 19 | 20 | > 💡 This step can be done before the beginning of the pre-release week by actively following the Meilisearch's Milestones and issues. 21 | 22 | - **Open a new issue in [integration-guides](https://github.com/meilisearch/integration-guides/issues/new)** (labeled `Meilisearch bump`) about the changes in the next release of Meilisearch that will impact one or several integration tools. See [an issue example](https://github.com/meilisearch/integration-guides/issues/52).
23 | Based on the [Meilisearch milestones](https://github.com/meilisearch/meilisearch/milestones), this issue should be divided into sub-sections for each feature/fix. These sub-sections explain in a concise way how the change impacts the integration tool(s) and how to fix/implement it if necessary.
24 | If a change involves a huge implementation in the integration tools, a separated issue can be created and linked to the main issue. 25 | 26 | - **Discuss and approve the issue**. All the Integrations Team members are requested. 27 | 28 | ## 📌 First Preparations 29 | 30 | > 💡 Use [this script](https://github.com/meilisearch/integration-scripts/tree/main/pre-release-script) (only available internally) to automate the following steps. Please read carefully the README of this tool before applying any changes. 31 | 32 | The script automates the following tasks: 33 | 34 | - In each integration repository, create a blank draft PR. The branch name originating this PR should be `bump-meilisearch-vX.X.X`. In most cases, only the `README.md` file changes. 35 | - In the [cloud-scripts](https://github.com/meilisearch/cloud-scripts) repository, create a branch named `bump-meilisearch-vX.X.X-rc` where the old version of Meilisearch is changed **into the RC version**. Also, create a tag named `vX.X.X-rc` on this commit and push it. 36 | 37 | ## 💻 Coding 38 | 39 | ⚠️ [`meilisearch-js`](https://github.com/meilisearch/meilisearch-js) and [`instant-meilisearch`](https://github.com/meilisearch/meilisearch-js-plugins/tree/main/packages/instant-meilisearch) implementations should start as soon as possible since: 40 | - they are dependencies of the [`mini-dashboard`](https://github.com/meilisearch/mini-dashboard). 41 | - they may raise bad design choices or relevancy issues of the Meilisearch API when used in front-end. 42 | 43 | For each implementation or fix: 44 | 45 | - **Create a PR** up-to-date with `bump-meilisearch-vX.X.X` and pointing to `bump-meilisearch-vX.X.X` with all the changes. 46 | - **Make all the tests green**: the tests are running against the RC and not the latest stable version of Meilisearch.
47 | If they don't pass, please explain the reason: another PR concerning other changes might indeed be needed. 48 | - **Ask for reviews**: the team member responsible to make the review [is written here](https://github.com/meilisearch/integration-guides/blob/main/resources/scopes.md). 49 | - **Merge the PR** with the `Squash and Merge` button once you get an approval.
50 | Don't use Bors: this tool would not run the tests against the RC so will not merge your PR.
51 | Some tests still might fail on this main PR until the new release of Meilisearch is out. 52 | 53 | ## 🥳 After the Meilisearch official release 54 | 55 | - Merge all the PRs in the repositories that **don't** depend on other integration packages (e.g. do **not** merge meilisearch-symfony or docs-scraper): 56 | - Make the PRs ready for review (change the draft status). 57 | - Run the tests with the `bors try` command. 58 | - Ask for or/and do a final reviews. 59 | - Merge the PRs with Bors (`bors merge`). 60 | - Release the just-modified packages if necessary. Follow the steps in the [release process guide](./integration-tool-release.md). 61 | - For the repositories depending on other integration packages (like meilisearch-rails or instant-meilisearch): upgrade the dependency, commit to `bump-meilisearch-vX.X.X` and merge the PR with the same process than above. 62 | - Release these packages if necessary. Follow the steps in the [release process guide](./integration-tool-release.md). 63 | - Close the related issue in [integration-guides](https://github.com/meilisearch/integration-guides/issues) only when the original plan was achieved. 64 | - Open new issues in all the repositories which were not part of the planned tiers. E.g., since most features are not done in tier #3, issues should be opened in those repositories. 65 | - Open new issues in the repositories where the feature proved harder to implement than expected and is not worth doing now. 66 | - The Integration team does a retrospective meeting internally to take notes on what went well and what did not and improve it for the next time. 67 | -------------------------------------------------------------------------------- /archived/resources/scopes.md: -------------------------------------------------------------------------------- 1 | # Scopes 2 | 3 | **This guide is to describe which internal developer at Meili is responsible for which repository.** 4 | 5 | The developer responsible for the repository has to: 6 | - ensure the issues are well answered. 7 | - merge PRs: this involves you need to review and/or request the right reviewers to safely merge the PRs. 8 | - make releases on a regular basis 9 | - ensure the documentation (README.md and CONTRIBUTING.md) is up to date 10 | 11 | A developer responsible for a scope is the only one to have the access to merge PRs using Bors (expect Admin GitHub users). 12 | 13 | 🥰 Being responsible for a repository does not mean you are alone. Feel free to ask for any help by pinging your colleagues on issues or PRs. 14 | Same, if you are not responsible for a scope, you are always encouraged to check and comments PRs and issues in the other repositories. 15 | 16 | 👥 Some repositories are handled by external contributors, and we are really grateful for this! This table only describes who is internally responsible at Meili, even if many contributors are highly present on this repository. This person can be considered as the Meili referent for the community. You can ping her/him if you have any question. 17 | 18 | 👀 During the pre-release weeks, we generate tons of similar pull requests, which could be hard to review due to the amount of work in this period. In the last column, you can check who is responsible for reviewing a PR in the repository. It does not mean no one else can review the PR. This new list is just made to reduce the burden of the pre-release week. 19 | 20 | | Repository | Meili's developer | Pre-Release week reviewer | 21 | |------------|-------------------|---------------------------| 22 | | [.Net SDK](https://github.com/meilisearch/meilisearch-dotnet) | [alallema](https://github.com/alallema/) | [brunoocasali](https://github.com/brunoocasali/) | 23 | | [Dart SDK](https://github.com/meilisearch/meilisearch-dart) | [brunoocasali](https://github.com/brunoocasali/) | [alallema](https://github.com/alallema/) | 24 | | [Golang SDK](https://github.com/meilisearch/meilisearch-go) | [alallema](https://github.com/alallema/) | [brunoocasali](https://github.com/brunoocasali/) 25 | | [Java SDK](https://github.com/meilisearch/meilisearch-java) | [alallema](https://github.com/alallema/) | [bidoubiwa](https://github.com/bidoubiwa/) | 26 | | [JavaScript SDK](https://github.com/meilisearch/meilisearch-js) | [bidoubiwa](https://github.com/bidoubiwa/) | [brunoocasali](https://github.com/brunoocasali/) | 27 | | [PHP SDK](https://github.com/meilisearch/meilisearch-php) | [brunoocasali](https://github.com/brunoocasali/) | [alallema](https://github.com/alallema/) | 28 | | [Python SDK](https://github.com/meilisearch/meilisearch-python) | [alallema](https://github.com/alallema/) | [brunoocasali](https://github.com/brunoocasali/) | 29 | | [Ruby SDK](https://github.com/meilisearch/meilisearch-ruby) | [brunoocasali](https://github.com/brunoocasali/) | [bidoubiwa](https://github.com/bidoubiwa/), [curquiza](https://github.com/curquiza/) & [mdubus](https://github.com/mdubus/) | 30 | | [Rust SDK](https://github.com/meilisearch/meilisearch-rust) | [bidoubiwa](https://github.com/bidoubiwa/) | [alallema](https://github.com/alallema/) | 31 | | [Swift SDK](https://github.com/meilisearch/meilisearch-swift) | [brunoocasali](https://github.com/brunoocasali/) | [bidoubiwa](https://github.com/bidoubiwa/) | 32 | ||| 33 | | [Laravel-Scout integration](https://github.com/laravel/scout) | [brunoocasali](https://github.com/brunoocasali/) | | 34 | | [Rails integration](https://github.com/meilisearch/meilisearch-rails)| [brunoocasali](https://github.com/brunoocasali/) | [curquiza](https://github.com/curquiza/) & [mdubus](https://github.com/mdubus/) | 35 | | [Symfony integration](https://github.com/meilisearch/meilisearch-symfony)| [brunoocasali](https://github.com/brunoocasali/) | [curquiza](https://github.com/curquiza/) & [alallema](https://github.com/alallema/) | 36 | ||| 37 | | [Angular integration](https://github.com/meilisearch/meilisearch-angular) | [bidoubiwa](https://github.com/bidoubiwa/) | 38 | | [React integration](https://github.com/meilisearch/meilisearch-react) | [bidoubiwa](https://github.com/bidoubiwa/) | 39 | | [Vue integration](https://github.com/meilisearch/meilisearch-vue) | [bidoubiwa](https://github.com/bidoubiwa/) | 40 | | [instant-meilisearch](https://github.com/meilisearch/meilisearch-js-plugins/tree/main/packages/instant-meilisearch) | [bidoubiwa](https://github.com/bidoubiwa/) | [brunoocasali](https://github.com/brunoocasali/) & [mdubus](https://github.com/mdubus/) | 41 | | [autocomplete-client](https://github.com/meilisearch/meilisearch-js-plugins) | [bidoubiwa](https://github.com/bidoubiwa/) | [brunoocasali](https://github.com/brunoocasali/) | 42 | | [docs-searchbar.js](https://github.com/meilisearch/docs-searchbar.js) | [bidoubiwa](https://github.com/bidoubiwa/) | [mdubus](https://github.com/mdubus/) | [bidoubiwa](https://github.com/bidoubiwa/) | 43 | ||| 44 | | [Firestore extension](https://github.com/meilisearch/firestore-meilisearch) | [bidoubiwa](https://github.com/bidoubiwa/) | [alallema](https://github.com/alallema/) | 45 | | [Gatsby plugin](https://github.com/meilisearch/gatsby-plugin-meilisearch) | [bidoubiwa](https://github.com/bidoubiwa/) | [mdubus](https://github.com/mdubus/) | 46 | | [Strapi plugin](https://github.com/meilisearch/strapi-plugin-meilisearch) | [bidoubiwa](https://github.com/bidoubiwa/) | [mdubus](https://github.com/mdubus/) | 47 | | [VuePress plugin](https://github.com/meilisearch/vuepress-plugin-meilisearch) | [bidoubiwa](https://github.com/bidoubiwa/) | [mdubus](https://github.com/mdubus/) | 48 | ||| 49 | | [meilisearch-kubernetes](https://github.com/meilisearch/meilisearch-kubernetes) | [alallema](https://github.com/alallema/) | [brunoocasali](https://github.com/brunoocasali/) | 50 | | [Cloud Providers](https://github.com/meilisearch/cloud-providers) | [alallema](https://github.com/alallema/) | [brunoocasali](https://github.com/brunoocasali/) | 51 | ||| 52 | | [docs-scraper](https://github.com/meilisearch/docs-scraper)| [alallema](https://github.com/alallema/) | [bidoubiwa](https://github.com/bidoubiwa/) | 53 | | [js-project-boilerplate](https://github.com/meilisearch/js-project-boilerplate)| [bidoubiwa](https://github.com/bidoubiwa/) | 54 | | [meilisearch-migration](https://github.com/meilisearch/meilisearch-migration)| [alallema](https://github.com/alallema/) | [bidoubiwa](https://github.com/bidoubiwa/) | 55 | ||| 56 | | [mini-dashboard](https://github.com/meilisearch/mini-dashboard/)| [bidoubiwa](https://github.com/bidoubiwa/) | [brunoocasali](https://github.com/brunoocasali/) | 57 | ||| 58 | | [WordPress integration](https://github.com/meilisearch/meilisearch-wordpress) (Stopped)| [brunoocasali](https://github.com/brunoocasali/) | 59 | 60 | ### Access 61 | 62 | When a member of the integration team owns a repository, they have full access to this repository, i.e. Admin access on GitHub. 63 | 64 | However, with great power comes great responsibility 🕸. It means: 65 | - Merging with Bors (using `bors merge`) should always be privileged. Only merge manually if there is no other alternative. 66 | - Informing the whole integration team (on Slack) before modifying settings in the `Settings` section of a repository: in case the change is too impactful and should not be applied or it could interest the other repositories of the team. 67 | -------------------------------------------------------------------------------- /archived/resources/sdk-labels.md: -------------------------------------------------------------------------------- 1 | # SDK's issues Labels 2 | 3 | ⚠️ These labels are not the same as this repo's labels. They are meant to be used to tag the issues opened in the different SDK's repositories. 4 | 5 | We have many issues in every integration repository. These help us understand what each issue is about or its state. 6 | A clear label prevents us from re-reading the issue when we are scanning them, and they provide a context in the blink of an eye. 7 | 8 | Nonetheless, until now, every repo used its own label system. Thus, to avoid adapting to every repo's label choices, we want to create a consistent labels list to use. 9 | 10 | These are the labels that are encouraged to use. 11 | 12 | ## Labels list 13 | 14 | They already exist in every repo. 15 | 16 | | label Name | Color | description | 17 | |---|---|---| 18 | | `bug` | #d73a4a | Something isn't working | 19 | | `good first issue` | #7057ff | Good for newcomers. | 20 | | `help wanted` | #008672 | Extra attention is needed. | 21 | | `enhancement` | #a2eeef | New feature or request. | 22 | | `security` | #ee0701 | Address a security vulnerability. | 23 | | `support` | #F78FB2| Issues related to support questions. | 24 | | `spam` | #006B75 | PR/Issue considered as a spam. | 25 | | `needs investigation` | #006B75 | Needs to take time to understand the issue. | 26 | | `needs more info` | #5319e7 | This issue needs a minimal complete and verifiable example. | 27 | | `maintenance` | #DBA7A9 | Issue about maintenance (CI, tests, refacto...). | 28 | | `stale` | #A2A0D6 | Pull request or issue that has receive no activity for a long time. | 29 | 30 | Side note, labels can be easily forgotten. We strongly encourage its use, but we want to observe if we naturally apply them before making them mandatory. We also want to observe if some labels are missing or never used. 31 | -------------------------------------------------------------------------------- /archived/roadmap/2021.md: -------------------------------------------------------------------------------- 1 | # Roadmap 2021 2 | 3 | This is the roadmap planned by the Integration team at Meilisearch for the year 2021. 4 | 5 | Nothing is definitive: the roadmap can be adapted depending on the need of the users and the company. 6 | 7 | ## 2021: the Main Lines 8 | 9 | - Keep **working with the community**: build a strong and involved community around our different repositories. 10 | - Transform our current wrappers into **real SDKs** : 11 | - add many friendly methods and ways to communicate with MeiliSarch 12 | - add SDK docs in the main docs 13 | - **Analytics** 14 | - **Framework Web inegrations**: Rails, Django, Angular... 15 | - **Jamstack**: Strapi, Hugo, Gatsby... 16 | - **DevOps integrations** : AWS, Google Cloud. 17 | - **Database integrations**: PostgreSQL, MongoDB. 18 | 19 | ## Q1 20 | 21 | DevOps: 22 | - [X] AWS integration 23 | - [X] Normalize (README and CONTRIBUTING) the DevOps repository 24 | - [X] GCP integration 25 | 26 | SDKs: 27 | - [X] (_Still in progress during all year long_) Start improving our wrapper into SDKs by making more friendly search methods 28 | - (_Reported to Q2_) Dart SDK: normalize and integrate it to our batch of SDKs 29 | - (_Reported to Q2_) Go SDK refactoring 30 | - (_Reported to Q2_) Swift SDK error handler 31 | - (_Reported to Q2_) Dotnet SDK error handler 32 | 33 | Front-End: 34 | - [X] Transform to TypeScript InstantMeilisearch 35 | - (_Reported to Q2_) Add tests and more documentation to InstantMeilisearch 36 | 37 | Framework: 38 | - [X] Start Rails integration 39 | 40 | Jamstack: 41 | - [X] Strapi 42 | 43 | Database: 44 | - _Reported to Q3_ PostgreSQL 45 | 46 | Misc: 47 | - [X] Update main branch names from `master` to `main` 48 | - _No changes_ (Big naming change maintenance following the changes in Meilisearch (see the changes in this [repository](https://github.com/meilisearch/specifications/)) 49 | 50 | ## Q2 51 | 52 | SDKs: 53 | - [X] (_Still in progress during all year long_) Start improving our wrapper into SDKs by making more friendly search methods 54 | - [X] Dart SDK: normalize and integrate it to our batch of SDKs 55 | - [X] Go SDK refactoring and error handler 56 | - _Has started in Q2, but not done_ Swift SDK: normalized + error handler 57 | - [X] Dotnet SDK error handler 58 | 59 | Front-End: 60 | - [X] Dark mode: docs-searchbar.js and VuePress plugin 61 | - [X] Start Gatsby integration 62 | - [X] Add tests and more documentation to InstantMeilisearch 63 | 64 | Framework: 65 | - [X] Integrate meilisearch-laravel-scout into Laravel/Scout 66 | - _Reported_ Start an "extended" version of meilisearch-laravel-scout 67 | - [X] Finish Rails integration 68 | - _Reported, we prioritize Firebase integration_ 69 | 70 | Database: 71 | - _Reported to Q3_ Start Firebase integration 72 | 73 | Misc: 74 | - _Reported to Q3_ Start thinking about analytics 75 | - _Reported to Q3_ Changes related to the release of the v0.21.0 of Meilisearch 76 | - Big naming change maintenance following the changes in Meilisearch (see the changes in this [repository](https://github.com/meilisearch/specifications/)) 77 | 78 | ## Q3 79 | 80 | SDKs: 81 | - [X] (_Still in progress during all year long_) Improve SDKs by making more friendly methods 82 | - [X] Swift SDK: normalized + error handler 83 | - (_Reported to Q4_) Rust SDK: normalized + error handler 84 | - (_Started at Q3, will be finished during Q4_): meilisearch-js: cache 85 | 86 | Front-End: 87 | - (_Started at Q3, then stopped. Will be finished during Q4_) Finish Gatsby integration 88 | 89 | Database: 90 | - (_Started at Q3, will be finished during Q4_) Firebase integration 91 | - (_Reported to 2022_) Start PostgreSQL integration 92 | 93 | Misc: 94 | - (Reported because needs core implementation) Implement analytics MVP 95 | - [X] Make all integrations compatible with v0.21.0 96 | - [X] Changes related to the Meilisearch releases: Geosearch, SortBy, new format integration. 97 | 98 | ## Q4 99 | 100 | Hacktoberfest 101 | - [X] Prepare issues for Hacktoberfest 102 | - [X] Handle contributors and their PRs 103 | 104 | SDKs: 105 | - [X] Rust SDK: normalized + error handler 106 | - [X] Instant Meilisearch: add cache 107 | - (_Delayed to 2022_) Java SDK: clean the double implementation of some routes 108 | 109 | Front-End: 110 | - (_Released at the beginning of 2022_) Finish Gatsby integration 111 | - (_Task transferred to the devrel team_) Write the "Gatsby + Meilisearch" article 112 | 113 | Jamstack: 114 | - _(Delayed because of the Strapi docs)_ Make Strapi plugin compatible with the new Strapi MarketPlace 115 | - _(Delayed because of the Strapi docs)_ Write article "how to make your plugin compatible with the new Strapi MarketPlace" 116 | - [X] Improve Strapi plugin with some requested features 117 | 118 | Database: 119 | - (_Continuing in 2022_) Finish Firebase integration 120 | - (_Delayed to 2022_) Write the "Firebase + Meilisearch" article 121 | 122 | CMS: 123 | - (_Delayed_) WordPress integration 124 | 125 | Misc: 126 | - Changes related to the Meilisearch releases 127 | - _(Delayed beginning of Q1 2022)_ the Analytics using `User-Agent` 128 | - (_Continuing in 2022_) Renaming of `update` into `task` 129 | - (_Continuing in 2022_) New `task` routes 130 | - (_Continuing in 2022_) New index routes 131 | 132 | ### Prioritization 133 | 134 | - Manage Hacktoberfest 135 | - Apply the changes related to the Meilisearch releases on time 136 | - Make Strapi compatible with the new MarketPlace 137 | - Finish the whole work with Firebase 138 | - Make the Rust SDK normalization (because of the coming change about the new index routes) 139 | -------------------------------------------------------------------------------- /archived/roadmap/2023.md: -------------------------------------------------------------------------------- 1 | # Roadmap 2023 2 | 3 | This is the roadmap planned by the Integration team at Meilisearch for 2023. 4 | 5 | Nothing is definitive: the roadmap can be adapted depending on the need of the users and the company. 6 | 7 | ## 2023: the Main Lines 8 | 9 | Starting in 2023, all the Meilisearch teams are going to define OKRs to track performance and achieve goals throughout the year. 10 | Here are the OKRs defined for the Integrations Team. 11 | 12 | ### OKRs 13 | - **Objective 1: Increase retention of the users.** 14 | - ✅ **KR 1**: Implement a new process to group SDKs on priority tiers which will help create more time for new integrations. 15 | - ✅ **KR 2**: Maintain the retention rate around 70% with a 5% margin of error from the last three months. 16 | - **Objective 2: Bring more developers to the SDKs and make them thrive** 17 | - ⚠️ **KR 1**: Redirect 25% of the time spent in maintenance to create new integrations. 18 | - ✅ **KR 2**: Increase by 15% the number of monthly active SDKs users. (ref number: 4k) 19 | 20 | ### Objectives 21 | 22 | - Focus on the impact: Spend time updating SDKs that are mostly used, and work with the community for the other ones. 23 | - Keep working with the community, improve our way of working with the contributors by creating more evident issues, and provide more and more "good first issues". 24 | - Work closer to the DevRel and Docs teams to help engage new users and make them stay. 25 | - Release at least two new integrations/tools based on the data collected by the community. 26 | - Rework the current DevOps process and make it stable and reliable. 27 | - Also add the support for the most significant providers out there, which we are not present yet (Azure and Alibaba cloud) 28 | 29 | ## Q1 30 | 31 | We're entering a new era in 2023, and now we want to achieve some goals we were unable to last year. It is time to increase our DevOps CI's reliability and take the opportunity to be present in two of the biggest cloud providers: Azure and Alibaba. Together they control 26% of the market share. This could be a good advertisement for the company and bring more users. 32 | 33 | We are also entering a phase where new projects, not just integrations, will be requested by the team, so we must know where to spend our precious maintenance time. That's why we're going to introduce SDK tiers. 34 | 35 | 36 | Processes: 37 | - [x] Introduce the versioning policy for the post-v1 era. (O1K1) 38 | - [x] Introduce the SDK tiers, to improve our time management in a transparent way. (O1K1) 39 | 40 | New projects: 41 | - [ ] _(delayed to Q2, no enough time to finish during Q1)_ Add the usage support for the [autocomplete.js](https://github.com/algolia/autocomplete), this project will be finished by the end of the Q1. (O2K2) 42 | - [ ] Implement **packer.io** to build Meilisearch images for the cloud providers, this project will be started during this quarter and finished in the Q2 (O2K1, O2K2) 43 | 44 | Maintenance: 45 | - [x] Add Meilisearch engine version v1.0.0 support for the integrations and SDKs. (O1K2) 46 | - [x] Add Meilisearch engine version v0.30 support for Swift. (O1K2) 47 | - [x] Add Meilisearch engine version v1.0.0 support for Swift. (O1K2) 48 | - [x] Add Meilisearch engine version v0.29 support for Java. (O1K2) 49 | - [x] Add Meilisearch engine version v0.30 support for Java. (O1K2) 50 | - [x] Add Meilisearch engine version v1.0.0 support for Java. (O1K2) 51 | - Changes regarding the Meilisearch release v1.1 (_TBD_) (O2K2, O1K2) 52 | - [x] Improve geo-search with `_geoBoundingBox`. 53 | - [x] Perform multiple index searches in a single query. 54 | - [x] _(not planned)_ ~Delete documents by a filter query.~ 55 | 56 | 57 | ## Q2 58 | 59 | One of the main ideas for this quarter is to keep working on two fronts, bringing more developers to meilisearch throughout the SDKs and ensuring they are still trusting our integrations. 60 | We know, based on feedback, that our responsiveness is part of the selling points. And since we want to create more integrations and consequently spend more time on them than compared to the "old" ones, we want to ensure we're not losing anyone because of a lack of communication, so automating that and having data will help us to keep on track. 61 | Plus, we want to give some attention to contributor's tools by starting a process of managing that well for both sides. 62 | 63 | ### OKRs 64 | - **Objective 1: Increase retention of the users.** 65 | - ✅ **KR 1**: Maintain the retention rate around 70% with a 5% margin of error from the last three months. 66 | - ⚠️ **KR 2**: Introduce tooling to track our reactiveness interacting with our communities on GitHub. 67 | - **Objective 2: Bring more developers to the SDKs and make them thrive** 68 | - ✅ **KR 1**: Grow [monthly active SDKs users](https://analytics.amplitude.com/meili/chart/syht2gv) from 6k to 10k (66% increase) 69 | 70 | 71 | New projects: 72 | - [x] Implement **packer.io** to build Meilisearch images for the cloud providers. (O2K2) 73 | - [x] Finish the support for the [autocomplete.js](https://github.com/algolia/autocomplete). (O2K1) 74 | - [ ] Create a suite of widgets to use in Flutter, a work done with direct collaboration with contributors. (O2K1) 75 | - [ ] Start actively maintaining the [meilisync](https://github.com/long2ice/meilisync) tool in collaboration with its creator. (O2K1) 76 | - [x] Kick off the new scrapping project of Meilisearch, _more information in the following roadmaps_. (O2K1) 77 | 78 | Maintenance: 79 | - [x] Fix the support of newer Java versions in the [meilisearch-java](https://github.com/meilisearch/meilisearch-java) SDK. (O2K1) 80 | 81 | Processes: 82 | - [x] Introduce a sync meeting between the Integrations and DevRel teams. (O1K1, O2K1) 83 | - [ ] _(postponed no return forecast)_ ~Add automation to measure the team's responsiveness in the integration repositories.~ 84 | -------------------------------------------------------------------------------- /archived/templates/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | --- 4 | 5 | COMMENT TO REMOVE 6 | 7 | Be aware of XXX in sentences and links: they need to be replaced by the name of the actual repository. 8 | 9 | --- 10 | 11 | First of all, thank you for contributing to Meilisearch! The goal of this document is to provide everything you need to know in order to contribute to Meilisearch and its different integrations. 12 | 13 | - [Assumptions](#assumptions) 14 | - [How to Contribute](#how-to-contribute) 15 | - [Development Workflow](#development-workflow) 16 | - [Git Guidelines](#git-guidelines) 17 | - [Release Process (for internal team only)](#release-process-for-internal-team-only) 18 | 19 | ## Assumptions 20 | 21 | 1. **You're familiar with [GitHub](https://github.com) and the [Pull Request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests)(PR) workflow.** 22 | 2. **You've read the Meilisearch [documentation](https://docs.meilisearch.com) and the [README](/README.md).** 23 | 3. **You know about the [Meilisearch community](https://docs.meilisearch.com/learn/what_is_meilisearch/contact.html). Please use this for help.** 24 | 25 | ## How to Contribute 26 | 27 | 1. Make sure that the contribution you want to make is explained or detailed in a GitHub issue! Find an [existing issue](https://github.com/meilisearch/XXX/issues/) or [open a new one](https://github.com/meilisearch/XXX/issues/new). 28 | 2. Once done, [fork the XXX repository](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) in your own GitHub account. Ask a maintainer if you want your issue to be checked before making a PR. 29 | 3. [Create a new Git branch](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository). 30 | 4. Review the [Development Workflow](#development-workflow) section that describes the steps to maintain the repository. 31 | 5. Make the changes on your branch. 32 | 6. [Submit the branch as a PR](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork) pointing to the `main` branch of the main XXX repository. A maintainer should comment and/or review your Pull Request within a few days. Although depending on the circumstances, it may take longer.
33 | We do not enforce a naming convention for the PRs, but **please use something descriptive of your changes**, having in mind that the title of your PR will be automatically added to the next [release changelog](https://github.com/meilisearch/XXX/releases/). 34 | 35 | ## Development Workflow 36 | 37 | --- 38 | 39 | COMMENT TO REMOVE 40 | 41 | This section should be filled according to the repository and should contain: 42 | - A "Setup" section (if needed) with the command to install the dependencies for the contributor (e.g.: `yarn --dev`). 43 | - A "Tests and Linter" section with the command to run the tests, the linter and the linter-autofix (if possible). 44 | - A "Release Process" section that describes the process before publishing a new release. 45 | - Other useful tips/steps for the contributor (e.g.: how to build, how to debug). 46 | 47 | /!\ The following lines are just a template example and should be completed with right names and right commands 48 | 49 | --- 50 | 51 | ### Setup 52 | 53 | ```bash 54 | 55 | ``` 56 | 57 | ### Tests and Linter 58 | 59 | Each PR should pass the tests and the linter to be accepted. 60 | 61 | ```bash 62 | # Tests 63 | 64 | 65 | # Linter 66 | 67 | # Linter with fixing 68 | 69 | ``` 70 | 71 | ## Git Guidelines 72 | 73 | ### Git Branches 74 | 75 | All changes must be made in a branch and submitted as PR. 76 | We do not enforce any branch naming style, but please use something descriptive of your changes. 77 | 78 | ### Git Commits 79 | 80 | As minimal requirements, your commit message should: 81 | - be capitalized 82 | - not finish by a dot or any other punctuation character (!,?) 83 | - start with a verb so that we can read your commit message this way: "This commit will ...", where "..." is the commit message. 84 | e.g.: "Fix the home page button" or "Add more tests for create_index method" 85 | 86 | We don't follow any other convention, but if you want to use one, we recommend [this one](https://chris.beams.io/posts/git-commit/). 87 | 88 | ### GitHub Pull Requests 89 | 90 | Some notes on GitHub PRs: 91 | 92 | - The PR title should be accurate and descriptive of the changes. Ex: "Fix typo in README.md". Please avoid "Fix issue #194". 93 | The title of the PR will be indeed automatically added to the next [release changelogs](https://github.com/meilisearch/XXX/releases/). 94 | - All PRs must be reviewed and approved by at least one maintainer. 95 | - [Convert your PR as a draft](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request) if your changes are a work in progress: no one will review it until you pass your PR as ready for review.
96 | The draft PR can be very useful if you want to show that you are working on something and make your work visible. 97 | - The branch related to the PR must be **up-to-date with `main`** before merging. Fortunately, this project [integrates a bot](https://github.com/meilisearch/integration-guides/blob/main/resources/bors.md) to automatically enforce this requirement without the PR author having to do it manually. 98 | 99 | ## Release Process (for internal team only) 100 | 101 | Meilisearch tools follow the [Semantic Versioning Convention](https://semver.org/). 102 | 103 | ### Automation to Rebase and Merge the PRs 104 | 105 | This project integrates a bot that helps us manage pull requests merging.
106 | _[Read more about this](https://github.com/meilisearch/integration-guides/blob/main/resources/bors.md)._ 107 | 108 | ### Automated Changelogs 109 | 110 | This project integrates a tool to create automated changelogs.
111 | _[Read more about this](https://github.com/meilisearch/integration-guides/blob/main/resources/release-drafter.md)._ 112 | 113 | ### How to Publish the Release 114 | 115 | ⚠️ Before doing anything, make sure you got through the guide about [Releasing an Integration](https://github.com/meilisearch/integration-guides/blob/main/resources/integration-release.md). 116 | 117 | Make a PR modifying the file `[]`(\) with the right version. 118 | 119 | ``` 120 | 121 | ``` 122 | 123 | Once the changes are merged on `main`, you can publish the current draft release via the [GitHub interface](https://github.com/meilisearch/XXX/releases): on this page, click on `Edit` (related to the draft release) > update the description (be sure you apply [these recommendations](https://github.com/meilisearch/integration-guides/blob/main/resources/integration-release.md#writting-the-release-description)) > when you are ready, click on `Publish release`. 124 | 125 | A GitHub Action will be triggered and push the package to [\](\). 126 | 127 |
128 | 129 | Thank you again for reading this through, we can not wait to begin to work with you if you made your way through this contributing guide ❤️ 130 | -------------------------------------------------------------------------------- /assets/gifs/cypress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/gifs/cypress.gif -------------------------------------------------------------------------------- /assets/gifs/simple_test.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/gifs/simple_test.gif -------------------------------------------------------------------------------- /assets/icons/dev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/icons/dev.png -------------------------------------------------------------------------------- /assets/icons/front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/icons/front.png -------------------------------------------------------------------------------- /assets/icons/other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/icons/other.png -------------------------------------------------------------------------------- /assets/icons/wip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/icons/wip.png -------------------------------------------------------------------------------- /assets/logos/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_angular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_angular.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_angular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_aws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_aws.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_dart.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_do.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_dotnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_dotnet.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_elixir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_elixir.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_firebase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_firebase.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_flutter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_flutter.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_flutter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_gatsby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_gatsby.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_gatsby.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_gcp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_go.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_go.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_java.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_java.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_js.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_js.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_k8s.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_laravel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_laravel.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_laravel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_laravel_scout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_laravel_scout.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_laravel_scout.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_magento.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_magento.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_magento.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_php.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_php.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_php.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_python.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_python.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_python.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_rails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_rails.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_rails.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_react.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_react.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_ruby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_ruby.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_ruby.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_rust.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_rust.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_rust.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_strapi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_swift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_swift.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_swift.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_symfony.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_vuejs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_vuejs.png -------------------------------------------------------------------------------- /assets/logos/meilisearch_vuejs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /assets/logos/meilisearch_vuepress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/logos/meilisearch_vuepress.png -------------------------------------------------------------------------------- /assets/screenshots/bors_merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/screenshots/bors_merge.png -------------------------------------------------------------------------------- /assets/screenshots/bors_try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/screenshots/bors_try.png -------------------------------------------------------------------------------- /assets/screenshots/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meilisearch/integration-guides/cbbb8e0678ba81f58cc9be10f617a19a3346eae4/assets/screenshots/dashboard.png -------------------------------------------------------------------------------- /resources/bors.md: -------------------------------------------------------------------------------- 1 | # Bors: a Merge Bot for PRs 2 | 3 | [Bors](https://github.com/bors-ng/bors-ng) is a tool that helps us manage pull requests (PR) merging. 4 | 5 | ## Motivations 6 | 7 | One of our requirements to merge a PR is that a contributor branch has to be up-to-date with the upstream `main` branch.
8 | The only proper way to keep the Git history clear is to rebase the branch originating the PR. 9 | 10 | It became tedious always to ask the contributors to rebase their branch when their branch was not up-to-date with `main` because: 11 | - It forces everyone to wait again before the merge 12 | - It is not always easy to successfully apply a rebase without any issue 13 | - Sometimes, there are several PRs ready to be merged, which introduces complexity in coordination 14 | 15 | ### But why rebasing? 16 | 17 | The goal of a rebase to move the commits (from the PR branch) right after the last commit on `main`.
18 | Therefore, rebasing keeps your Git history clear and consistent with the order in which you have merged your PRs. Making the PR branch up-to-date by adding merge commits does not keep this clarity. 19 | 20 | Keeping in mind that the Git history is essential, rebasing is the only way to guarantee that the work that will be merged fits the current work in production. If the tests pass on an up-to-date branch, it ensures they will pass once merged into `main`, assuring your production branch will not break. 21 | 22 | ## How does Bors work? 23 | 24 | Bors is a bot that automatically applies a rebase before running the tests and merging if they succeed.
25 | This allows us to _automatically maintain a repository of code that always passes all the tests_ (cf [this article](https://graydon2.dreamwidth.org/1597.html) by the creator of Bors) 26 | 27 | ### Usage 28 | 29 | All the Bors commands have to be given through comments in the PR. 30 | 31 | #### Simple Check 32 | 33 | To check the PR passes all the tests when up-to-date with `main`, use: 34 | 35 | ``` 36 | bors try 37 | ``` 38 | 39 | ![bors try](../assets/screenshots/bors_try.png) 40 | 41 | **This command is only useful when the PR is not up-to-date with `main`**, but the reviewers want to be sure the changes do not break the current code in production.
42 | No merge is going to be done with this command. 43 | 44 | #### Automatic Merge 45 | 46 | To rebase and merge the PR, use the following: 47 | 48 | ``` 49 | bors merge 50 | ``` 51 | 52 | ![bors merge](../assets/screenshots/bors_merge.png) 53 | 54 | Bors will check that the PR passes the tests when up-to-date with `main` and then merge the rebased work. 55 | 56 | 💡 Bors is also able to manage multiple merging PRs at the same time. Each PR is added to a queue and will be checked with the last version on `main`. 57 | 58 | ### More Details 59 | 60 | Bors does not concretely rebase the branch of the PR: it merges the commits of the PR into another branch that is already up-to-date with `main`: 61 | 62 | - `trying` when doing a `bors try` 63 | - `staging` when doing a `bors merge` 64 | 65 | If the tests do not pass on one of these branches, Bors returns a failure and stops the merge of the PR (if doing a `bors merge`) 66 | 67 | ### Limitation 68 | 69 | Bors cannot work when there are Git conflicts. Indeed, when Git conflicts with the `main` branch are present, Bors cannot decide what the contributor wants to do. 70 | 71 | In this situation, the contributor has to rebase the branch manually. Check out this [quick tutorial](https://gist.github.com/curquiza/5f7ce615f85331f083cd467fc4e19398) to apply the rebase from a forked repository. 72 | -------------------------------------------------------------------------------- /resources/build-integration.md: -------------------------------------------------------------------------------- 1 | # Build an Integration for Meilisearch 2 | 3 | To guarantee consistency and quality across all Meilisearch integrations, we request that you consider the following guidelines when creating a new integration. 4 | 5 | ## 1. Leading Principle: User Experience First 6 | 7 | The integration should consider user experience: it should be as easy to use and intuitive as possible. In particular, the primary usage of the integration must be accessible. 8 | 9 | Feel free to [contact us](https://docs.meilisearch.com/learn/what_is_meilisearch/contact.html#contact-us) if you're hesitating over an implementation decision. 10 | 11 | ## 2. README 12 | 13 | At a minimum, the README must contain: 14 | 15 | - A well-explained `Getting Started` section: the user should be able to copy/paste the code and command examples, and everything should work as expected. 16 | - Basic code examples for the most common actions. 17 | 18 | We recommend checking out the READMEs of our other integration repositories, like [this one](https://github.com/meilisearch/meilisearch-ruby/blob/main/README.md). 19 | 20 | ## 3. CONTRIBUTING.md 21 | 22 | All integration repositories must contain a file titled `CONTRIBUTING.md`. The template is [here](/templates/CONTRIBUTING.md) and should be filled according to the details of your repository.. 23 | 24 | ### 3.1 Docker & Docker-compose 25 | 26 | To ease the maintenance, the integration should be ready to use with `Docker`, and it must contain a `Docker Compose` file configurated following these patterns: 27 | - Must have a service `package` and a `meilisearch` service. 28 | - Must depend and contain a link to `meilisearch` service. 29 | - The `meilisearch` service should point to `latest` tag. 30 | - `MEILI_NO_ANALYTICS` should be set to `true` 31 | - `MEILI_MASTER_KEY` should be set to `masterKey` 32 | 33 |
34 | See the Docker and Docker-compose sample 35 | 36 | ```yml 37 | version: "3.8" 38 | 39 | volumes: 40 | pub: 41 | 42 | services: 43 | package: 44 | image: dart:latest # this sample comes from the Dart SDK. 45 | tty: true 46 | stdin_open: true 47 | working_dir: /home/package 48 | environment: 49 | - MEILISEARCH_URL=http://meilisearch:7700 50 | - PUB_CACHE=/vendor/pub-cache 51 | depends_on: 52 | - meilisearch 53 | links: 54 | - meilisearch 55 | volumes: 56 | - pub:/vendor/pub-cache 57 | - ./:/home/package 58 | 59 | meilisearch: 60 | image: getmeili/meilisearch:latest 61 | ports: 62 | - "7700" 63 | environment: 64 | - MEILI_MASTER_KEY=masterKey 65 | - MEILI_NO_ANALYTICS=true 66 | ``` 67 |
68 | 69 | ## 4. Minimal Provided Methods 70 | 71 | At a minimum, your integration must support the following: 72 | 73 | - all functionality related to [document manipulation](https://docs.meilisearch.com/reference/api/documents.html). 74 | - all functionality related to [search](https://docs.meilisearch.com/reference/api/search.html), including [search parameters](https://docs.meilisearch.com/reference/features/search_parameters.html). 75 | - a basic error handler that wraps and throws the [Meilisearch errors](https://docs.meilisearch.com/reference/api/#errors-status-code). 76 | - ensure the correct headers are being sent: 77 | - the `User-Agent` header should contain this value i.e. `Meilisearch PHP (v1.0.1)`, `Meilisearch Strapi (v1.0.1)`, can also contain more than one: `Meilisearch PHP (v1.0.1); Meilisearch Laravel (v12.1.5);` 78 | 79 | ⚠️ All routes not yet implemented in the integration should be reported as an issue in the repository. 80 | 81 | ## 5. Tests 82 | 83 | Each public method (i.e., the exposed part of the integration) should be tested against the Meilisearch instance. This ensures the provided methods work at any time. 84 | 85 | Mock testing is accepted but should not be prioritized since it would require regularly updating the mocked server to account for breaking changes. 86 | 87 | If you want to start writing your tests and are looking for a reference, you can find tests in most of our repositories, such as [meilisearch-php](https://github.com/meilisearch/meilisearch-php/) and [meilisearch-js](https://github.com/meilisearch/meilisearch-js/). 88 | 89 | ## 6. Linter and Style 90 | 91 | Your integration should contain a linter to ease contributions and maintenance. 92 | 93 | We recommend adding a [`.editorconfig` file](https://editorconfig.org/) so everyone can follow minimal styling rules. 94 | 95 | ## 7. Continuous Integration (CI) 96 | 97 | All integration repositories should run a CI workflow before merging into the main branch. It should ensure that: 98 | 99 | - the tests are successful with the latest version of Meilisearch. No need to support older versions of Meilisearch since Meilisearch is not stable at this time. 100 | - the linter does not throw any errors. 101 | 102 | This guarantees the quality of the package and provides a welcoming environment for contributions. 103 | 104 | ## 8. Publishing 105 | 106 | The release versioning should follow the [Semantic Versioning Convention](https://docs.meilisearch.com/reference/api/#errors-status-code) and should have clear changelogs (in a `CHANGELOG.md` file or in the GitHub release description [as we do in our repositories](https://github.com/meilisearch/meilisearch-ruby/releases)). 107 | 108 | --- 109 | 110 | Thank you for reading this through ❤️ Feel free to contact us with any questions! 111 | -------------------------------------------------------------------------------- /resources/integration-release.md: -------------------------------------------------------------------------------- 1 | # Releasing an Integration 2 | 3 | This guide is about releasing integrations and has nothing to do with Meilisearch releases that are handled during the [pre-release week](./pre-release-week.md). 4 | 5 | > ⚠️ Integration releases are public and are certainly among our most consulted contents with the READMEs.
6 | > Indeed, users reading the release changelogs are mostly users wanting to upgrade their dependencies, so they might consult the release description really carefully. 7 | > 8 | > **The Integration team should keep this in mind during the release process.** 9 | 10 | ## Why Do a Release? 11 | 12 | First of all, you need to check the release would include user-oriented changes. A release is not always needed after merging PRs.
13 | Don't do a release without any usage purpose, for example for the update of a text file/test/CI or for an internal refactor. 14 | 15 | 📢 **A release should be done only when there are changes concerning the code usage.** 16 | 17 | ## Let's Release! 18 | 19 | Follow the steps in the `Release Process` section in the `CONTRIBUTING.md` file of the repository carefully. These steps should be precise; if it's not, please open an issue on the related repository. 20 | 21 | ### Writing the Release Description 22 | 23 | During these release steps, depending on the integration, releasing is done via the GitHub interface. The release comes with a description containing the changelogs.
24 | The [Release Drafter tool](./release-drafter.md), integrated into most repositories, provides a release description structure containing the changelogs. Please add additional content in the release description to ensure these changelogs are: 25 | - **accurate**: describe what changed, with links to the PRs, and the consequences of the changes if needed. Also, check all the breaking changes are in the `Breaking Changes` section. 26 | - **user-friendly**: add documentation links if necessary. 27 | - **user-oriented**: do not add changelogs that do not impact the code usage (e.g., internal refacto, documentation, tests, CI modifications). 28 | - **contributor-friendly**: thank all the contributors, especially the ones who don't appear on the changelogs because they helped on the tests or the documentation. 29 | 30 | Also, when writing the final changelogs, you might notice some inconsistencies, e.g., a PR that should have been identified as a breaking change or a PR that should not appear in the changelogs: in this case, please, do not update the release description manually. Instead: 31 | - Go to the related PR. 32 | - Add the missing label (`breaking-change`, `new-feature` or `skip-changelog`, [see guide](./release-drafter#how-does-the-release-drafter-work)). 33 | - Re-run the last `Release Drafter` job in the `Actions` tab of the repository. 34 | 35 | > 💡 How to re-run the "Release Drafter" job? 36 | > - Go to the `Action` tab. 37 | > - Click on the left sidebar `Release Drafter`. 38 | > - Select the latest action. 39 | > - At the top right part of the screen click on `Re-run all jobs`. 40 | 41 | **This keeps consistency between the PRs history and the release changelogs**. 42 | 43 | ## What to do when Failing a Release? 44 | 45 | In some repositories, [GitHub Actions are triggered](https://github.com/meilisearch/meilisearch-js/blob/main/.github/workflows/publish.yml) after a tag creation following the release publication. It might happen that one of these actions failed because pre-requisites are not met (i.e., the new version in the correct file). Don't worry; it is fixable! These are the steps: 46 | 47 | 1. Delete the release: go to the "Releases" section on GitHub, then click on the latest release and then on "Delete" in the upper right corner. 48 | 2. Delete the tag (`v0.X.Y`): go to the "Releases" section on GitHub, then click on the "Tags" section, go to the latest tag, click on "Delete" in the upper right corner. 49 | 3. Merge the PR with the missing pre-requisites (i.e., adding the current version in the correct file). 50 | 4. Once the merge completes, a new release draft is created. You can now publish it! 51 | 52 | **Failure situation example** 53 | 54 | I release `meilisearch-js@v0.2.0` but I forgot to update the version in my `package.json`. On release, the [`publish to npm`]((https://github.com/meilisearch/meilisearch-js/blob/main/.github/workflows/publish.yml)) GitHub Action is triggered. A test is done to check if the version in `package.json` is the same as the `tag` created by the GitHub release. In this case, `v0.1.0` in my package.json and `v0.2.0` as a tag; thus, the GitHub Action stops, and my package is not published to [npm](https://www.npmjs.com/). 55 | 56 | The situation is as follows: `meilisearch-js@v0.2.0` is released on GitHub, the tag `v0.2.0` is created, but it is not published on [npm](https://www.npmjs.com/) which is still at `v0.1.0`. 57 | 58 | To solve the situation, I delete the release and the tag on GitHub. I merge the PR with the right version in `package.json`. I go back to the release screen, and I publish the newly created release draft. 59 | 60 | ## What to do when publishing a broken package? 61 | 62 | It might happen that the release worked but the published package on the package manager is broken (completely unusable). In this specific case, some steps must be followed. 63 | 64 | ⚠️ This only applies when the published package is completely broken. If the package works but bugs were introduced a patch is enough. 65 | 66 | If the package was published recently: 67 | 68 | 1. Delete/deprecate the package in the package manager (ex: `npm deprecate meilisearch@0.1.0 "Missing files breaks the package"`). 69 | 2. Follow step one and two of the previous section [What to do when Failing a release](#what-to-do-when-failing-a-release). 70 | 3. Fix the package. 71 | 4. Increase the patch version (ex: 0.1.0 becomes 0.1.1). 72 | 5. Once the merge is completed, a new release draft is created. You can now publish it! 73 | 74 | If the package was not published recently: 75 | 1. Deprecate the package in the package manager. 76 | 2. Write in the body of the broken release that this version is deprecated. 77 | 3. Fix the package. 78 | 4. Increase the patch version (ex: 0.1.0 becomes 0.1.1). 79 | 5. Once the merge completes, a new release draft is created. You can now publish it! 80 | 81 | ## Release a beta version 82 | 83 | For some integrations, we need to release a beta version of the integration before releasing the official one. For instance, during the Meilisearch pre-release, we often need to release a beta version of [meilisearch-js](https://github.com/meilisearch/meilisearch-js) to make the [mini-dashboard](https://github.com/meilisearch/mini-dashboard)) work with the future release of Meilisearch. 84 | 85 | Please, follow the instructions detailed in the CONTRIBUTING.md of the repository to release a beta version. 86 | -------------------------------------------------------------------------------- /resources/meilisearch-pre-release-work.md: -------------------------------------------------------------------------------- 1 | # Integration work related to Meilisearch pre-release 2 | 3 | Every eight weeks, the engine team releases a new version of the Meilisearch engine. The last four weeks are the "pre-release time" where no new additions are made by the engine team, and release candidates (RCs) are done. 4 | 5 | For each Meilisearch release, a central issue should be opened in the [integration-guide repository](https://github.com/meilisearch/integration-guides/issues). This central issue is an exhaustive list of the changes applied to the integration scope related to the future release of Meilisearch. 6 | 7 | 👉 Open the central issue [here](https://github.com/meilisearch/integration-guides/issues/new?assignees=curquiza%2C+brunoocasali&labels=Meilisearch+bump&projects=&template=central_issue.md&title=Changes+related+to+Meilisearch+v1.Y.0). Replace the `TBD` and the corresponding Meilisearch version. 8 | -------------------------------------------------------------------------------- /resources/message-templates.md: -------------------------------------------------------------------------------- 1 | ## Message templates 2 | 3 | These templates should be used whenever the situations written in bold happen: 4 | 5 | **When the contributor asks to be assigned to the issue** 6 | 7 | Hi \@username, We prefer not assigning external people to our issues. 8 | 9 | Why? People often ask to be assigned and never return, discouraging the volunteer contributors from opening a PR to fix the issue. 10 | 11 | We will accept and merge the first PR that fixes correctly and implements the issue following the contribution guidelines of the corresponding repository. 12 | 13 | We are looking forward to seeing you. No need to wait for an assignment to start! :+1: 14 | 15 | **When the contributor suggests an improvement in a low-level tier.** 16 | 17 | Hey \@username. 18 | I agree with implementing this! 19 | 20 | We might need more time to work on it in the following weeks. Also, I will add some details to this issue to make the implementation easier. 21 | If someone wants to contribute and implement it, it will be released faster! PRs are always welcome! 22 | 23 | **When the user creates an issue that is a support** 24 | 25 | Hey there, 26 | 27 | We are a small team, so we can’t spend much time doing support anymore :cry:. 28 | You’ll have better luck by going to our support channels like Discord. Can you please try it first? 29 | If you can identify this as a bug, feel free to open up a new issue with a link to the original one, and we’ll gladly help you out. 30 | 31 | [Discord](https://discord.gg/meilisearch) 32 | [StackOverflow](https://stackoverflow.com/questions/tagged/meilisearch) 33 | 34 | Thanks for using Meilisearch! 35 | -------------------------------------------------------------------------------- /resources/release-drafter.md: -------------------------------------------------------------------------------- 1 | # Changelogs Automation: the Release-Drafter 2 | 3 | The [release-drafter](https://github.com/release-drafter/release-drafter/) tool is used in our GitHub Actions to automate the content of each release description, so the changelogs. 4 | 5 | ## Motivations 6 | 7 | We maintain a lot of packages and plugins implying several releases that we have to publish regularly.
8 | Our users need to know exactly and clearly what changed in the new release. That's why the changelogs are important and must be accurate. 9 | 10 | Of course, it is tedious to manually write the changelogs without any omissions, and this task can easily be automated. 11 | 12 | ## How does the Release-Drafter work? 13 | 14 | For each PR merged on `main`, a GitHub Action is run: it updates the next release description as a draft release in the [GitHub interface](https://github.com/meilisearch/meilisearch-ruby/releases).
15 | If you don't have the right access to this repository, you will not be able to see the draft release until the release is published. 16 | 17 | The draft release description is therefore generated and corresponds to all the PRs titles since the previous release. **This means each PR should only do one change, and the title should be descriptive of this change**. 18 | 19 | ### SemVer and Versioning 20 | 21 | Meilisearch tools follow the [Semantic Versioning Convention](https://semver.org/). Based on the chosen labels for a PR, the release-drafter automatically increases the right number in the version. 22 | 23 | ### Label the PR 24 | 25 | Each PR should be labelled by one of the following labels: `skip-changelog`, `breaking-change`, `security`, `enhancement` or `bug`. 26 | 27 | According to the label you choose, the changelog will be put in the related section in the release draft. It means you cannot mix them in the same PR. 28 | 29 | #### `skip-changelog` 30 | 31 | If you don't want a PR to appear in the release changelogs: add the label `skip-changelog`. 32 | 33 | We suggest removing PRs updating the README or the CI. Users don't need this kind of information when updating the package. 34 | 35 | #### `breaking-change` 36 | 37 | If the changes you are doing in the PR are breaking: add the label `breaking-change`. 38 | 39 | - If the integration is not stable (e.g. `0.X.Y`) the minor version increases. 40 | Ex: `0.1.4` -> `0.2.0` 41 | 42 | - If the integration is stable (e.g. `X.Y.Z` when `X > 0`) the major version increases. 43 | Ex: `2.1.4` -> `3.0.0` 44 | 45 | #### `enhancement` 46 | 47 | If the PR introduces a new feature or an improvement: add the label `enhancement`. 48 | 49 | For integrations that are stable and so have a major release version (e.g. `1.x.x`, `2.x.x`), this will make the minor increase (e.g. `1.2.4` -> `1.3.0`). 50 | 51 | #### `bug` 52 | 53 | If the PR fixes bugs: add the label `bug`. 54 | 55 | A bug could be a raised error, a loss of performance, or any unexpected behavior of the integration. 56 | 57 | #### `security` 58 | 59 | If the PR fixes a security issue: add the label `security`. 60 | 61 | Most of the time, this concerns PRs fixing dependencies issues on which security vulnerabilities are reported. 62 | 63 | ### Other Recommendations 64 | 65 | - As the draft release description is generated on every push on `main`, don't change it manually until the final release publishment. Otherwise, your manual changes are going to be overwritten. 66 | - If you made any mistake (for example, the PR is already closed, but you forgot to add a label or you misnamed your PR), don't panic: change what you want in the closed PR and run the job again. 67 | 68 | > 💡 How to re-run the "Release Drafter" job? 69 | > - Go to the `Action` tab. 70 | > - Click on the left sidebar `Release Drafter`. 71 | > - Select the latest action. 72 | > - At the top right part of the screen click on `Re-run all jobs`. 73 | -------------------------------------------------------------------------------- /resources/tiers.md: -------------------------------------------------------------------------------- 1 | # SDK tiers 2 | 3 | The objective of Meilisearch's integrations is to **ease Meilisearch usage to as many developers as possible**. 4 | 5 | Given this statement, **tiers** are nothing more than a __group of SDKs/integrations__ where the Meilisearch team can fairly divide their attention. Unfortunately, it is not possible to keep all the SDKs 100% updated against the new Meilisearch features from Meilisearch releases all the time. The Meilisearch team is a small team that maintains 30+ different integrations and tools, so it is humanly impossible to consistently meet the Meilisearch quality standards. 6 | 7 | The ultimate goal of introducing tiers is to allow the team to have more time to invest in new projects/integrations to impact even more users. 8 | 9 | To measure the impact of an SDK, the data come from different places like [telemetry](https://docs.meilisearch.com/learn/what_is_meilisearch/telemetry.html) and GitHub's stars, forks, and watchers. 10 | 11 | It is worth remembering that this priority is just a concept introduced by the team that aims to give a **decision weight** before investing time in some issues of the SDKs. So, it does not mean they will never work on feature requests from the bottom tiers anymore, but it says they will prioritize the top tiers most of the time transparently. 12 | 13 | :warning: The team will still keep all officially maintained SDKs **working**. :warning: 14 | 15 | ## Tier #1 16 | 17 | 👉 Priority of the Meili team 18 | 19 | The Meili team ensures these integrations provide all the tools to use the features contained in the latest release of Meilisearch. 20 | 21 | Issues and PRs from the community are frequently browsed by the team. If the community cannot be reactive enough, bug fixes and/or important enhancements are implemented by the Meili team. 22 | 23 | It is worth remembering that this does not mean open issues are addressed and fixed promptly. Every issue needs time to be understood/confirmed/worked on and consequently closed.
24 | 25 | ## Tier #2 26 | 27 | 👉 Mostly improved by the community 28 | 29 | Issues and PRs from the community are less frequently browsed by the team but still watched regularly. 30 | 31 | Community work is crucial to improve the repository on a daily basis: suggest improvements, fix bugs and implement enhancements. 32 | 33 | Integrations in this group will not receive active improvements or maintenance from the Meili team except for specific situations. Most of the work is implemented by the community and reviewed by the Meili team. If the community cannot be reactive enough and for **specific** situations, **critical** bug fixes and/or enhancements are implemented by the Meili team. 34 | 35 | ## Tier #3 36 | 37 | 👉 Fully improved by the community 38 | 39 | The SDKs in group #3 have relatively low user adoption compared to groups #2 and #1. They are probably new or have a small community behind the tech stack in the first place. 40 | 41 | Issues and PRs from the community are not the team's priority, but they are still watched from time to time. 42 | 43 | Community work is mandatory to improve the repository on a daily basis: suggest improvements, fix bugs and implement enhancements. 44 | 45 | Integrations in this group are prioritized only in **really critical** cases, and they are not going to receive improvements or maintenance from the Meili team. If the community cannot be reactive enough, only **really critical** bugs are fixed by the Meili team. 46 | 47 | ## Deprecated 48 | 49 | Depending on the reasons, integrations in this group tend to be archived at some point (a few months/years). The Meili team does not accept any enhancement in these repositories, even from the community. 50 | 51 | Bug fixes have to be done by the community since the Meili team cannot afford to spend time on them. 52 | 53 | We made our best to provide alternatives to this tools: check the related README of these repositories to get more information. 54 | 55 | ## Tiers list 56 | 57 | Integration | Tier | Meili maintainer | 58 | -------------|------|-----| 59 | JavaScript | #1 | @brunoocasali | 60 | PHP | #1 | @curquiza | 61 | meilisearch-js-plugins | #1 | @brunoocasali | 62 | Strapi | #1 | @brunoocasali | 63 | | | | 64 | .NET | #2 | @curquiza | 65 | Python | #2 | @curquiza | 66 | Java | #2 | @curquiza | 67 | Go | #2 | @curquiza | 68 | Rails | #2 | @brunoocasali | 69 | Ruby | #2 | @brunoocasali | 70 | Cloud Providers | #2 | @brunoocasali | 71 | Kubernetes Chart | #2 | @brunoocasali | 72 | | | | 73 | Dart | #3 | @brunoocasali | 74 | Rust | #3 | @curquiza | 75 | Gatsby | #3 | @brunoocasali | 76 | Firebase | #3 | @brunoocasali | 77 | Flutter | #3 | @brunoocasali | 78 | Swift | #3 | @curquiza | 79 | Symfony | #3 | @brunoocasali | 80 | Mini-dashboard | #3 | @curquiza | 81 | Angular | #3 | @curquiza | 82 | React | #3 | @curquiza | 83 | Vue | #3 | @curquiza | 84 | | | | 85 | docs-searchbar.js | Deprecated | @curquiza | 86 | docs-scraper | Deprecated | @brunoocasali | 87 | meilisearch-migration | Deprecated | @curquiza | 88 | VuePress | Deprecated | @curquiza | 89 | 90 | 91 | ## Internal maintainers 92 | 93 | @curquiza and @brunoocasali are the main maintainers of the integration scope. 94 | 95 | They are responsible for: 96 | 97 | - Ensuring the release of new versions 98 | - Browsing the issues, which means: 99 | - Redirect support questions to [Meili Discord](https://discord.meilisearch.com/) 100 | - Answer and apply triage on issues 101 | - Browse the requested feature requests: validate them, reject them, or ask for community's opinion. 102 | - Browsing community's PRs and ensure they are reviewed 103 | - Ensuring security fixes by merging bump of Dependabot 104 | - Ensuring and follow [pre-release work related to the new Meilisearch version](./meilisearch-pre-release-work.md) 105 | - Merge regularly Dependabot update to avoid outdated dependencies. We try to do it before releasing a new version of the integration. 106 | 107 | ## External contributors 108 | 109 | Our most impactful contributors were invited to be part of the official maintainers of the SDKs alongside us :heart:. 110 | 111 | They have the `Collaborator` badge and rights. So whenever you interact with one of them, you can trust their expertise and remember that they are aligned with our values. 112 | 113 | Here is the list of the external collaborators that help us: 114 | 115 | - **[@ahmednfwela](https://github.com/ahmednfwela)**: [`meilisearch-flutter`](https://github.com/meilisearch/meilisearch-flutter), [`meilisearch-dart`](https://github.com/meilisearch/meilisearch-dart), [`meilisearch-dotnet`](https://github.com/meilisearch/meilisearch-dotnet) 116 | - **[@mmachatschek](https://github.com/mmachatschek)**: [`meilisearch-php`](https://github.com/meilisearch/meilisearch-php), [`laravel/scout`](https://github.com/laravel/scout) 117 | - **[@norkunas](https://github.com/norkunas)**: [`meilisearch-php`](https://github.com/meilisearch/meilisearch-php), [`meilisearch-symfony`](https://github.com/meilisearch/meilisearch-symfony) 118 | - **[@sanders41](https://github.com/sanders41)**: [`meilisearch-python`](https://github.com/meilisearch/meilisearch-python), [`docs-scraper`](https://github.com/meilisearch/docs-scraper) 119 | - **[@Sherlouk](https://github.com/Sherlouk)**: [`meilisearch-swift`](https://github.com/meilisearch/meilisearch-swift) 120 | - **[@flevi29](https://github.com/flevi29)**: [`meilisearch-js`](https://github.com/meilisearch/meilisearch-js), [`meilisearch-js-plugins`](https://github.com/meilisearch/meilisearch-js-plugins) 121 | - **[@Ja7ad](https://github.com/Ja7ad)**: [`meilisearch-go`](https://github.com/meilisearch/meilisearch-go) 122 | 123 | ## FAQ 124 | 125 | ### How are the tiers organized? 126 | 127 | The method used is mainly manual and subjective, using previously collected data from the [telemetry](https://docs.meilisearch.com/learn/what_is_meilisearch/telemetry.html) and Github to generate the groups. 128 | 129 | Only 3 tiers were defined, but this number may change in the future, and this guide will be updated accordindgly. 130 | 131 | ### Is it possible for an SDK to move up a level? 132 | 133 | Yes, fully possible! Especially if the team detects that more users are interested in and using it. 134 | Whenever a anomaly is detected, a change can be submitted to the `integration-guides` and the groups will be modified to better manage the team's time. The reassessment of the tiers will be carried out every release cycle (8 weeks). 135 | 136 | The other way around is also valid. A SDK can move to less important tiers. :shipit: 137 | 138 | ### Why are SDKs present in a particular tier? 139 | 140 | In general, because those SDKs have more and the most active users. By "active users," it means more activity in the repository, like contributions, watching (GitHub watchers), stargazers (GitHub stars), and forks (GitHub clones). 141 | 142 | Besides GitHub data, we track the importance of integration by constantly watching the data sent through the [telemetry](https://docs.meilisearch.com/learn/what_is_meilisearch/telemetry.html). Note that data is ANONYMOUS, but we know the used client by looking at the `User-Agent`/`X-Meilisearch-Client` headers. 143 | We also give more weight when we know a particular SDK has more Meilisearch Cloud customers. 144 | 145 | PS: Other principles that are not written here may be used to move SDKs around if the team thinks it is relevant. 146 | 147 | ### When will the new features from a new Meilisearch release be released in the integrations? 148 | 149 | #1 integrations are up to date with the latest version of Meilisearch in the coming week of the [Meilisearch release](https://github.com/meilisearch/meilisearch/releases). 150 | 151 | For other tiers, the features have to be implemented by the community. Issues are present in the related integration repositories. Once the PR is ready, the maintainers of the repository review and merge it to integrate it into the next integration release. 152 | -------------------------------------------------------------------------------- /resources/versioning.md: -------------------------------------------------------------------------------- 1 | # Versioning policy 2 | 3 | This page describes the versioning rules Meilisearch SDKs follow after the release of Meilisearch engine v1.0.0. It explains how and when the Integrations Team should increase the MAJOR, MINOR, and PATCH of the versions. 4 | 5 | ## 🤖 Basic rules 6 | 7 | Meilisearch SDKs releases follow the [SemVer rules](https://semver.org/), including the following basic ones: 8 | 9 | > 🔥 Given a version number MAJOR.MINOR.PATCH, increment the: 10 | > 11 | > 1. MAJOR version when you make incompatible API changes 12 | > 2. MINOR version when you add functionality in a backwards compatible manner 13 | > 3. PATCH version when you make backwards compatible bug fixes 14 | 15 | 16 | **Changes that MAY lead the Meilisearch users (developers) to change their code are considered API incompatibility and will make us increase the MAJOR version of Meilisearch SDK.** 17 | 18 | **In other terms, if the users MAY have to do more steps than just downloading the new Meilisearch package and running it, a new MAJOR is needed.** 19 | 20 | Examples of changes making the code break and then, involving increasing the MAJOR: 21 | 22 | - Any change related to the public API the SDK exposes like: 23 | - Renaming a method name or classes 24 | - Removing or changing a positional argument of a method. 25 | 26 | ## Minimum supported runtime 27 | 28 | There is no strict policy yet regarding the minimum support of the language version, but some ground rules were defined. Example: 29 | 30 | Ruby SDK has a `required_ruby_version >= 2.6`, which prevents users from using the gem if they run their apps with a `Ruby 2.5`. 31 | 32 | It is often good to only allow newer versions of the runtimes because they are maintained :sparkles: and there are always new features is possible to adopt in the code and improve maintenance time. 33 | 34 | So when that cut is made, some users can be left behind. Because of this, the adoption of a new runtime is carefully planned because the team's top priority is to keep as many users covered as much as possible. 35 | 36 | Currently, all supported versions are set in the CI of each repository. 37 | 38 | This is the list of minimum supported language version runtimes*: 39 | 40 | | Language/Framework | Version | 41 | | ------------------ | ------- | 42 | | .NET | netstandard2.0 | 43 | | Dart | >= 2.12.0 | 44 | | Go | >= 1.16 | 45 | | Java | >= 8.0 | 46 | | JavaScript/Node | >= 14 | 47 | | Swift | >= 5.2 | 48 | | PHP | >= 7.4 | 49 | | Python | >= 3.7 | 50 | | Ruby | >= 2.6 | 51 | | Rust | N/A | 52 | 53 | When an SDK drops a minimum required version of the runtime, a new MAJOR version of the SDK should be released. 54 | 55 | \* This list may be outdated. Always check the current version in the integration's repository. 56 | 57 | ## Correlation between Meilisearch engine versioning and the SDKs 58 | 59 | SDKs do not follow the Meilisearch engine version. It means that there is no correlation between SDK's version and Meilisearch; an SDK may be in version `v8.0.0` while the Meilisearch engine is in `v1.0.0`. 60 | 61 | Suppose the version of an SDK is the same as the latest version of Meilisearch. It is just a happy coincidence. 62 | 63 | You can find out which version of the Meilisearch engine an SDK is compatible with by going to the `Compatibility with Meilisearch` section of every SDK README page. For example, the [README](https://github.com/meilisearch/meilisearch-ruby/#-compatibility-with-meilisearch) page of the ruby SDK. 64 | 65 | 66 | ## When SDKs will be stable (v1)? 67 | 68 | The Integrations Team is still working on making all of the SDKs stable, but there is no roadmap yet. First, some questions need to evolve, like having more feedback about the public API exposed to the users. 69 | 70 | If you have a specific use case where you need the SDKs in v1, or if you want to share feedback about them, **please share it through the issues**. 71 | 72 | ## Important facts 73 | 74 | :warning: Always check the Meilisearch engine version you are running and the version supported by your current SDK version. 75 | 76 | :warning: If you use a `raw` method like `GetAllRawIndexesAsync`, `allRaw`, `rawSearch`, and similar. Please double-check the Meilisearch version you're running. 77 | 78 | Since these methods' responses are made directly by the Meilisearch engine, the SDKs, may be unable to keep backward compatibility in a possible Meilisearch v2, for example. So, if possible, don't use them. 79 | -------------------------------------------------------------------------------- /scripts/get-latest-meilisearch-rc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script is used in the SDK CIs to fetch the latest Meilisearch RC name (ex: v0.16.0rc2). 4 | # The Meilisearch RC is needed when maintainers are developing features during the pre-release week because the final Meilisearch release is not out yet. 5 | 6 | temp_file='temp_file' # temp_file needed because `grep` would start before the download is over 7 | curl -s 'https://api.github.com/repos/meilisearch/meilisearch/releases' > "$temp_file" 8 | latest_rc_release=$(cat "$temp_file" \ 9 | | grep -E 'tag_name' | grep 'rc' | head -1 \ 10 | | tr -d ',"' | cut -d ':' -f2 | tr -d ' ') 11 | rm -rf "$temp_file" 12 | echo "$latest_rc_release" 13 | --------------------------------------------------------------------------------