Back to Reactive Resume

Quickstart

docs/getting-started/quickstart.mdx

5.0.2011.8 KB
Original Source

Options

Reactive Resume offers flexibility in how you want to use it. Choose the option that best fits your needs:

<CardGroup cols={2}> <Card title="Use the Cloud Version" icon="cloud" href="#use-the-cloud-version"> The fastest way to get started. **Recommended for most users.** </Card> <Card title="Self-Host with Docker" icon="docker" href="#self-host-with-docker"> Deploy your own instance with complete control. **Requires some technical knowledge.** </Card> </CardGroup>

Using the Cloud Version

The easiest way to use Reactive Resume is through our cloud version at rxresu.me. This service is completely free and will always remain free.

<Steps> <Step title="Create an Account"> Visit [rxresu.me](https://rxresu.me) and sign up for free using your email, or sign in with your GitHub or Google account. </Step>
<Step title="Create Your First Resume">
	Click the **Create Resume** button on your dashboard. Give your resume a name and select a template to get started.
</Step>

<Step title="Fill in Your Details">
	Use our intuitive builder to add your: - Personal information - Work experience - Education - Skills - Projects -
	And more...
</Step>

<Step title="Export & Share">
	When you're ready, export your resume as a PDF or share it via a unique public link.
</Step>
</Steps>

<Tip>Your resume updates in real-time as you type. The preview panel shows exactly how your final PDF will look.</Tip>


Self-Host with Docker

For users who prefer complete control over their data, you can deploy Reactive Resume on your own infrastructure using Docker.

Prerequisites

Before you begin, ensure you have the following installed:

<Info> There is <strong>no difference in features</strong> between the cloud-hosted version and the self-hosted option. Both provide the same privacy, customization, and functionality. Choose whichever deployment type suits your needs! </Info>

Quick Deployment

<Steps> <Step title="Clone the Repository"> ```bash git clone https://github.com/amruthpillai/reactive-resume.git cd Reactive-Resume ``` </Step>
<Step title="Configure Environment Variables">
	Create a `.env` file in the root directory with the following variables:
bash
# Application
APP_URL=http://localhost:3000

# Printer (Browserless)
BROWSERLESS_TOKEN=change-me
PRINTER_ENDPOINT=ws://browserless:3000?token=change-me

# Database
DATABASE_URL=postgresql://postgres:postgres@postgres:5432/postgres

# Authentication (generate a secure secret)
AUTH_SECRET=your-secure-secret-key-here

# Storage (S3-compatible via SeaweedFS)
S3_ACCESS_KEY_ID=seaweedfs
S3_SECRET_ACCESS_KEY=seaweedfs
S3_ENDPOINT=http://seaweedfs:8333
S3_BUCKET=reactive-resume
S3_FORCE_PATH_STYLE=true
	<Warning>
		For production deployments, always use strong, unique values for `AUTH_SECRET`, `BROWSERLESS_TOKEN`, and database credentials.
	</Warning>
</Step>

<Step title="Start the Services">
	```bash
	docker compose up -d
	```

	This starts:
	- **PostgreSQL** — Database for storing user data and resumes
	- **SeaweedFS** — S3-compatible storage for file uploads
	- **Browserless** — Headless Chromium service for PDF/screenshot generation
	- **Reactive Resume** — The main application
</Step>

<Step title="Access Your Instance">
	Once all services are running, access your Reactive Resume instance at:

	```text
	http://localhost:3000
	```
</Step>
</Steps>

Docker Compose Services

Here's what each service in the stack does:

ServicePortDescription
postgres5432PostgreSQL database for storing all application data
seaweedfs8333S3-compatible object storage for file uploads
browserless3000 (internal) / 4000 (published)Headless Chromium service for PDF and screenshot generation
reactive_resume3000The main Reactive Resume application

Health Checks

All services include built-in health checks. You can verify everything is running correctly:

bash
docker compose ps

You should see all services with a healthy status.


Environment Variables Reference

Here's a complete list of environment variables you can configure:

Required Variables

VariableDescriptionExample
DATABASE_URLPostgreSQL connection stringpostgresql://user:pass@host:5432/db
AUTH_SECRETSecret key for authenticationGenerate with openssl rand -hex 32
APP_URLPublic URL of your Applicationhttps://rxresu.me
PRINTER_ENDPOINTURL of the printer servicews://browserless:3000?token=...

Optional Variables

VariableDescriptionDefault
PRINTER_APP_URLPublic URL for the printer to access the Application
GOOGLE_CLIENT_IDGoogle OAuth Client ID
GOOGLE_CLIENT_SECRETGoogle OAuth Client Secret
GITHUB_CLIENT_IDGitHub OAuth Client ID
GITHUB_CLIENT_SECRETGitHub OAuth Client Secret
LINKEDIN_CLIENT_IDLinkedIn OAuth Client ID
LINKEDIN_CLIENT_SECRETLinkedIn OAuth Client Secret
OAUTH_PROVIDER_NAMECustom OAuth Provider Name
OAUTH_CLIENT_IDCustom OAuth Client ID
OAUTH_CLIENT_SECRETCustom OAuth Client Secret
OAUTH_DISCOVERY_URLOIDC Discovery URL (use this OR manual URLs below)
OAUTH_AUTHORIZATION_URLOAuth Authorization URL (manual config)
OAUTH_TOKEN_URLOAuth Token URL (manual config)
OAUTH_USER_INFO_URLOAuth User Info URL (manual config)
OAUTH_DYNAMIC_CLIENT_REDIRECT_HOSTSTrusted HTTPS hosts/origins for dynamic OAuth redirects
OAUTH_SCOPESOAuth Scopes (space-separated)openid profile email
BETTER_AUTH_API_KEYBetter Auth dashboard API key
BETTER_AUTH_URLBetter Auth base URL override (advanced)APP_URL
BETTER_AUTH_SECRETBetter Auth secret override (advanced)AUTH_SECRET
AI_ALLOWED_BASE_URLSAllowlist for custom AI provider base URLs
SMTP_HOSTSMTP Server Host (for email features)
SMTP_PORTSMTP Server Port587
SMTP_USERSMTP Username
SMTP_PASSSMTP Password
SMTP_FROMDefault FROM address for emails
SMTP_SECUREUse secure SMTP connection (true or false)false
S3_ACCESS_KEY_IDS3 Access Key
S3_SECRET_ACCESS_KEYS3 Secret Key
S3_REGIONS3 Regionus-east-1
S3_ENDPOINTS3-compatible Endpoint URL
S3_BUCKETS3 Bucket Name
S3_FORCE_PATH_STYLEUse path-style URLs for S3 (set true for MinIO/SeaweedFS)false
FLAG_DEBUG_PRINTERUsed for debugging the printer routefalse
FLAG_DISABLE_SIGNUPSDisables new user signupsfalse
FLAG_DISABLE_EMAIL_AUTHDisables email/password login (SSO only)false
FLAG_DISABLE_IMAGE_PROCESSINGDisables image processingfalse

Note: Some variables are only required for using related features (OAuth, SMTP, S3, etc.) and can be left unset if unused.

Health check behavior: /api/health reports status for database, printer, and storage. A failure in any dependency returns HTTP 503.

<Note> **Hybrid Setup Note**: The `PRINTER_APP_URL` variable is required when running Reactive Resume outside of Docker while the printer service is running inside Docker. In this scenario, the printer needs to reach your local app to render resumes for PDF generation. Since Docker containers cannot access `localhost` on your host machine directly, you must set `PRINTER_APP_URL` to `http://host.docker.internal:3000`. This special hostname allows Docker containers to communicate with services running on your host machine. </Note> <Note> **Alternative Printer Options**: If you don't want to use browserless, you can use any headless Chrome/Chromium instance with its remote debugging port open. For example, run `chromium --remote-debugging-port=9222` and point `PRINTER_ENDPOINT` to that instance. </Note>

Next Steps

<CardGroup cols={2}> <Card title="Development Setup" icon="code" href="/contributing/development"> Set up a development environment to contribute or customize Reactive Resume. </Card> <Card title="Project Architecture" icon="folder-open" href="/contributing/architecture"> Learn about the project structure and architecture. </Card> </CardGroup> <Note> **Having trouble?** Check our [GitHub Issues](https://github.com/amruthpillai/reactive-resume/issues) or reach out via [email](mailto:[email protected]). </Note>