⚠️ Portosaur & This docs is Work In Progress!
Skip to content

Getting Started

Portosaur is a solution for building personal portfolios and digital notebooks with minimal configuration.

Prerequisites

Requirements:

  • Bun (Recommended & primarily supported) or Node.js v24.15.0+.
  • Git installed and available in your PATH.

Installation

You can install Portosaur globally with:

bash
bun i -g portosaur@latest

After this, add the bin directory to PATH and restart shell.

Initialization

You can initialize a new project using the init command.

This is the standard way to set up your site. It will guide you through configuring your providers and scaffold the project structure.

bash
# If installed globally
porto init

# Or without installation
bunx portosaur init

Non-Interactive

Useful for automation and scripting.
Providing any configuration flag will enter to non-interactive mode, defaults will be used for missing flags.

bash
# Example: with specific providers
porto init -p github -h github-pages -u soymadip -n "Shyam Roy"

# Or withought installation
bunx portosaur@latest init -p github -h github-pages -u soymadip -n "Shyam Roy"
FlagDescriptionDefault
-p, --vcs-providerGit Provider ID (none, github, gitlab, codeberg, sourcehut)github
-h, --hostingHosting Platform ID (none, github-pages, gitlab-pages, codeberg-pages, woodpecker, surge, netlify)Selected VCS Default
-u, --usernameUsername for the Git providerGit/OS User
-n, --nameFull Name for the site titleFull Name
-k, --no-installSkip automatic dependency installationfalse
-P, --project-nameDesired Project Name. Note that custom name is not recommendedvcs provider ideal name

It's not recommended to use custom name

Many(most) git hosting platforms require a specific repository name (e.g., username.github.io) to deploy to your root domain. A custom project name deploys to a subdirectory URL (e.g., username.github.io/custom-name).

Project Structure

The init command generates a project directory with the following structure:

txt
my-site/
├── [workflow file/dir]        # CI workflow for automated deployment
├── blog/                      # Blog articles and deep dives
├── notes/                     # Markdown/MDX digital notebook
├── static/                    # Assets like images, icons, and PDFs
├── config.yml                 # Primary configuration file
├── package.json               # Project dependencies and scripts
└── README.md                  # Project overview

Key Directories

  • notes/: Your digital second brain. Organize your notes using standard Markdown.
  • blog/: Long-form articles and updates.
  • static/: Global assets available at the site root.
  • config.yml: Central source of truth for site settings and content.

Spin up the Site

Start the local development server with HMR to see changes in real-time:

bash
cd <your-project-dir>
porto dev

The site will be available at http://localhost:3000.

Production Build

To generate a static version of your site ready for deployment:

bash
porto build