LUTHER Documentation Live Preview Buy Now

Luther Angular 22 Portfolio Template Documentation

Luther is an Angular 22 based portfolio landing page template built with Bootstrap 5.3, SCSS and TypeScript. It comes with 6 dark and light home page designs, ideal for portfolio templates, portfolio landing pages, personal websites, Angular portfolio websites and Angular CV websites.

Every home page is assembled from reusable standalone Angular components such as hero, about, resume, skills, services, pricing, portfolio, testimonials, hire me and contact. Content like text, icons, prices and images lives in typed data files, so you can turn the demo into your own personal website without rewriting any layout code.

This guide walks you through installation, the project structure, routes, menu and section setup, theme customization, deployment and the change log. Looking for plain HTML instead? Luther is also available as a Bootstrap HTML resume template.

  • Angular 22
  • Bootstrap 5.3
  • SCSS
  • TypeScript

View Live Preview

What's included

6 home pages

Six ready-to-use portfolio landing page layouts with top navigation, sidebar and animated particle hero variations.

Light & dark themes

Every home page includes both themes with a built-in theme switcher and SCSS color variables.

Complete sections

Hero, about, resume, skills, services, pricing, portfolio, testimonials, hire me and contact.

Typed content files

Edit text, icons, prices and images from simple TypeScript data files instead of component templates.

Responsive layout

Built on the Bootstrap 5.3 grid, so every page works on phones, tablets and desktops.

Modern Angular

Standalone components, no NgModules, and a fast Vite-based build with Vitest for unit tests.

Template at a glance

FrameworkAngular 22 (standalone components)
UI libraryBootstrap 5.3 and ng-bootstrap
StylingSCSS with light and dark theme maps
LanguageTypeScript
Build toolAngular CLI with @angular/build
Unit testingVitest
IconsUnicons
FontsPoppins and Great Vibes (Google Fonts)
Home pages6 (routes /index to /index6)
HTML versionAvailable as a separate Bootstrap template

Quick start

Already have Node.js and Angular CLI installed? Run these commands inside the template folder, then open http://localhost:4200/.

npm install
npm start

New to Angular? Follow the full requirements and installation steps below.

How this documentation is organized

  • Getting started: requirements, installation and the project structure.
  • Building your site: home pages and routes, menu and sections, and customization.
  • Design and launch: light and dark theme, dependencies, build and deploy.
  • Help: troubleshooting, FAQ, change log, credits and support.

Who this guide is for

Developers, designers, freelancers, photographers, students and anyone who wants to launch an Angular personal website, portfolio landing page or CV website. Basic knowledge of Angular, HTML and SCSS is helpful, but you can personalize most content without writing code.

Requirements

Make sure your machine has the tools below before you set up the Luther Angular portfolio template. Angular 22 needs a recent Node.js release and npm.

  • Node.js: a version supported by Angular 22 (^22.22.3, ^24.15.0 or >=26). Download from nodejs.org.
  • npm: version 8 or newer (included with Node.js).
  • Angular CLI 22.
  • A code editor such as VS Code.

Installation

Get the Luther Angular 22 template running locally in four steps: install the CLI, open the folder, install dependencies and start the dev server.

1. Install Angular CLI

npm install -g @angular/cli

2. Open the template folder

cd bob-portfolio-angular-22

3. Install dependencies

npm install

4. Start the development server

npm start

Open http://localhost:4200/ in your browser. The app reloads automatically whenever you change a source file.

Tip: keep your own changes in the data files and a custom SCSS file so future template updates are easy to merge.

Project Structure

Luther uses Angular standalone components, so there are no NgModules to manage. Here is how the folders are organized and where to find each part of the template.

bob-portfolio-angular-22/
├── public/                    # favicon and static files
├── src/
│   ├── index.html
│   ├── main.ts
│   ├── styles.scss
│   ├── assets/
│   │   ├── images/            # profile, portfolio and author images
│   │   └── scss/              # variables, themes, sections, plugins
│   └── app/
│       ├── app.ts / app.html  # root component
│       ├── app.config.ts      # providers (router, http, animations)
│       ├── app.routes.ts      # index … index6 routes
│       ├── core/layout/       # header, header2, sidebar, footer, preloader, scrolltop, settingbox
│       ├── pages/             # index, index2 … index6 home pages
│       └── shared/
│           ├── components/    # abouts, contacts, homes, portfolios, pricings,
│           │                  # resumes, services, skills, testimonials …
│           ├── directives/    # counter, parallax, scrollspy, skills
│           └── services/      # navlink, settingbox (theme)
├── angular.json
└── package.json

Home Pages & Routes

Luther ships with six home page designs, each registered as its own route. Pick one as your default or keep several to show different layouts.

Each home page is a standalone component registered in src/app/app.routes.ts. The root path redirects to /index.

RoutePage componentLayout
/indexIndexComponentTop navigation
/index2Index2ComponentSidebar navigation
/index3Index3ComponentTop navigation
/index4Index4ComponentTop navigation
/index5Index5ComponentTop navigation + scroll to top
/index6Index6ComponentSidebar + particle hero

To make a different home page your default, change the redirectTo value of the empty path in app.routes.ts.

Customization

Change text, images, icons, fonts and prices without touching component templates. Most content lives in typed data files.

Edit content from data files

Text, icons, prices and images come from typed data.ts files, so you rarely need to touch a template.

SectionFile
Aboutsrc/app/shared/components/abouts/data.ts
Resume & skillssrc/app/shared/components/resumes/data.ts
Servicessrc/app/shared/components/services/data.ts
Pricingsrc/app/shared/components/pricings/data.ts
Portfoliosrc/app/shared/components/portfolios/data.ts
Testimonialssrc/app/shared/components/testimonials/data.ts
Contactsrc/app/shared/components/contacts/data.ts

Replace images

Put your own photos in src/assets/images/ and update the file names in the matching data file.

Fonts and icons

Fonts (Poppins and Great Vibes) are imported in src/assets/scss/fonts/_fonts.scss. Icons come from Unicons, used like <i class="uil uil-camera"></i>.

Light & Dark Theme

Every home page supports light and dark mode out of the box. Rebrand the whole template by changing a few SCSS color variables.

Every home page supports dark and light mode through the theme switcher (the settingbox component) and the SettingBoxService. Both themes are included on every page, so visitors can switch at any time.

Theme colors live in src/assets/scss/_variables.scss:

$primary: #02E4C0;        // dark theme accent
$light-primary: #fa292a;  // light theme accent

Change these values (and the matching entries in the dark and light theme maps in the same file) to rebrand the whole template.

Dependencies

These packages power Luther. Run npm install and all of them are installed for you.

Packages

  • @angular/animations
  • @angular/common
  • @angular/compiler
  • @angular/core
  • @angular/forms
  • @angular/localize
  • @angular/platform-browser
  • @angular/router
  • @iconscout/unicons
  • @ng-bootstrap/ng-bootstrap
  • aos
  • bootstrap
  • jarallax
  • ng-particles
  • ngx-owl-carousel-o
  • ngx-page-scroll
  • rxjs
  • tslib
  • tsparticles
  • tsparticles-engine
  • typed.js

Dev packages

  • @angular/build
  • @angular/cli
  • @angular/compiler-cli
  • @types/aos
  • jsdom
  • prettier
  • typescript
  • vitest

Known minor vulnerabilities

Last checked with npm audit on October 01, 2026. One moderate-severity advisory is reported, and it comes from a nested package, not from Luther's own code.

  • uuid < 11.1.1 (moderate, GHSA-w5hq-g745-h8pq): missing buffer bounds check in v3/v5/v6 when a buf argument is passed. It is installed as a dependency of @iconscout/unicons (uuid 3.4.0). Luther never calls uuid, so the template is not affected. Re-run npm audit after updating @iconscout/unicons to check whether a newer release clears it.

Build & Deploy

Turn your Angular portfolio into optimized static files and publish them to any hosting provider.

Create an optimized production build:

npm run build

The output is written to the dist/ folder. Upload its contents to any static host. Because the template uses Angular routing, configure your server to serve index.html for unknown paths.

Hosting options

Any static host works. Popular choices:

  • Netlify
  • Vercel
  • Firebase Hosting
  • GitHub Pages
  • Cloudflare Pages
  • Nginx
  • Apache

Server rewrite rule

Since routes such as /index2 are handled by Angular, send unknown paths to index.html. Example for Nginx:

location / {
  try_files $uri $uri/ /index.html;
}

Testing

Run unit tests with Vitest:

npm test

Troubleshooting

Quick fixes for the most common installation, build and deployment problems.

npm install fails

Check your Node.js version against the requirements above. Delete node_modules and package-lock.json only if you must, then run npm install again.

Port 4200 is already in use

npm start -- --port 4300

Page shows 404 after refresh on the live site

Add the rewrite rule shown in the Build & Deploy section so every path serves index.html.

Changes to SCSS variables do not appear

Stop and restart npm start, then hard-refresh the browser to clear cached styles.

Images are not showing

Confirm the file exists in src/assets/images/ and that the name in the data file matches exactly, including the extension and letter case.

FAQ

Short answers to the questions we hear most about the Luther Angular portfolio template.

Which Node.js version does the Luther Angular template need?

Luther uses Angular 22, which requires Node.js ^22.22.3, ^24.15.0 or >=26 with npm 8 or newer.

How do I change the theme colors in Luther?

Edit the dark and light color variables in src/assets/scss/_variables.scss, then rebuild. Bootstrap 5.3 theme colors are mapped from these variables.

How do I edit portfolio, services and pricing content?

Each section reads its content from a typed data.ts file inside src/app/shared/components, so you can change text, icons, prices and images without touching templates.

Is the Luther Angular template available as plain HTML?

Yes. See the Luther Bootstrap HTML resume template.

Can I remove the home pages I don't need?

Yes. Delete the route from app.routes.ts and remove the unused page folder from src/app/pages/.

Does the template support dark and light mode?

Yes. Every home page includes both themes and a built-in switcher.

Can I use Luther for a client project?

Yes, according to the license you purchased. Check your license terms for usage limits.

How do I update to a newer version?

Review the change log, then copy the updated files into your project. Keeping your content in the data files makes merging much easier.

Change Log

Release notes for the Luther Angular portfolio template.

  • Change to new Dart SaaS using @use & @forward
  • Added pre loader
  • Removed @imports from SCSS
  • NG Bootstrap 21, Bootstrap 5.3 and Angular 22
  • UI Bug Fixes

Credits

Luther is built on open-source libraries and free resources. Thanks to their authors.

  • Angular
  • Bootstrap
  • ng-bootstrap
  • Unicons
  • AOS
  • Typed.js
  • Owl Carousel
  • tsParticles
  • Jarallax
  • Poppins (Google Fonts)
  • Great Vibes (Google Fonts)

Demo images are for preview purposes only. Replace them with your own before publishing.

Support

Need help with the Luther Angular portfolio template? Start here before you get in touch.

Need help with the Luther Angular portfolio template? Check the troubleshooting and FAQ sections first. Contact LettstartDesign through the support link on your purchase page, and include your template version and a short description of the issue.