8000 GitHub - laststance/nsx: Auto post of web page list you read that day.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
/ nsx Public

Auto post of web page list you read that day.

License

Notifications You must be signed in to change notification settings

laststance/nsx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Typecheck Test Lint Chromatic Playwright Admin Tests Playwright Selfhost Tests Playwright Visitor Tests

Project Status: currently under development and scheduled for release in release 2028.

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

NSX

⚛️ ProductionStorybook

Auto post of web page list you read that day.

Used in combination with nsx-browser-extension.

Prerequisites

  • Node.js v20.x.x
  • pnpm

Getting start local development

  1. git clone https://github.com/laststance/nsx.git
  2. cd nsx
  3. pnpm install
  4. cp .env.sample .env
  5. docker-compose up -d
  6. pnpm db:reset
  7. pnpm validate
  8. pnpm server:start
  9. in other terminal screen pnpm start
  10. pnpm e2e:admin
  11. then, you confirmed local develop environment working fine.

open sidebar press x key DB seeds initial user account is
name: John Doe
pass: popcoon

Enviroment Variables

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

Playwright

I'm using Playwright for E2E testing.
Before run pnpm playwright, you need to run pnpm build:e2e.

Production Server

  • 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 Procution Server

  1. Setup Ubuntu server on Digital Ocean or Fly.io
  2. Update ubuntu with apt upgrade
  3. see https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-22-04
  4. cd ~ && git clone https://github.com/laststance/nsx.git
  5. cd nsx and install volta
  6. source ~/.bashrc && volta install node
  7. pnpm
  8. install docker on Ubuntu https://docs.docker.com/engine/install/ubuntu/#set-up-the-repository
  9. docker compose up -d
  10. pnpm db:migrate
  11. touch .env.prod
  12. npm i -g pm2
  13. touch .env && echo "ACCESS_TOKEN_SECRET=$(openssl rand -base64 60 | tr -d '\n' | cut -c1-60)" >> .env
  14. pm2 start ecosystem.config.js
  15. Access from browser

Deploy Flow

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/)

Utility Scripts

NSX includes several utility scripts in the scripts/ directory to help with common development and deployment tasks:

Deploy Script

# 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.

Database Backup

# 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.

Database Restore

# 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.

Code Validation

# Run all validation checks at once
./scripts/validate

The validate script runs tests, linting, type checking, and build in parallel to ensure code quality.

0