create-t3-turbo-ai
# create-t3-turbo-ai ## NOTE: THIS IS VERY MUCH π§ WIP π§. A lot of the features are yet to come - stay tuned! ## About The ultimate starter repo for building full-stack, type-safe, LLM-powered web apps. It uses: - [Turborepo](https://turborepo.com/) for monorepo management - [tRPC](https://trpc.io/) for API routing - [Prisma](https://www.prisma.io/) for database access - [Next.js](https://nextjs.org/) for the web app - [OpenAI](https://openai.com/) for the AI - [Langchain](https://hwchase17.github.io/langchainjs/docs/overview) for LLM management And much more! ## Folder structure ``` .github ββ workflows ββ CI with pnpm cache setup .vscode ββ Recommended extensions and settings for VSCode users apps ββ next.js ββ Next.js 13 ββ React 18 ββ Tailwind CSS ββ E2E Typesafe API Server & Client packages ββ api | ββ tRPC v10 router definition ββ auth ββ authentication using next-auth. **NOTE: Only for Next.js app, not Expo** ββ db ββ typesafe db-calls using Prisma ``` ## FAQ ## Quick Start To get it running, follow the steps below: ### Setup dependencies ```diff # Install dependencies pnpm i # In packages/db/prisma update schema.prisma provider to use sqlite # or use your own database provider - provider = "postgresql" + provider = "sqlite" # Configure environment variables. # There is an `.env.example` in the root directory you can use for reference # Make sure you add the OPENAI_API_KEY environment variable! cp .env.example .env # Push the Prisma schema to your database pnpm db:push ``` ## Deployment ### Next.js #### Prerequisites _We do not recommend deploying a SQLite database on serverless environments since the data wouldn't be persisted. I provisioned a quick Postgresql database on [Railway](https://railway.app), but you can of course use any other database provider. Make sure the prisma schema is updated to use the correct database._ **Please note that the Next.js application with tRPC must be deployed in order for the Expo app to communicate with the server in a production environment.** #### Deploy to Vercel Let's deploy the Next.js application to [Vercel](https://vercel.com/). If you have ever deployed a Turborepo app there, the steps are quite straightforward. You can also read the [official Turborepo guide](https://vercel.com/docs/concepts/monorepos/turborepo) on deploying to Vercel. 1. Create a new project on Vercel, select the `apps/nextjs` folder as the root directory and apply the following build settings: <img width="927" alt="Vercel deployment settings" src="https://user-images.githubusercontent.com/11340449/201974887-b6403a32-5570-4ce6-b146-c486c0dbd244.png"> > The install command filters out the expo package and saves a few second (and cache size) of dependency installation. The build command makes us build the application using Turbo. 2. Add your `DATABASE_URL` environment variable. 3. Done! Your app should successfully deploy. Assign your domain and use that instead of `localhost` for the `url` in the Expo app so that your Expo app can communicate with your backend when you are not in development. ## TODO - [ ] Organize prompts in a prompt library (rather than leaving them in the API folder) - [ ] Add Promptable.js option - [ ] Add embeddings example - [ ] Add PromptLayer example - [ ] Add Vercel Edge Functions to handle streaming - [ ] Add ChatGPT w/ memory example - [ ] Add LLM + Agents example - [ ] Update to NextJS app directory (once stable) ## References The stack originates from [create-t3-app](https://github.com/t3-oss/create-t3-app) and [create-t3-turbo](https://github.com/t3-oss/create-t3-turbo). The maintainers of these projects deserve all the credit!