This project (maintained by a member of Haltman.io) is the web UI for the Free Mail Forwarding Service. It is a Next.js application that talks to the Mail Forwarding API (Node.js/Express) to let users request and confirm:
-
alias creation (subscribe)
-
alias removal (unsubscribe)
This UI is not standalone: it must point to a working API instance, and it must be configured with the list of domains that are authorized in the database.
Tech stack (as shipped):
-
Next.js (
next dev,next build,next start) -
React
-
TailwindCSS
-
Radix UI components
Prerequisites (mandatory)
-
A running Mail Forwarding API (already deployed and reachable)
-
Domains already present/authorized in the Base Stack database (
domaintable) -
Node.js (current LTS recommended)
-
npm (or compatible package manager)
Installation
git clone https://github.com/haltman-io/mail-forwarding-ui.git
cd mail-forwarding-ui
npm install
Configuration
To run this UI, you must have a .env.local file in the project root.
.env.local (required)
NEXT_PUBLIC_API_HOST=<API URL WITHOUT SLASH ON END>
NEXT_PUBLIC_DOMAINS=<AUTHORIZED DOMAINS IN DATABASE AS STRING, SEPARATED BY COMMA>
Example:
NEXT_PUBLIC_API_HOST=https://mail.haltman.io
NEXT_PUBLIC_DOMAINS=abin.lat,halt.ciphine.com,thc.extencil.me,the.hackerschoice.org,fwd.haltman.io,1337.meu.bingo,pwnbuffer.org
Important notes:
-
NEXT_PUBLIC_API_HOSTmust not end with/ -
NEXT_PUBLIC_DOMAINSmust contain only domains that exist (and are active) in your Base Stack database -
These variables are
NEXT_PUBLIC_*, meaning they are embedded into the frontend build and visible to users (do not put secrets here)
Running
Development
npm run dev
Production build
npm run build
npm run start
Scripts available:
-
dev→next dev -
build→next build -
start→next start -
lint→eslint
Possible problems / Important notes
-
UI loads but actions fail: most common cause is
NEXT_PUBLIC_API_HOSTwrong, unreachable, or with a trailing slash. -
Domain not selectable / blocked:
NEXT_PUBLIC_DOMAINSdoes not include the domain, or the domain is not present/active in the database. -
Mixed content / CORS issues: serve UI and API over HTTPS, and ensure the API is configured to allow the UI origin.
-
Wrong environment values in production: if you change
.env.local, you must rebuild (npm run build) for production deployments.