Skip to content

Latest commit

Β 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

resm

Cross-platform resume builder and manager. Built with Wails v3, Go backend, and Vue 3 frontend.

Features

  • 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

Tech Stack

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
PDF html2canvas + jsPDF
UI Kit @kyokusu-ui/vue, @phosphor-icons/vue
Task runner Task

Prerequisites

Getting Started

# 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 run

Project Structure

resm/
β”œβ”€β”€ 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

Resume Sections

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.

Configuration

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

Server Mode

Run without GUI as an HTTP server:

task build:server
task run:server

Or via Docker:

task setup:docker
task run:docker

Building

# Current platform
task build

# Package for distribution
task package

Cross-compilation targets: macOS, Linux, Windows, iOS, Android. See build/ directory for platform-specific task configs.

License

MIT

About

builder resume desktop app πŸ“

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages