This guide walks you through setting up Reactive Resume for local development. Whether you’re contributing to the project or customizing it for your needs, these steps will get you up and running.
Setting Up Your Development Environment
1
Clone the Repository
2
Install Dependencies
We use Bun as our package manager for its speed and efficiency.
3
Start Infrastructure Services
Start the required services (PostgreSQL, SeaweedFS, Gotenberg) using Docker Compose:
4
Configure Environment Variables
Create a
.env file in the project root:5
Run Database Migrations
Apply the database schema:
6
Start the Development Server
Available Scripts
Here are the most commonly used scripts during development:Development
| Command | Description |
|---|---|
bun run dev | Start the development server with hot reload |
bun run build | Build the application for production |
bun run start | Start the production server |
bun run check | Run Biome linter and formatter |
bun run typecheck | Run TypeScript type checking |
Database
| Command | Description |
|---|---|
bun run db:generate | Generate migration files from schema changes |
bun run db:migrate | Apply pending migrations |
bun run db:push | Push schema changes directly (dev only) |
bun run db:pull | Pull schema from existing database |
bun run db:studio | Open Drizzle Studio (database GUI) |
Internationalization
| Command | Description |
|---|---|
bun run lingui:extract | Extract translatable strings from code |
Documentation
| Command | Description |
|---|---|
bun run docs | Start the Mintlify docs development server |
Understanding the Project Structure
Understanding the project structure will help you navigate the codebase:Working with the Database
Viewing the Database
Use Drizzle Studio to explore and manage your database:Making Schema Changes
- Edit the schema in
src/integrations/drizzle/schema.ts - Generate a migration:
- Apply the migration:
Working with Translations
Reactive Resume uses Lingui for internationalization.Adding Translatable Text
Use thet macro for strings or <Trans> component for JSX:
Extracting Translations
After adding new translatable text, extract them to the locale files:locales/ directory in .po format.
Code Quality
Linting & Formatting
We use Biome for linting and formatting:Type Checking
Run TypeScript type checking:Troubleshooting
Port 3000 is already in use
Port 3000 is already in use
Another process is using port 3000. Either stop that process or start the dev server on a different port:
Database connection refused
Database connection refused
Ensure Docker containers are running:Check that PostgreSQL is healthy and accessible on port 5432.
S3/Storage errors
S3/Storage errors
Verify SeaweedFS is running and the bucket exists:If the bucket wasn’t created, restart the bucket creation service:
Bun installation issues
Bun installation issues
If you encounter issues with Bun, try reinstalling:Make sure your shell profile is reloaded:
Type errors after pulling changes
Type errors after pulling changes
The route tree may need regeneration. Run the dev server which auto-generates routes:Or run type checking to see specific errors: