Open-source search.
Drop-in Algolia replacement. Self-host in 60 seconds.
$ docker run -p 7700:7700 flapjack/flapjack
// Your Algolia code works. Just point to Flapjack.
const client = algoliasearch('my-app', 'my-key', {
hosts: [{ url: 'localhost:7700' }]
});
Why Flapjack
Drop-in Algolia replacement
Your existing Algolia client libraries and InstantSearch widgets work out of the box. Change one line of config.
Self-host in 60 seconds
Single binary. No dependencies. docker run and you're searching. Runs on any Linux box, any cloud, your laptop.
Fast
Built in Rust on Tantivy. Sub-millisecond search across millions of documents. Instant results, not "fast enough."
Your data, your rules
Open source. MIT licensed. No vendor lock-in. No surprise bills. Your infrastructure, your data, forever.
Works with your stack
# Index documents
curl -X POST 'http://localhost:7700/1/indexes/movies/batch' \
-H 'X-Algolia-Application-Id: flapjack' \
-H 'X-Algolia-API-Key: your-admin-key' \
-d '{"requests": [
{"action": "addObject", "body": {"title": "The Matrix", "year": 1999}},
{"action": "addObject", "body": {"title": "Inception", "year": 2010}}
]}'
# Search
curl -X POST 'http://localhost:7700/1/indexes/movies/query' \
-H 'X-Algolia-Application-Id: flapjack' \
-H 'X-Algolia-API-Key: your-admin-key' \
-d '{"query": "matrix"}'
import algoliasearch from 'algoliasearch';
const client = algoliasearch('flapjack', 'your-admin-key', {
hosts: [{ url: 'localhost:7700', protocol: 'http' }]
});
// Index documents
await client.batch('movies', {
requests: [
{ action: 'addObject', body: { title: 'The Matrix', year: 1999 } },
{ action: 'addObject', body: { title: 'Inception', year: 2010 } },
]
});
// Search
const { hits } = await client.search({
requests: [{ indexName: 'movies', query: 'matrix' }]
});
console.log(hits); // [{ title: "The Matrix", year: 1999 }]
import algoliasearch from 'algoliasearch';
import instantsearch from 'instantsearch.js';
import { searchBox, hits } from 'instantsearch.js/es/widgets';
const client = algoliasearch('flapjack', 'your-search-key', {
hosts: [{ url: 'localhost:7700', protocol: 'http' }]
});
const search = instantsearch({
indexName: 'movies',
searchClient: client
});
search.addWidgets([
searchBox({ container: '#searchbox' }),
hits({ container: '#hits', templates: {
item: (hit) => `<p>${hit.title} (${hit.year})</p>`
}})
]);
search.start();
Don't want to manage infrastructure?
Flapjack Cloud gives you a dedicated instance in any AWS region. Same Algolia-compatible API, zero ops. Provisioned in under a minute.
Try Flapjack CloudPricing
Dedicated instance. No shared resources. Pay for infrastructure, not searches.
All plans include a dedicated instance. Additional disk $0.50/GB/mo. Additional bandwidth $0.10/GB. Or self-host for free.