No description
  • CSS 44.7%
  • EJS 39.7%
  • JavaScript 12%
  • HTML 2.3%
  • Dockerfile 1.3%
Find a file
Blade34242 ae92ab538b
All checks were successful
Node CI / lint (push) Successful in 1m2s
Create Forgejo release / package-and-release (push) Successful in 43s
fix: run Forgejo workflows on ubuntu runner
2026-07-27 17:47:29 +07:00
.forgejo/workflows fix: run Forgejo workflows on ubuntu runner 2026-07-27 17:47:29 +07:00
.github/workflows ci(docker): stop publishing sha tags; only latest on main and semver tags on releases 2025-09-06 21:56:46 +07:00
docs fix: run Forgejo workflows on ubuntu runner 2026-07-27 17:47:29 +07:00
images update REAME and images 2024-01-15 17:11:09 +07:00
public feat: add client-side PDF and Forgejo release flow 2026-07-27 17:37:24 +07:00
routes chore: add CI (Node lint) and Docker publish; PORT support and example env; basic me.json validation; ESLint setup; Docker and docs updates 2025-09-06 21:20:56 +07:00
utils Release 4.1.1: UI refresh, themes, examples, docs 2025-12-01 15:01:14 +07:00
views feat: add client-side PDF and Forgejo release flow 2026-07-27 17:37:24 +07:00
.dockerignore feat: add client-side PDF and Forgejo release flow 2026-07-27 17:37:24 +07:00
.gitignore docs: add CI badges, releases section; ignore local docker cid files 2025-09-06 22:05:29 +07:00
app.js feat: add client-side PDF and Forgejo release flow 2026-07-27 17:37:24 +07:00
compose.release.yml feat: add client-side PDF and Forgejo release flow 2026-07-27 17:37:24 +07:00
Dockerfile feat: add client-side PDF and Forgejo release flow 2026-07-27 17:37:24 +07:00
eslint.config.js feat: add client-side PDF and Forgejo release flow 2026-07-27 17:37:24 +07:00
package-lock.json fix: run Forgejo workflows on ubuntu runner 2026-07-27 17:47:29 +07:00
package.json fix: run Forgejo workflows on ubuntu runner 2026-07-27 17:47:29 +07:00
README.md fix: run Forgejo workflows on ubuntu runner 2026-07-27 17:47:29 +07:00


Logo

my-resume2

Do you want to have a resume online? You can use this project to easily mount your data with your pictures.
Explore the docs »

View Demo 1 · View Demo 2 · Report Bug · Request Feature


Table of Contents
  1. About The Project
  2. Getting Started
  3. Changelog
  4. Roadmap
  5. Contributing
  6. Contact
  7. Acknowledgments

About The Project

This is a NodeJS application that exposes a resume. I was inspired by the design of other resume projects (see Acknowledgments) and created my own version.

Highlights

  • Modern hero/timeline layout with projects grid, skill levels, and testimonial slider
  • Light/dark theme toggle (persisted) and themed cards/headings
  • JSON-driven content for links (with labels/icons), projects, skills (levels/recent), testimonials (avatars/ratings), and interests
  • Client-side PDF download that renders the currently displayed résumé; no résumé data is uploaded
  • Print-ready two-page PDF layout with consistent typography, colours, and page breaks
  • Two built-in examples selectable via example=1|2 plus Dockerized runtime
  • Bundled fresh light/dark screenshots in docs/

Demo Screenshots

Product Screenshot Product Screenshot Product Screenshot Product Screenshot Product Screenshot Product Screenshot

(back to top)

Screenshots

Light
Light example

Dark
Dark example

(back to top)


Built With

Dynamic JSON Badge Dynamic JSON Badge Dynamic JSON Badge Dynamic JSON Badge Dynamic JSON Badge

(back to top)


Getting Started

To get a local copy up and running, follow these steps.

Usage with Docker

The application is Dockerized, but no project image is published to Docker Hub. Build it locally from this repository or from a Forgejo release:

docker build -t my-resume2:local .

You can run examples from the demos using (mapped to local ports):

docker run --name HomerResume -p 8001:5555 -e example=1 -d my-resume2:local
docker run --name DevResume -p 8002:5555 -e example=2 -d my-resume2:local

To start with your own resume, follow these steps:

  1. Create a folder, copy one of the example files like me.json from <public/examples/cvExample2>, and add your image as me.jpg and background image.

  2. Run the following command and add your mount path:

docker run --name MyResume -p 8003:5555 -v <MY_MOUNT_PATH_LOCAL>:/home/node/app/public/ress/mountedRess -d my-resume2:local

Adjusting port: set -e PORT=<port> if you want the container to listen on a different internal port, and update the -p <host>:<container> mapping accordingly.

  1. Customize your icons and images as described in the instructions.

(back to top)

Usage without Docker

  1. Clone the Forgejo repository (or your own fork):

    git clone <your-forgejo-repository-url>
    
  2. Install NPM packages:

    npm install
    
  3. Start the app:

    npm start
    

    The app listens on env PORT (default 5555).

  4. Customize the me.json in <public/ress/mountedRess>, add your image as me.jpg and background as background.jpg.

Env configuration:

  • PORT: Port the app listens on (default 5555). Example: PORT=8080 npm start
  • example: Selects built-in data on first run: 1 for cvExample1, 2 for cvExample2. Example: example=2 npm start

Required fields in me.json (basic validation):

  • Strings: picture, name, header, about
  • Arrays: links, workexperiences, menus, educations, interests

Node version

This project runs on Node 20+ (tested on Node 22). If you use nvm:

nvm install 22 && nvm use 22

Releases and local Docker deployment

Forgejo-native workflows are included in .forgejo/workflows/:

  • Node CI: Installs dependencies and runs lint on pushes/PRs to main.
  • Create Forgejo release: Packages the repository and attaches a .tar.gz archive and SHA-256 checksum to pushed version tags (v*.*.*).

No Docker Hub account, image registry, or Docker Hub secret is required. Download a Forgejo release on the target server and build the Docker image locally:

tar -xzf my-resume2-v5.0.2.tar.gz
cd my-resume2-v5.0.2
docker compose -f compose.release.yml up -d --build

See docs/DEPLOYMENT.md for Forgejo and VPS setup.

Releases

  • Create a semver tag to publish a Forgejo release archive, e.g.:

    git tag v5.0.2 && git push origin v5.0.2
    
  • The release includes the application source and SHA-256 checksum. Docker is built only on the target server.

(back to top)


Changelog

5.0.2 - Client-side PDF + Forgejo release deployment

  • Added a polished, browser-only A4 PDF download; résumé data never leaves the browser.
  • Updated runtime and tooling dependencies, migrated to ESLint's current flat config, and verified a clean dependency audit.
  • Added /health, Docker health checks, safe first-run résumé seeding, and a non-root persistent-volume setup.
  • Replaced container-registry publishing with Forgejo release archives and local Docker builds on the VPS.

4.1 - UI Refresh + Content

  • Light/dark theme toggle with improved heading contrast and themed cards
  • Projects grid, skill levels, testimonial carousel, contact strip
  • Extra links (Portfolio/CV) and refreshed screenshots in docs/

4.0 - Modernize + CI/CD

  • Node 22 base image, reproducible Docker builds, non-root run
  • PORT env support; unified example env
  • Basic me.json validation with clear error messages
  • ESLint setup and Node CI workflow
  • Docker publish workflow (push latest on main, semver tags on releases)

3.5 - Major Bugfix and Logging Improvement

  • Enhanced logging with log4js

3.4 - New Features

  • Added new config enableTestimonials and showTestimonialsInMain
  • Option to display testimonials in main content or under interests

v3.3 - New Features

  • Enhanced logging with log4js

v3.2 - BugFix

v3.1 - Enhancements and Bug Fixes

  • Fixed custom icon loading in mounted resume folder
  • Optimized Docker image size and build process
  • Improved layout for mobile responsiveness
  • Updated documentation

v3.0 - Initial Release

  • Project setup and initial configuration
  • Added Docker support with sample resume examples
  • Basic resume structure with customizable me.json
  • Integrated Express, EJS, and Bootstrap for layout and styling
  • Provided example resumes (Homer and Jonathan)

(back to top)


Config Explaination

enableTestimonials:

Type: Boolean (true / false)
Description: This configuration controls whether the testimonials section is displayed. If set to true, the testimonials will be shown on the page. If set to false, the testimonials section will be hidden.

showTestimonialsInMain:

Type: Boolean (true / false)
Description: This setting controls the location of the testimonials section. When true, the testimonials will appear in the main content area (below work experience). If false, the testimonials will be displayed under the "Interests" section.

Roadmap

  • Client-side PDF export
  • Mounted log directory configuration
  • Optional selectable PDF themes

See the open issues for a full list of proposed features (and known issues).

(back to top)


Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this project better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".

Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)


Contact

Blade34242 - blade34242@gellert-professionals.com

Project Link: https://github.com/blade34242/my-resume2

(back to top)


Acknowledgments

(back to top)