Cross-platform resume builder and manager. Built with Wails v3, Go backend, and Vue 3 frontend.
- A4 Resume Editor β live preview with drag-and-drop section reordering
- Bilingual Support β English and Russian with inline language switching
- PDF Export β generates PDF with clickable links
- Photo Picker β upload and position a profile photo
- Persistent Storage β SQLite database with Goose-managed migrations
- Settings β configurable language, database path, and export directory
- Server Mode β headless HTTP server for Docker deployment
| Layer | Technology |
|---|---|
| Desktop framework | Wails v3 (alpha) |
| Backend | Go 1.25, SQLite (modernc.org), Goose |
| Frontend | Vue 3 (beta), TypeScript 6, Vite 8 |
| State | Pinia |
| html2canvas + jsPDF | |
| UI Kit | @kyokusu-ui/vue, @phosphor-icons/vue |
| Task runner | Task |
- Go >= 1.25
- Node.js >= 22.18 or >= 24.12
- Bun (default package manager)
- Task β task runner
- Platform-specific Wails dependencies β see Wails prerequisites
# Install frontend dependencies
cd frontend && bun install && cd ..
# Run in dev mode (hot reload)
task dev
# Build for current platform
task build
# Run production binary
task runresm/
βββ main.go # Application entry point
βββ Taskfile.yml # Task runner config
βββ internal/
β βββ config/ # App config, constants, env loading
β βββ models/db/ # Database models (Resume, Settings, etc.)
β βββ repositories/ # Data access layer (Resume, Settings)
β βββ services/ # Business logic (Resume, Settings, App)
β βββ storage/
β βββ database.go # SQLite init + Goose migrations
β βββ migrations/ # SQL migration files
βββ frontend/
βββ src/
β βββ views/ # Menu, Editor, Settings pages
β βββ components/
β β βββ A4/ # A4 page layout + footer
β β βββ details/ # Resume section components
β β βββ sidebar/ # Editor panel + section editors
β β βββ actionbar/ # Action buttons
β β βββ ui/ # Reusable UI elements
β βββ composables/ # Vue composables (PDF, Settings)
β βββ stores/ # Pinia stores
β βββ constants/ # Default data, contacts, socials
β βββ router/ # Vue Router config
βββ bindings/ # Auto-generated Wails TypeScript bindings
The editor supports the following sections:
- Header β name and position
- About Me β short bio
- Contacts β phone, email, location
- Socials β Telegram, LinkedIn, GitHub
- Work Experience β company, position, duration, responsibilities
- Education β university, degree, field, years
- Skills β categorized with icons (languages, databases, VCS, technologies)
- Languages β spoken languages with proficiency level
- Photo β profile photo upload
All sections are stored in a single ResumeData JSON blob per language variant.
Environment variables (via .env or system):
| Variable | Default | Description |
|---|---|---|
DB_PATH |
~/.config/resm/resume.db |
Path to SQLite database |
WINDOW_WIDTH |
1080 |
Window width in pixels |
WINDOW_HEIGHT |
1920 |
Window height in pixels |
Run without GUI as an HTTP server:
task build:server
task run:serverOr via Docker:
task setup:docker
task run:docker# Current platform
task build
# Package for distribution
task packageCross-compilation targets: macOS, Linux, Windows, iOS, Android. See build/ directory for platform-specific task configs.
MIT