Find the right lipstick using AI!
- Docker Desktop (for minio installation on local, if you don't use Docker, then you will need to get an S3 bucket from AWS)
- Python v3.8+, recommended v3.9+ (use pyenv to manage Python environment)
- NodeJS v14+ (recommended v16 LTS) and yarn v1 (recommended), use nvm to manage NodeJS environment
- make (for environment variable injection)
Start minio service:
docker compose up -d minio-service
Log into minio at http://localhost:9001 with minio
as username and minio123
as password. Create a bucket named lipstick-db
.
# python deps
pip install pipenv
pipenv install
# enter pipenv shell
pipenv shell
# nodejs deps
cd ui
yarn
Copy .env.example
to .env
and fill in the values during the later steps.
Currently the data is hosted on an airtable-like product in China, and we are working on migrating this part to use Airtable.
Please contact me if you have time to help me update the importer to point to Airtable. Happy to work with you to migrate the data over.
make jina-local
# use this one if on MacOS
JINA_MP_START_METHOD=forkserver make jina-local
Jina Flow server will start at port 8888
make main-app
# turn on reload mode for development
make main-app args="--host 0.0.0.0 --reload"
# use this one if on MacOS
JINA_MP_START_METHOD=forkserver make main-app args="--host 0.0.0.0 --reload"
FastAPI server will start at port 8000
cd ui
yarn dev
UI server will start at port 3000
make build-jina-docker # please run this only after the data is imported locally
make build-fastapi-docker
start using docker-compose after build:
docker compose up -d
I recommend to deploy on a server with 4 cores and 8GB RAM.
As for UI, I recommend you deploy onto Vercel.
Please refer to the k8s
directory for the kubernetes deployment.
Note that the kubernetes deployment is reference only, since the project uses annlite as document store, and it will OOM often during search. Please change to an external document store if you want to use kubernetes.