diff --git a/docs/get-started/full-stack.mdx b/docs/get-started/full-stack.mdx index 838fabb9..d10a0660 100644 --- a/docs/get-started/full-stack.mdx +++ b/docs/get-started/full-stack.mdx @@ -2,36 +2,61 @@ title: '💻 Full stack' --- -Embedchain provides a clean and simple cli utility that lets you create full-stack RAG applications locally with a single command. +Get started with full-stack RAG applications using Embedchain's easy-to-use CLI tool. Set up everything with just a few commands, whether you prefer Docker or not. -## Prerequisite +## Prerequisites + +Choose your setup method: + +### Without Docker + +Ensure these are installed: -Make sure that you have installed the following: - Embedchain python package (`pip install embedchain`) - [Node.js](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) and [Yarn](https://classic.yarnpkg.com/lang/en/docs/install/) -## Get started +### With Docker + +Install Docker from [Docker's official website](https://docs.docker.com/engine/install/). + +## Quick Start Guide + +### Setting Up For the purpose of the demo, you have to set `OPENAI_API_KEY` to start with but you can choose any llm by changing the configuration easily. -Now run the following commands: +### Installation Commands -```bash + + +```bash without docker ec create-app my-app cd my-app ec start ``` -Once you run this command, Embedchain does the following: +```bash with docker +ec create-app my-app --docker +cd my-app +ec start --docker +``` -1. Fetch full stack template that uses FastAPI for backend, and Next.JS template for frontend -2. Install necessary requirements -3. Launch the frontend and backend server for you to interact with + -Once you are done, visit `http://localhost:3000` and you will see a chat UI as shown below. +### What Happens Next? + +1. Embedchain fetches a full stack template (FastAPI backend, Next.JS frontend). +2. Installs required components. +3. Launches both frontend and backend servers. + +### See It In Action + +Open http://localhost:3000 to view the chat UI. ![full stack example](/images/fullstack.png) -You can navigate to [Embedchain admin panel] where you can see the chunks created for your documents that you ingested for your RAG application. Below is a screenshot for the same: +### Admin Panel + +Check out the Embedchain admin panel to see the document chunks for your RAG application. ![full stack chunks](/images/fullstack-chunks.png) diff --git a/embedchain/cli.py b/embedchain/cli.py index a19f8d18..c573382b 100644 --- a/embedchain/cli.py +++ b/embedchain/cli.py @@ -49,8 +49,9 @@ def cli(): @cli.command() @click.argument("app_name") +@click.option("--docker", is_flag=True, help="Use docker to create the app.") @click.pass_context -def create_app(ctx, app_name): +def create_app(ctx, app_name, docker): if Path(app_name).exists(): console.print( f"❌ [red]Directory '{app_name}' already exists. Try using a new directory name, or remove it.[/red]" @@ -98,7 +99,10 @@ def create_app(ctx, app_name): anonymous_telemetry.capture(event_name="ec_create_app", properties={"success": False}) return - ctx.invoke(install_reqs) + if docker: + subprocess.run(["docker-compose", "build"], check=True) + else: + ctx.invoke(install_reqs) @cli.command() @@ -126,7 +130,12 @@ def install_reqs(): @cli.command() -def start(): +@click.option("--docker", is_flag=True, help="Run inside docker.") +def start(docker): + if docker: + subprocess.run(["docker-compose", "up"], check=True) + return + # Set up signal handling signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler)