My personal homepage providing a focused terminal-based user interface and interactive experience.
This project is a dedicated terminal homepage built with Svelte 5. It provides a pure terminal environment powered by xterm.js and a custom barebones shell, integrated into a modern web stack with authentication and authenticated messaging system.
- Web Framework: SvelteKit 5
- Scripting Language: TypeScript
- Simple Styling: Tailwind CSS v4
- Authentication: Better Auth (GitHub OAuth)
- Database: SQLite via Drizzle ORM
- Terminal: xterm.js via BattlefieldDuck/xterm-svelte
- Theme: Catppuccin Mocha color palette (matched from the Alacritty theme)
- Font: CaskaydiaCove Nerd Font
-
Clone the repository and install dependencies:
npm install
[!NOTE] Required Nerd Fonts are automatically downloaded to
static/fontsafter installation. -
Configure environment variables:
cp .env.example .env
[!NOTE] All variables defined in
.env.exampleare mandatory for the application to function correctly.
-
Start the local development server.
npm run dev
- Interactive Step: If
local.dbis not found, you will be prompted to initialize the database viadb:push.
- Interactive Step: If
These commands are required to ensure code quality before committing changes:
npm run check: Run Svelte and TypeScript diagnostic checks.npm run lint: Verify code style and linting rules.npm run format: Automatically format the codebase.
To deploy or run the application in a production-ready state:
-
Build the application:
npm run build
- Interactive Step #1: If
local.dbis not found, you will be prompted to initialize the database before building. - Interactive Step #2: After a successful build, you will be prompted to run the production server immediately.
- Interactive Step #1: If
-
Start the production server:
npm run prod
Alternatively, you can run the entire stack (including an Nginx reverse proxy) using
Docker Compose. Also note that the Webserver is running as the dedicated node user,
so file operations on the logs/ and data/ directories need to be permitted:
# Optionally rebuild:
# docker compose build
docker compose upNote
The npm run preview command is not intended to support GitHub authentication,
as the application logic specifically targets environment variables for either
development or production modes.