No description
  • CSS 42.9%
  • EJS 30.8%
  • JavaScript 22.3%
  • HTML 3.1%
  • Dockerfile 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Blade34242 45a3cddf06
All checks were successful
Node CI / lint (push) Successful in 1m29s
Refresh resume design, Node lifecycle, PDF export and SEO
2026-11-07 07:38:03 +07:00
.forgejo/workflows Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
.github/workflows Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
docs Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
images update REAME and images 2024-01-15 17:11:09 +07:00
public Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
routes Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
test Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
utils Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
views Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
.dockerignore Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
.gitignore Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
.nvmrc Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
app.js Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
compose.release.yml Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
Dockerfile Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
eslint.config.js Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
package-lock.json Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
package.json Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +07:00
README.md Refresh resume design, Node lifecycle, PDF export and SEO 2026-11-07 07:38:03 +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 A4 PDF layout with consistent typography, colours, and adaptive 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
  • SITE_URL: Public origin for canonical, social and sitemap URLs, e.g. https://resume.example.com. Set it in public/ress/mountedRess/me.json as {"SITE_URL":"https://resume.example.com"} for live updates without a restart. The environment variable is a fallback.
  • 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 26 LTS. If you use nvm:

nvm install && nvm use

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.1.0.tar.gz
cd my-resume2-v5.1.0
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.1.0 && git push origin v5.1.0
    
  • The release includes the application source and SHA-256 checksum. Docker is built only on the target server.

(back to top)


Changelog

5.1.0 - Lifecycle, design, search and print refresh

  • Node 26 LTS / Alpine 3.24, updated packages and matching local/CI runtime configuration.
  • Refined responsive light/dark design with the existing section order and JSON content.
  • Shared A4 print styles, isolated mobile-independent PDF export and complete testimonial output.
  • Canonical/social metadata, Person/ProfilePage JSON-LD, sitemap and AI-readable résumé summary.
  • Integration checks, log rotation and version checks for release tags.

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 26 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)