--- title: Local Development description: "A guide on how to run Unsend’s codebase locally" icon: code --- ## Introduction Unsend's codebase is fully [open-source on github](https://github.com/unsend-dev/unsend) Here is the codebase structure ``` apps ├── docs ├── marketing ├── web packages ├── eslint-config ├── sdk ├── tailwind-config ├── typescript-config ├── ui ``` The ```apps``` directory contains the code for: - ```web```: Code for our dashboard and email infra - ```marketing```: The code for the landing page of Unsend - ```docs```: The documentation that you are currently reading. The ```packages``` directory contains the code for: - ```eslint-config``` package contains shared ESLint configuration settings - ```sdk``` package contains typescript sdk for unsend rest api - ```tailwind-config``` This package contains a shared Tailwind CSS configuration. - ```typescript-config``` This package contains a shared typescript configuration - ```ui``` This package is a collection of reusable UI components like buttons, badges, etc ## Running Unsend locally To run Unsend, locally you will need to setup the following: - [AWS](https://aws.amazon.com/) Free tier account will work. - [Cloudflare](https://www.cloudflare.com/) Free tier account will work. - [Docker](https://docs.docker.com/engine/install/) Recommended but not mandatory ## Fork and Clone the repo Click on the fork button on [Github](https://github.com/unsend-dev/unsend) to fork the repo Once the repo is forked you can clone it on your local machine using: ```bash git clone https://github.com/your-username/unsend.git ``` ## Install Dependencies ```bash corepack enable ``` ```bash pnpm install ``` ## Setup environment variables: ```bash cp .env.example .env ``` Use the following command to generate a key and add it under ```NEXTAUTH_SECRET``` ```bash openssl rand -base64 32 ``` Next, [create a new GitHub App](https://github.com/settings/applications/new). This will allow you to sign in to Unsend with your GitHub account.4 Add the homepage as: ``` http://localhost:3000/login ``` and callback URL as: ``` http://localhost:3000/api/auth/callback/github ``` Once the app is added you can add the Client ID under ``GITHUB_ID``and CLIENT SECRET under ```GITHUB_SECRET``` Next, we need to add in the [AWS credentials](https://docs.unsend.dev/get-started/create-aws-credentials). Follow the detailed guide to get the AWS credentials with accurate permissions and add them in: ``` AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= ``` Once the app is added you can add the Client ID under ``GITHUB_ID``and CLIENT SECRET under ```GITHUB_SECRET``` ## Running Unsend locally We are using a local Postgresql server and a local Redis server. But if you don't have docker you can also manually set these up. ### Option 1: Using Docker Recommended ```bash pnpm d ``` Dashboard will be started on ```bash http://localhost:3000 ``` Landing page will be started on ```bash http://localhost:3001 ``` Run the following command to get the URL. Here is the more detailed guide by [cloudflare](https://developers.cloudflare.com/pages/how-to/preview-with-cloudflare-tunnel/) ```bash cloudflared tunnel --url http://localhost:3000 ``` You can paste the URL provided by cloudflare in the Callback URL section ### Option 2: Using your own database or hosted database ```bash DATABASE_URL="" REDIS_URL="" ``` ```bash pnpm db:migrate-dev ``` ```bash pnpm dev ``` Run the following command to get the URL. Here is the more detailed guide by [cloudflare](https://developers.cloudflare.com/pages/how-to/preview-with-cloudflare-tunnel/) ```bash cloudflared tunnel --url http://localhost:3000 ``` You can paste the URL provided by cloudflare in the Callback URL section ## Run documentation To run the documentation run the following command: ```bash pnpm dev:docs ```