Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ jobs:
IPNS_NAME=$(echo "$PUBLISH_RESP" | grep -oE 'Published to [a-zA-Z0-9]+' | awk '{print $3}')
echo "IPNS Name: $IPNS_NAME"
echo "IPNS published successfully!"
echo "Site available at: https://nipsys.eth.limo"
echo "Site available at: https://xav.gwei.site"

- name: Pin to 4EVERLand
env:
Expand Down Expand Up @@ -247,4 +247,4 @@ jobs:
done

echo "⚠️ TIMEOUT: Pin did not reach 'pinned' status within 60 seconds"
exit 1
exit 1
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[submodule "external/resume"]
path = external/resume
url = git@github.com:nipsysdev/resume.git
url = https://github.com/nipsysdev/resume.git
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
# nipsys.dev
# xav.gwei.site

My personal portfolio website with a terminal-style interface. Navigate using
CLI commands instead of traditional UI.

![License](https://img.shields.io/badge/license-GPL--3.0--or--later-blue)
![Node](https://img.shields.io/badge/node-%3E%3D22.0.0-green)
![pnpm](https://img.shields.io/badge/pnpm-%3E%3D9-orange)
![pnpm](https://img.shields.io/badge/pnpm-%3E%3D10-orange)

**Live:** [nipsys.eth.limo](https://nipsys.eth.limo)
**Live:** [xav.gwei.site](https://xav.gwei.site)

## What makes it unique

- **Terminal interface** — Type commands like `whoami`, `resume`, `status`,
`contact`
- **Peer-to-peer data retrieval** — Real-time service health and recent Pixelfed
posts fetch via Logos Delivery (A censorship resistant P2P messaging network)
- **IPFS hosted** — Deployed on IPFS with IPNS, accessible via ENS
- **IPFS hosted** — Deployed on IPFS with IPNS

## Commands

Expand Down Expand Up @@ -44,7 +44,7 @@ CLI commands instead of traditional UI.

## Getting Started

**Requirements:** Node.js ≥22, pnpm ≥9
**Requirements:** Node.js ≥22, pnpm ≥10

```bash
git clone https://github.com/nipsysdev/site.git
Expand Down
10 changes: 10 additions & 0 deletions next.config.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
import { execSync } from 'node:child_process';
import type { NextConfig } from 'next';
import createNextIntlPlugin from 'next-intl/plugin';

const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
});

function getGitCommit(): string {
try {
return execSync('git rev-parse --short HEAD', { encoding: 'utf-8' }).trim();
} catch {
return 'unknown';
}
}

const nextConfig: NextConfig = {
devIndicators: false,
output: 'export',
Expand All @@ -15,6 +24,7 @@ const nextConfig: NextConfig = {
},
env: {
BUILD_TIMESTAMP: new Date().toISOString(),
BUILD_COMMIT: getGitCommit(),
IPNS_HASH:
process.env.IPNS_HASH ||
'k2k4r8ng8uzrtqb5ham8kao889m8qezu96z4w3lpinyqghum43veb6n3',
Expand Down
5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
"type": "git",
"url": "git+https://github.com/nipsysdev/site"
},
"homepage": "https://nipsys.dev/",
"homepage": "https://xav.gwei.site",
"author": "Xavier Saliniere <bonjour@xaviers.sh>",
"engines": {
"node": ">=22.0.0",
"pnpm": ">=9"
"pnpm": ">=10"
},
"scripts": {
"copy-resume": "node scripts/copy-resume.js",
Expand All @@ -38,7 +38,6 @@
"@phosphor-icons/react": "^2.1.7",
"@waku/sdk": "^0.0.36",
"dayjs": "^1.11.20",
"fast-xml-parser": "^5.8.0",
"nanostores": "^1.1.1",
"next": "^15.5.12",
"next-intl": "^4.8.3",
Expand Down
45 changes: 0 additions & 45 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 10 additions & 10 deletions src/__tests__/utils/terminal-utils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -322,48 +322,48 @@ describe('terminal-utils', () => {

it('returns full host for regular domains', () => {
vi.stubGlobal('window', {
location: { host: 'nipsys.dev:443' },
location: { host: 'xav.gwei.site:443' },
});

expect(getDisplayHost()).toBe('nipsys.dev');
expect(getDisplayHost()).toBe('xav.gwei.site');
});

it('returns host without port when no port specified', () => {
vi.stubGlobal('window', {
location: { host: 'nipsys.dev' },
location: { host: 'xav.gwei.site' },
});

expect(getDisplayHost()).toBe('nipsys.dev');
expect(getDisplayHost()).toBe('xav.gwei.site');
});

it('strips first part from IPNS hosts', () => {
vi.stubGlobal('window', {
location: {
host: 'k51qzi5uqu5dkkciu33khkzbcmxtyhn2i3v.ipns.nipsys.dev',
host: 'k51qzi5uqu5dkkciu33khkzbcmxtyhn2i3v.ipns.xav.gwei.site',
},
});

expect(getDisplayHost()).toBe('ipns.nipsys.dev');
expect(getDisplayHost()).toBe('ipns.xav.gwei.site');
});

it('strips first part from IPFS hosts', () => {
vi.stubGlobal('window', {
location: {
host: 'bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi.ipfs.nipsys.dev',
host: 'bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi.ipfs.xav.gwei.site',
},
});

expect(getDisplayHost()).toBe('ipfs.nipsys.dev');
expect(getDisplayHost()).toBe('ipfs.xav.gwei.site');
});

it('returns full host when IPNS/IPFS but no subdomain parts', () => {
vi.stubGlobal('window', {
location: {
host: 'ipns.nipsys.dev',
host: 'ipns.xav.gwei.site',
},
});

expect(getDisplayHost()).toBe('nipsys.dev');
expect(getDisplayHost()).toBe('xav.gwei.site');
});

it('handles localhost with port', () => {
Expand Down
Binary file removed src/assets/Pro-Hacked.webp
Binary file not shown.
Binary file added src/assets/me.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src/assets/nipsys.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading