Shadow is a modern React storefront for game servers using Tip4Serv. It includes a responsive catalog, product pages, cart drawer, checkout flow, account area, Discord OAuth support, theme switching, translations, and an admin page for storing the Tip4Serv API key server-side.
Live demo: https://shadow.ark-france.fr/
- React 19
- TypeScript
- Vite 7
- Tailwind CSS 3
- React Router 7
- Node.js API server
- MySQL
Supabase has been replaced by a Node/MySQL backend in server/.
The API exposes:
/api/tip4serv-proxyfor Tip4Serv catalog, store and checkout calls/api/admin/*for claiming the site, login and settings/api/discord-oauthfor Discord OAuth exchange/api/rcon-playersfor configured RCON server listing
- Install dependencies:
npm install- Create a MySQL database and import the schema:
mysql -u shadow -p shadow < database/mysql/schema.sql- Copy
.env.exampleto.env, then fill the MySQL values:
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=shadow
MYSQL_PASSWORD=change-me
MYSQL_DATABASE=shadow
ADMIN_JWT_SECRET=change-this-long-random-secret- Start the API server:
npm run dev:api- Start the frontend:
npm run dev- Open
/admin, claim the site, then save the Tip4Serv API key.
npm run dev
npm run dev:api
npm run build
npm run typecheck
npm run lint