The ultimate goal for this project is release it as a personal blog starter kit for React developers like Minimal Wordpress.
I'm developping essential feature while my spare time, currenty I planning release v1 2028.
All core feature implemented completely, I'm planning distribute repo source directly as similar as Beam. Roadmap
⚛️ Production ✅ Storybook
Auto post of web page list you read that day.
Used in combination with nsx-browser-extension.
- Node.js v20.x.x
- pnpm
Install Docker Desktop
git clone https://github.com/laststance/nsx.git
cd nsx
pnpm install
cp .env.sample .env
docker-compose up -d
pnpm db:reset
pnpm validate
pnpm server:start
- in other terminal screen
pnpm start
pnpm e2e:admin
- then, you confirmed local develop environment working fine.
open sidebar press x
key
DB seeds initial user account is
name: John Doe
pass: popcoon
These are storing .env
and evaluate at build time.
Variable Name | Role | other |
---|---|---|
VITE_APP_TITLE | title | |
VITE_APP_DESCRIPTION | desc | |
VITE_API_ENDPOINT | end | |
VITE_SENTRY_DNS | sentry | |
VITE_GA_TRACKING_CODE | ga | |
ACCESS_TOKEN_SECRET | JWT | |
DATABASE_URL | Database |
I'm using Playwright for E2E testing.
Before run pnpm playwright
, you need to run pnpm build:e2e
.
- commands
pm2 start ecosystem.config.js // Start Server with production mode
pm2 restart ecosystem.config.js // Restart Server with production mode
pm2 stop 0 // Stop server
pm2 ps -a // Show all processes
- Setup Ubuntu server on Digital Ocean or Fly.io
- Update ubuntu with
apt upgrade
- see https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-22-04
cd ~ && git clone https://github.com/laststance/nsx.git
cd nsx
and install voltasource ~/.bashrc
&&volta install node
pnpm
- install docker on Ubuntu https://docs.docker.com/engine/install/ubuntu/#set-up-the-repository
- docker compose up -d
- pnpm db:migrate
- touch .env.prod
- npm i -g pm2
touch .env && echo "ACCESS_TOKEN_SECRET=$(openssl rand -base64 60 | tr -d '\n' | cut -c1-60)" >> .env
pm2 start ecosystem.config.js
- Access from browser
GitHub Repository (main branch)
│
│ Push / PR Merge
▼
GitHub Actions Workflow
│
│ 1. Checkout code
│ 2. Setup Node.js & pnpm
│ 3. Install dependencies
│ 4. Build frontend & backend
▼
Build Artifacts
│
│ Upload via SCP
▼
DigitalOcean Server
│
│ 1. Create .env from secrets
│ 2. Install production dependencies
│ 3. PM2 restart
▼
Running Application (https://nsx.malloc.tokyo/)
NSX includes several utility scripts in the scripts/
directory to help with common development and deployment tasks:
# Deploy both frontend and backend to production
./scripts/deploy
# Deploy only backend
./scripts/deploy -s
# Deploy only frontend
./scripts/deploy -f
The deploy script uses rsync to upload build artifacts to the production server.
# Create a database backup and download it to your local machine
./scripts/backup
This script connects to the production server, creates a MySQL database dump from the Docker container, and downloads it to your local machine.
# Restore a database from a backup file
./scripts/restore backup_20240101.sql
This script uploads a local backup file to the production server and restores the database from it.
# Run all validation checks at once
./scripts/validate
The validate script runs tests, linting, type checking, and build in parallel to ensure code quality.