Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Tests

on:
pull_request:
branches:
- main
- master
push:
branches:
- main
- master

jobs:
test:
name: Unit Tests
runs-on: ubuntu-latest

strategy:
matrix:
node-version:
- 22.x

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "pnpm"

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build project
run: pnpm build

- name: Run unit tests
run: pnpm test --run

- name: Upload test results (if available)
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-${{ matrix.node-version }}
path: |
coverage/
test-results.xml
if-no-files-found: ignore
62 changes: 50 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,57 @@
# Downfolio

AI-powered CLI tool for generating customized resumes and cover letters from markdown templates.
Markdown + Porfolio = Downfolio

AI-powered CLI tool for generating customized resumes and cover letters from markdown templates based on your career experience.


![image](./images/downfolio.png)

## Recommended Use

1. Create base templates for cover letter and resumes based on your REAL career experience. (Don't Use AI for this step!)
2. For every job you want to apply for use Downfolio to generate custom resumes and cover letters from your base templates using a job description.
3. Review the output carefully and ensure it reflects your work experience.
4. Edit as needed.
5. Apply to the job.

## Installation

### Prerequisites

Downfolio requires the following dependencies for document conversion:

**Required for DOCX and PDF conversion:**
- **Pandoc** - Document converter
```bash
# macOS
brew install pandoc

# Other platforms: https://pandoc.org/installing.html
```

**Required for PDF conversion only:**
- **PDF Engine** - One of the following:
- **BasicTeX** (recommended, ~100MB)
```bash
# macOS
brew install --cask basictex
# Then restart your terminal or run:
eval "$(/usr/libexec/path_helper)"
```
- **MacTeX** (full distribution, ~4GB)
```bash
brew install --cask mactex-no-gui
```
- **wkhtmltopdf** (alternative)
```bash
brew install wkhtmltopdf
```

**Note:** Markdown format requires no dependencies. DOCX requires only Pandoc. PDF requires both Pandoc and a PDF engine.

### Install Downfolio

```bash
pnpm install
pnpm run build
Expand Down Expand Up @@ -126,16 +174,6 @@ pnpm run watch

## Testing

TBD

## CLI Commands
See [tests](./tests/)

- `downfolio init` - Initialize project
- `downfolio config` - Manage configuration
- `downfolio template` - Manage templates
- `downfolio job` - Manage job descriptions
- `downfolio generate` - Generate documents
- `downfolio validate` - Validate markdown files
- `downfolio preview` - Preview markdown files

All commands support interactive mode with Clack prompts when flags are omitted.
116 changes: 0 additions & 116 deletions TEST_PLAN.md

This file was deleted.

Binary file added images/downfolio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@
"gray-matter": "^4.0.3",
"js-yaml": "^4.1.0",
"marked": "^14.1.0",
"openai": "^4.73.1"
"openai": "^6.18.0"
},
"devDependencies": {
"@types/js-yaml": "^4.0.9",
"@types/node": "^22.10.2",
"tsx": "^4.19.2",
"typescript": "^5.7.2",
"vitest": "^1.0.0"
"vitest": "^4.0.18"
}
}
Loading