Skip to content

nipsysdev/site

Repository files navigation

nipsys.dev

A personal portfolio website featuring a terminal emulator interface, deployed on IPFS.

License Node pnpm

Overview

This is my personal website. The site features a novel terminal-style interface where visitors can navigate using CLI commands rather than traditional UI elements.

Live Access:

Features

  • Terminal Interface - Navigate the site using CLI commands (help, whoami, contact, status, etc.)
  • Decentralized Status - Real-time service health monitoring via Logos Delivery (previously named Waku, a P2P communication network)
  • IPFS Deployment - Hosted on IPFS with IPNS for mutable content
  • Internationalization - Available in English and French
  • Dark/Light Theme - System preference detection with manual toggle
  • Keyboard Navigation - Full keyboard support with history, autocomplete, and shortcuts

Tech Stack

Category Technology
Framework Next.js 15 (App Router, Static Export)
UI React 19, Tailwind CSS 4
Components @nipsys/lsd, @phosphor-icons/react
State Nanostores
i18n next-intl
Decentralized @waku/sdk, @helia/verified-fetch
Testing Vitest, Testing Library
Linting Biome
Git Hooks Lefthook

Getting Started

Prerequisites

  • Node.js >= 22.0.0
  • pnpm >= 9

Installation

# Clone the repository
git clone https://github.com/nipsysdev/site.git
cd site

# Initialize submodules (for resume PDFs)
git submodule update --init --recursive

# Install dependencies
pnpm install

# Start development server
pnpm dev

Open localhost:3000 to view the site.

Available Scripts

Script Description
pnpm dev Start dev server with Turbopack
pnpm build Production build (static export)
pnpm serve Serve the static output locally
pnpm test:unit Run unit tests
pnpm test:coverage Run tests with coverage report
pnpm lint Lint codebase
pnpm lint:fix Lint and auto-fix issues
pnpm format Format code
pnpm typecheck TypeScript type check
pnpm analyze Build with bundle analyzer

Terminal Commands

The site uses a terminal emulator interface. Available commands:

Command Description
welcome Display welcome message
whoami About me - bio, badges, GPG fingerprint
resume View/download resume (EN/FR)
contact Contact information and social links
status Self-hosted services health status
help List available commands
clear Clear terminal screen
build-info Build timestamp and deployment info

Keyboard Shortcuts

Key Action
Enter Execute command
Tab Autocomplete
/ Navigate command history
Ctrl+C Cancel current input

Project Structure

site/
├── src/
│   ├── app/              # Next.js App Router pages
│   │   └── [locale]/     # Internationalized routes (en, fr)
│   ├── components/       # React components
│   │   ├── terminal/     # Terminal emulator
│   │   ├── cmd-outputs/  # Command output components
│   │   └── layout/       # Layout components
│   ├── lib/
│   │   └── dpulse/       # Waku P2P status monitoring
│   ├── stores/           # Nanostores state
│   ├── hooks/            # Custom React hooks
│   ├── i18n/             # Internationalization config
│   ├── constants/        # App constants
│   └── utils/            # Utility functions
├── out/                  # Static export output
└── .github/workflows/    # CI/CD pipelines

Architecture

Static Export

The site is built as a fully static export using Next.js's output: 'export' configuration. This enables:

  • IPFS/IPNS deployment
  • No server-side dependencies
  • Fast, cacheable content delivery

dpulse - Decentralized Status Monitoring

The status command connects to the dpulse system via the Waku P2P network:

  • Real-time service health updates via filter protocol
  • Historical messages via store protocol
  • Ed25519 signature verification for authenticity
  • IPFS-hosted service icons via Helia

Deployment

The site is automatically deployed to IPFS via GitHub Actions:

  1. On push to main: CI pipeline runs lint, tests, and build
  2. Static export is published to IPNS
  3. Pinned to 4EVERLand for availability

License

GPL-3.0-or-later

About

My little corner of cyberspace

Resources

License

Stars

Watchers

Forks

Contributors

Languages