Free Palworld Servers
Free Palworld dedicated servers. Start with a captcha – world data is never wiped.
Every relic. Every rune. One ledger.
Translation pending
GamesGitHub @postblinkOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
A Holy Grail tracker for Project Diablo II.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗A Holy Grail challenge tracker for Project Diablo 2 — the community mod for Diablo II: Lord of Destruction.
🌐 Live at pd2grail.com
Track every unique, set item, runeword, and rune across the current season. Import directly from your characters' armory pages, run cooperative or competitive leagues with friends, get Discord notifications when a member finds something rare, and share your progress with a public profile URL.
/grail/<username> (with an opt-out toggle) and shareable league URLsSee docs/screenshots/ for a tour of the UI.
| Layer | Choice |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS |
| Database | PostgreSQL via Prisma 7 (@prisma/adapter-pg) |
| Auth | NextAuth.js v5 — Discord OAuth (primary) + Resend magic-link (fallback) |
| Resend | |
| Error monitoring | Sentry (optional) |
| Hosting (reference) | Vercel (app) + Railway (Postgres) |
| Cron | GitHub Actions (.github/workflows/discord-flush.yml) hitting /api/cron/discord-flush every 5 minutes |
No Vercel-proprietary infra is required — the code is portable to any Node 20+ host. See docs/PROJECT.md for architectural details.
git clone https://github.com/postblink/project-grail.git
cd project-grail
npm install
# Configure env vars
cp .env.example .env
# Then fill in DATABASE_URL, DISCORD_CLIENT_ID/SECRET, RESEND_API_KEY, etc.
# See .env.example for the full list with comments.
# Apply schema
npx prisma migrate deploy
# Seed the item database (PD2 wiki snapshot)
npx prisma db seed
# Run
npm run dev
Open http://localhost:3000.
Each PD2 season may add or rework items. Pull a fresh snapshot from the wiki:
npx tsx scripts/scrape-items.ts # writes prisma/seed-data/items.json
npx prisma db seed # upserts into the DB
The admin panel (/admin/items) also accepts JSON imports from the same shape.
The reference deployment is Vercel + Railway, but anything that runs Next.js and Postgres works.
Item-find notifications are batched so users with rapid finds don't spam channels. A cron must call /api/cron/discord-flush every few minutes to flush queued batches. Two options:
.github/workflows/discord-flush.yml runs every 5 minutes. Requires repo secrets APP_URL and CRON_SECRET. Free on public repos; counts against the 2,000-min/month limit on private free-tier repos.crons entry to vercel.ts. Free, but limited to 2 jobs on the Hobby plan.The full list is in .env.example. At minimum: DATABASE_URL, NEXTAUTH_URL + AUTH_URL, NEXTAUTH_SECRET, DISCORD_CLIENT_ID + DISCORD_CLIENT_SECRET, RESEND_API_KEY, EMAIL_FROM, CRON_SECRET.
scripts/reset-user-data.ts deletes all user-generated data (users, grails, grail entries, leagues, members, achievements, Discord batches) while preserving items and seasons. It exists for pre-launch resets — do not run against a production database that has real users on it.
# Run only against a dev/staging database you can afford to wipe:
npx tsx --tsconfig tsconfig.scripts.json scripts/reset-user-data.ts
The script reads DATABASE_URL from .env. Always double-check which database that variable points at before running.
docs/PROJECT.md — project conventions, architecture, domain context, code styleDESIGN.md — product spec and intended behavior (source of truth for ambiguous cases)docs/screenshots/ — UI screenshotsContributions are welcome: bug reports, feature ideas, and focused pull requests. Before opening a PR:
docs/PROJECT.md for code conventionsnpx tsc --noEmit is cleanFor larger features, open an issue first to discuss the approach.
Project Grail is free software, licensed under the GNU Affero General Public License v3.0. See LICENSE for the full text.
Copyright (C) 2026 Lucas Boyles
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation, version 3 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
details.
What AGPL means for you:
This is intentional: the goal is to keep modifications to a community grail tracker available to that community.